<?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[To Data & Beyond: Building a Production-Ready Agentic Chatbot Course [Ongoing]]]></title><description><![CDATA[A production-oriented course repository that walks through building a multi-agent chatbot from scratch. ]]></description><link>https://todatabeyond.substack.com/s/building-a-production-ready-agentic</link><image><url>https://substackcdn.com/image/fetch/$s_!BjCx!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe25b560-db85-45fd-9925-5e22760ef64c_500x500.png</url><title>To Data &amp; Beyond: Building a Production-Ready Agentic Chatbot Course [Ongoing]</title><link>https://todatabeyond.substack.com/s/building-a-production-ready-agentic</link></image><generator>Substack</generator><lastBuildDate>Mon, 01 Jun 2026 20:10:47 GMT</lastBuildDate><atom:link href="https://todatabeyond.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Youssef Hosni]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[ToData&Beyond@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[ToData&Beyond@substack.com]]></itunes:email><itunes:name><![CDATA[Youssef Hosni]]></itunes:name></itunes:owner><itunes:author><![CDATA[Youssef Hosni]]></itunes:author><googleplay:owner><![CDATA[ToData&Beyond@substack.com]]></googleplay:owner><googleplay:email><![CDATA[ToData&Beyond@substack.com]]></googleplay:email><googleplay:author><![CDATA[Youssef Hosni]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Building a Production-Ready Agentic Chatbot Course [3/30]: Designing Production-Ready RAG Pipeline]]></title><description><![CDATA[In this part of the course, we focus on designing a production-ready RAG pipeline that can serve as the core intelligence of a BIM conversational agent.]]></description><link>https://todatabeyond.substack.com/p/building-a-production-ready-agentic-5d5</link><guid isPermaLink="false">https://todatabeyond.substack.com/p/building-a-production-ready-agentic-5d5</guid><dc:creator><![CDATA[Youssef Hosni]]></dc:creator><pubDate>Tue, 10 Feb 2026 23:34:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cTJc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf228c6-f35d-41d8-9bba-0e11764783c5_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://todatabeyond.substack.com/subscribe?coupon=28b2610c&amp;utm_content=187438995&quot;,&quot;text&quot;:&quot;Get 30% off forever&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://todatabeyond.substack.com/subscribe?coupon=28b2610c&amp;utm_content=187438995"><span>Get 30% off forever</span></a></p><p>In this part of the course, we focus on designing a <strong>production-ready RAG pipeline</strong> that can serve as the core intelligence of a BIM conversational agent. This is not a toy setup and not a notebook demo. The goal is to design a system that can handle real project data, scale across multiple projects, and answer questions grounded in both standards and actual building models.</p><p>We start with RAG intentionally. Before worrying about APIs, authentication, or user interfaces, we need to make sure the system can reliably retrieve the right information. If retrieval fails, everything downstream fails with it. By isolating the RAG pipeline early, we can experiment, measure quality, and iterate quickly without the overhead of a full backend or frontend.</p><p>Throughout this article, we break down:</p><ul><li><p>What a production RAG pipeline actually looks like</p></li><li><p>Why simple vector search is not enough</p></li><li><p>How hybrid search, reranking, and context management fit together</p></li><li><p>How do different types of BIM knowledge require different processing strategies</p></li></ul><p>We also introduce the three core knowledge sources our BIM agent must reason over: IFC standard documentation, project-specific user documents, and IFC model files themselves. Each one behaves differently, and treating them as a single data source is one of the most common mistakes in real-world systems.</p><p>By the end of this part, you should have a clear mental model of how the RAG pipeline works, why it&#8217;s structured the way it is, and how it fits into a larger production system. In the next sections, we&#8217;ll move from concepts to implementation and start building the ingestion and processing layers step by step.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My 8 Books With 60% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My 8 Books With 60% Off</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cTJc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf228c6-f35d-41d8-9bba-0e11764783c5_1200x630.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cTJc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf228c6-f35d-41d8-9bba-0e11764783c5_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!cTJc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf228c6-f35d-41d8-9bba-0e11764783c5_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!cTJc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf228c6-f35d-41d8-9bba-0e11764783c5_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!cTJc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf228c6-f35d-41d8-9bba-0e11764783c5_1200x630.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cTJc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf228c6-f35d-41d8-9bba-0e11764783c5_1200x630.png" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2cf228c6-f35d-41d8-9bba-0e11764783c5_1200x630.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:101817,&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://todatabeyond.substack.com/i/187438995?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf228c6-f35d-41d8-9bba-0e11764783c5_1200x630.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_!cTJc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf228c6-f35d-41d8-9bba-0e11764783c5_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!cTJc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf228c6-f35d-41d8-9bba-0e11764783c5_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!cTJc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf228c6-f35d-41d8-9bba-0e11764783c5_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!cTJc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf228c6-f35d-41d8-9bba-0e11764783c5_1200x630.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is the third part of the <strong>Building a Production-Ready Agentic Chatbot Course</strong>. You can read the previous issues from here:</p><ul><li><p><strong><a href="https://open.substack.com/pub/youssefh/p/building-a-production-ready-agentic?utm_campaign=post-expanded-share&amp;utm_medium=web">Part 1: Introduction &amp; Course Outline</a></strong></p></li><li><p><em><a href="https://open.substack.com/pub/todatabeyond/p/building-a-production-ready-agentic-a53?utm_campaign=post-expanded-share&amp;utm_medium=web">Part 2: System Architecture &amp; Environment Setup</a></em></p></li><li><p>Part 3: Designing Production-Ready RAG Pipeline [You are here!]</p></li></ul><p>All the codes and data used in this course can be found in the course <strong><a href="https://github.com/youssefHosni/Building-a-Production-Ready-Agentic-Chatbot-Course">GitHub Repo</a></strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://todatabeyond.substack.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">To Data &amp; Beyond is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;8ba67dad-b372-46f8-a766-68229cf65e18&quot;,&quot;caption&quot;:&quot;I have created a bundle for my books and roadmaps, so you can buy everything with just one button and for 40% less than the original price. The bundle features 8 eBooks, including:&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Get All My 8 Books, One Button Away With 60% Off&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:108723546,&quot;name&quot;:&quot;Youssef Hosni&quot;,&quot;bio&quot;:&quot;AI Engineer/ Applied Scientist @ Greenstep | PhD &amp; Generative AI Researcher @ Aalto University | Founder @ To Data &amp; Beyond&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9beed7ac-2d99-4bb7-80bc-9765edb4c6a6_1133x1178.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:100}],&quot;post_date&quot;:&quot;2025-06-17T20:07:19.404Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!wXne!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F951ce84a-3a3e-4256-a398-f0f0cb90f5b8_1280x720.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://todatabeyond.substack.com/p/everything-ive-written-one-button&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:166178756,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:13,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1782281,&quot;publication_name&quot;:&quot;To Data &amp; Beyond&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!BjCx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe25b560-db85-45fd-9925-5e22760ef64c_500x500.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>Why Start With RAG?</h2><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://todatabeyond.substack.com/subscribe?coupon=28b2610c&amp;utm_content=187438995&quot;,&quot;text&quot;:&quot;Get 30% off forever&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://todatabeyond.substack.com/subscribe?coupon=28b2610c&amp;utm_content=187438995"><span>Get 30% off forever</span></a></p><p>You might be wondering why we&#8217;re building the RAG pipeline before the backend infrastructure or the frontend interface. There are good reasons for this approach.</p><p>First, the RAG pipeline is the core intelligence of the system. Everything else wraps around it. If the retrieval doesn&#8217;t work well, no amount of beautiful UI or robust backend architecture will make the system useful. Starting here lets us validate the most critical part first. We can test retrieval quality, experiment with different chunking strategies, and tune the system with real documents before we commit to specific API designs or user interfaces.</p><p>Second, the RAG pipeline can be developed and tested in isolation. We don&#8217;t need authentication, user management, or a frontend to validate that our document processing works. We can write Python scripts, run them locally, inspect the results, and iterate quickly. This tight feedback loop is valuable when you&#8217;re tuning a complex pipeline.</p><p>Third, understanding how the RAG pipeline works will inform our backend and frontend design decisions. Once we know what information the RAG system needs (project IDs, document metadata, conversation history), we can design database schemas and APIs that support it naturally. Once we know what the pipeline returns (retrieved chunks, confidence scores, source citations), we can design UI components that display this information effectively.</p><p>The alternative approach, building backend and frontend first and then trying to retrofit the AI logic later, usually results in awkward APIs, inefficient data flows, and systems that are hard to optimize. We&#8217;ve seen this pattern fail too many times, so we&#8217;re doing it right from the start.</p><div><hr></div><h2>Understanding RAG: The Complete Pipeline</h2><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://todatabeyond.substack.com/subscribe?coupon=28b2610c&amp;utm_content=187438995&quot;,&quot;text&quot;:&quot;Get 30% off forever&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://todatabeyond.substack.com/subscribe?coupon=28b2610c&amp;utm_content=187438995"><span>Get 30% off forever</span></a></p><p>Before we dive into code, let&#8217;s understand what a production RAG pipeline actually does. RAG stands for Retrieval Augmented Generation, and it works by enhancing an LLM&#8217;s capabilities with relevant information retrieved from a knowledge base.</p><p>RAG is often introduced as a simple idea: retrieve relevant documents and pass them to a language model. That description is technically correct&#8212;but very incomplete. In production, a RAG system is a multi-stage pipeline with several moving parts, each one affecting accuracy, latency, and reliability.</p><p>This section walks through the <strong>full RAG pipeline as it&#8217;s built in real applications</strong>, from ingestion to generation, and highlights advanced techniques such as hybrid search, reranking, and context optimization.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qiCh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffc37b6-88e8-493c-bfc0-9c31cb0be30c_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qiCh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffc37b6-88e8-493c-bfc0-9c31cb0be30c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!qiCh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffc37b6-88e8-493c-bfc0-9c31cb0be30c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!qiCh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffc37b6-88e8-493c-bfc0-9c31cb0be30c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!qiCh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffc37b6-88e8-493c-bfc0-9c31cb0be30c_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qiCh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffc37b6-88e8-493c-bfc0-9c31cb0be30c_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/affc37b6-88e8-493c-bfc0-9c31cb0be30c_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;:703297,&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://todatabeyond.substack.com/i/187438995?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffc37b6-88e8-493c-bfc0-9c31cb0be30c_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_!qiCh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffc37b6-88e8-493c-bfc0-9c31cb0be30c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!qiCh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffc37b6-88e8-493c-bfc0-9c31cb0be30c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!qiCh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffc37b6-88e8-493c-bfc0-9c31cb0be30c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!qiCh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffc37b6-88e8-493c-bfc0-9c31cb0be30c_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><h3>Step 1: Data Ingestion and Preparation</h3><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My 8 Books With 60% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My 8 Books With 60% Off</span></a></p><p>Everything starts with the data. In production, documents are rarely clean PDFs or well-structured Markdown files. You&#8217;re usually dealing with a mix of:</p><ul><li><p>PDFs, Word files, and slides</p></li><li><p>Web pages and internal wikis</p></li><li><p>Logs, tickets, or database records</p></li></ul><p>The ingestion step typically includes:</p><ul><li><p><strong>Parsing and normalization</strong> (text extraction, encoding fixes)</p></li><li><p><strong>Metadata enrichment</strong> (source, timestamp, author, access level)</p></li><li><p><strong>Deduplication</strong> to avoid repeated content poisoning of retrieval results</p></li></ul><p>Metadata is especially important in production. It allows you to filter retrieval results later (for example, by user role or document freshness) instead of relying on embeddings alone.</p><h3>Step2: Chunking with Retrieval in Mind</h3><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://todatabeyond.substack.com/subscribe?coupon=28b2610c&amp;utm_content=187438995&quot;,&quot;text&quot;:&quot;Get 30% off forever&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://todatabeyond.substack.com/subscribe?coupon=28b2610c&amp;utm_content=187438995"><span>Get 30% off forever</span></a></p><p>Chunking is not just about splitting text into fixed sizes. Poor chunking leads to poor retrieval, no matter how good your embeddings are.</p><p>Production-grade chunking often involves:</p><ul><li><p><strong>Semantic chunking</strong> (splitting by meaning rather than character count)</p></li><li><p><strong>Overlapping windows</strong> to preserve context</p></li><li><p><strong>Structure-aware splitting</strong> (headings, tables, code blocks)</p></li></ul><p>The goal is to create chunks that are:</p><ul><li><p>Large enough to be meaningful</p></li><li><p>Small enough to be retrieved precisely</p></li><li><p>Self-contained when read by the model</p></li></ul><p>This step directly affects recall and precision downstream.</p><h3>Step 3: Indexing and Vector Storage</h3><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My 8 Books With 60% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My 8 Books With 60% Off</span></a></p><p>Once chunks are ready, they are embedded and stored in a vector database. At this stage, you typically index:</p><ul><li><p>The embedding vector</p></li><li><p>Raw text</p></li><li><p>Metadata fields</p></li></ul><p>In production systems, indexing is often <strong>incremental</strong>, not batch-only. New documents arrive continuously, and re-embedding everything is usually too expensive.</p><p>This is also where you decide how retrieval will work:</p><ul><li><p>Approximate nearest neighbor (ANN) indexes for speed</p></li><li><p>Separate indexes per domain or tenant</p></li><li><p>Time-based or namespace-based partitioning</p></li></ul><h3>Step 4: Query Understanding and Transformation</h3><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://todatabeyond.substack.com/subscribe?coupon=28b2610c&amp;utm_content=187438995&quot;,&quot;text&quot;:&quot;Get 30% off forever&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://todatabeyond.substack.com/subscribe?coupon=28b2610c&amp;utm_content=187438995"><span>Get 30% off forever</span></a></p><p>User queries in real applications are messy. They may be:</p><ul><li><p>Too short</p></li><li><p>Ambiguous</p></li><li><p>Poorly phrased</p></li><li><p>Multi-intent</p></li></ul><p>Before retrieval, production systems often apply <strong>query transformations</strong>, such as:</p><ul><li><p>Query rewriting using an LLM</p></li><li><p>Expanding acronyms and synonyms</p></li><li><p>Generating multiple query variants</p></li></ul><p>This step improves recall by aligning user language with how documents are written, without changing the original user intent.</p><h3>Step 5: Hybrid Search: Dense + Sparse Retrieval</h3><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My 8 Books With 60% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My 8 Books With 60% Off</span></a></p><p>Pure vector search is rarely enough in production.</p><p>Hybrid search combines:</p><ul><li><p><strong>Dense retrieval</strong> (embeddings, semantic similarity)</p></li><li><p><strong>Sparse retrieval</strong> (BM25, keyword matching)</p></li></ul><p>Why this matters:</p><ul><li><p>Dense search is good at meaning</p></li><li><p>Sparse search is good at exact terms, IDs, and rare keywords</p></li></ul><p>In practice, hybrid search helps with:</p><ul><li><p>Technical terms</p></li><li><p>Error codes</p></li><li><p>Names, versions, and identifiers</p></li></ul><p>Results from both retrieval methods are usually merged using weighted scores or rank fusion techniques.</p><h3>Step 6: Reranking for Precision</h3><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://todatabeyond.substack.com/subscribe?coupon=28b2610c&amp;utm_content=187438995&quot;,&quot;text&quot;:&quot;Get 30% off forever&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://todatabeyond.substack.com/subscribe?coupon=28b2610c&amp;utm_content=187438995"><span>Get 30% off forever</span></a></p>
      <p>
          <a href="https://todatabeyond.substack.com/p/building-a-production-ready-agentic-5d5">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Building a Production-Ready Agentic Chatbot Course [2/30]: System Architecture & Environment Setup ]]></title><description><![CDATA[Most tutorials jump straight into coding an AI agent.]]></description><link>https://todatabeyond.substack.com/p/building-a-production-ready-agentic-a53</link><guid isPermaLink="false">https://todatabeyond.substack.com/p/building-a-production-ready-agentic-a53</guid><dc:creator><![CDATA[Youssef Hosni]]></dc:creator><pubDate>Mon, 26 Jan 2026 01:16:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Bg4Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0f6abd-5b55-4831-807a-3544c3f64257_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481&quot;,&quot;text&quot;:&quot;Get 50% off for 1 year&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481"><span>Get 50% off for 1 year</span></a></p><p>Most tutorials jump straight into coding an AI agent. They show you how to wire up an LLM to a prompt, maybe add a vector database, and call it a day. But when you try to turn that proof of concept into something real&#8212;something you can deploy, maintain, and scale&#8212;you realize that the agent logic is only about 20% of the work.</p><p>The other 80% is everything around it: how data flows through the system, how users authenticate, how errors are handled, how the frontend communicates with the backend, and how the whole thing gets deployed. These aren&#8217;t afterthoughts. They&#8217;re core architectural decisions that, if made poorly early on, will haunt you later.</p><p>In this tutorial, the second of the <strong>Building a Production-Ready Agentic Chatbot Course</strong>, we&#8217;re going to design the entire system before writing a single line of agent code. We&#8217;ll understand the problem space, break down the architecture into components, choose our technology stack, and set up a development environment that mirrors production as closely as possible.</p><p>By the end, you&#8217;ll have a clear mental model of what we&#8217;re building, why we&#8217;re building it this way, and a working development environment ready to start coding.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Bg4Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0f6abd-5b55-4831-807a-3544c3f64257_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Bg4Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0f6abd-5b55-4831-807a-3544c3f64257_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Bg4Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0f6abd-5b55-4831-807a-3544c3f64257_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Bg4Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0f6abd-5b55-4831-807a-3544c3f64257_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Bg4Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0f6abd-5b55-4831-807a-3544c3f64257_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Bg4Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0f6abd-5b55-4831-807a-3544c3f64257_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da0f6abd-5b55-4831-807a-3544c3f64257_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;:954982,&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://youssefh.substack.com/i/185748481?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0f6abd-5b55-4831-807a-3544c3f64257_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_!Bg4Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0f6abd-5b55-4831-807a-3544c3f64257_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Bg4Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0f6abd-5b55-4831-807a-3544c3f64257_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Bg4Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0f6abd-5b55-4831-807a-3544c3f64257_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Bg4Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0f6abd-5b55-4831-807a-3544c3f64257_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 class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My 8 Books With 60% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My 8 Books With 60% Off</span></a></p><h3>Table of Contents:</h3><ol><li><p><strong>BIM and IFC Fundamentals</strong> </p><ol><li><p>What is BIM?</p></li><li><p>What are IFC Files?</p></li><li><p>Why is This Hard to Work With?</p></li><li><p>Natural Language Access to BIM Data</p></li></ol></li><li><p><strong>Understanding the Problem Space</strong></p><ol><li><p>What Success Looks Like for this Project?</p></li></ol></li><li><p><strong>System Architecture Design</strong> </p><ol><li><p>High-Level Architecture</p><ol><li><p>Frontend (React + TypeScript)</p></li><li><p>Backend API (FastAPI)</p></li><li><p>AI Agent Engine (LangChain/LangGraph)</p></li><li><p>Database (PostgreSQL with pgvector)</p></li><li><p>External Services</p></li></ol></li><li><p>Data Flow: How a Query Works</p></li><li><p>Why This Architecture?</p></li></ol></li><li><p><strong>Technology Stack</strong> </p><ol><li><p>AI &amp; Agent Layer</p></li><li><p>Backend</p></li><li><p>Frontend</p></li><li><p>DevOps &amp; Infrastructure</p></li></ol></li><li><p><strong>Development Environment Setup</strong> </p><ol><li><p>Step 1: Install Git</p></li><li><p>Step 2: Install Docker</p></li><li><p>Step 3: Install Python 3.11+</p></li><li><p>Step 4: Install Node.js and npm</p></li><li><p>Step 5: Choose Your IDE</p></li><li><p>Step 6: Clone the Course Repository</p></li><li><p>Step 7: Create Necessary Accounts</p><ol><li><p>OpenRouter Account</p></li><li><p>Azure Account (for Blob Storage)</p></li><li><p>GitHub Account</p></li></ol></li><li><p>Step 8: Set Up PostgreSQL Locally (with Docker)</p></li><li><p>Step 9: Verify Your Setup</p></li><li><p>Step 10: Set up Project Structure</p><ol><li><p>Why This Structure?</p></li><li><p>Creating the Initial Structure</p></li></ol></li><li><p>Step 11: Push the changes</p></li></ol></li><li><p><strong>What&#8217;s Next?</strong></p></li></ol><p>This is the second issue of the Building a Production-Ready Agentic Chatbot Course. You can read the previous issues from here: </p><ul><li><p><strong><a href="https://open.substack.com/pub/youssefh/p/building-a-production-ready-agentic?utm_campaign=post-expanded-share&amp;utm_medium=web">Part 1: Introduction &amp; Course Outline</a></strong></p></li><li><p><em><strong>Part 2: System Architecture &amp; Environment Setup [You are here!]</strong></em></p></li></ul><p>All the codes and data used in this course can be found in the course <strong><a href="https://github.com/youssefHosni/Building-a-Production-Ready-Agentic-Chatbot-Course">GitHub Repo</a></strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My 8 Books With 60% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My 8 Books With 60% Off</span></a></p><div><hr></div><h1><strong>1.</strong> BIM and IFC Fundamentals </h1><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481&quot;,&quot;text&quot;:&quot;Get 50% off for 1 year&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481"><span>Get 50% off for 1 year</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!n9-6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00681c29-678e-469a-a5c2-1d07ce290beb_3072x792.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n9-6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00681c29-678e-469a-a5c2-1d07ce290beb_3072x792.png 424w, https://substackcdn.com/image/fetch/$s_!n9-6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00681c29-678e-469a-a5c2-1d07ce290beb_3072x792.png 848w, https://substackcdn.com/image/fetch/$s_!n9-6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00681c29-678e-469a-a5c2-1d07ce290beb_3072x792.png 1272w, https://substackcdn.com/image/fetch/$s_!n9-6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00681c29-678e-469a-a5c2-1d07ce290beb_3072x792.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!n9-6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00681c29-678e-469a-a5c2-1d07ce290beb_3072x792.png" width="1456" height="375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00681c29-678e-469a-a5c2-1d07ce290beb_3072x792.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:375,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:364453,&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://youssefh.substack.com/i/185748481?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00681c29-678e-469a-a5c2-1d07ce290beb_3072x792.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_!n9-6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00681c29-678e-469a-a5c2-1d07ce290beb_3072x792.png 424w, https://substackcdn.com/image/fetch/$s_!n9-6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00681c29-678e-469a-a5c2-1d07ce290beb_3072x792.png 848w, https://substackcdn.com/image/fetch/$s_!n9-6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00681c29-678e-469a-a5c2-1d07ce290beb_3072x792.png 1272w, https://substackcdn.com/image/fetch/$s_!n9-6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00681c29-678e-469a-a5c2-1d07ce290beb_3072x792.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Before we design the system, we need to understand what we&#8217;re working with. If you&#8217;ve never encountered BIM or IFC files before, don&#8217;t worry&#8212;we&#8217;ll cover exactly what you need to know.</p><h3>1.1. What is BIM?</h3><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481&quot;,&quot;text&quot;:&quot;Get 50% off for 1 year&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481"><span>Get 50% off for 1 year</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ADyO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd4ad93d-c350-4734-8be0-9203ea8ee5d1_3327x2036.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ADyO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd4ad93d-c350-4734-8be0-9203ea8ee5d1_3327x2036.webp 424w, https://substackcdn.com/image/fetch/$s_!ADyO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd4ad93d-c350-4734-8be0-9203ea8ee5d1_3327x2036.webp 848w, https://substackcdn.com/image/fetch/$s_!ADyO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd4ad93d-c350-4734-8be0-9203ea8ee5d1_3327x2036.webp 1272w, https://substackcdn.com/image/fetch/$s_!ADyO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd4ad93d-c350-4734-8be0-9203ea8ee5d1_3327x2036.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ADyO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd4ad93d-c350-4734-8be0-9203ea8ee5d1_3327x2036.webp" width="1456" height="891" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd4ad93d-c350-4734-8be0-9203ea8ee5d1_3327x2036.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:891,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:94152,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://youssefh.substack.com/i/185748481?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd4ad93d-c350-4734-8be0-9203ea8ee5d1_3327x2036.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ADyO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd4ad93d-c350-4734-8be0-9203ea8ee5d1_3327x2036.webp 424w, https://substackcdn.com/image/fetch/$s_!ADyO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd4ad93d-c350-4734-8be0-9203ea8ee5d1_3327x2036.webp 848w, https://substackcdn.com/image/fetch/$s_!ADyO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd4ad93d-c350-4734-8be0-9203ea8ee5d1_3327x2036.webp 1272w, https://substackcdn.com/image/fetch/$s_!ADyO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd4ad93d-c350-4734-8be0-9203ea8ee5d1_3327x2036.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Building Information Modeling</strong> (<strong>BIM</strong>) is a digital representation of the physical and functional characteristics of a building or infrastructure. Think of it as a highly detailed, intelligent 3D model that contains not just geometry, but rich data about every component.</p><p>Unlike traditional <strong>CAD</strong> drawings that are just lines and shapes, a BIM model knows that a wall is a wall, what material it&#8217;s made of, how thick it is, what room it separates, what fire rating it has, and which contractor is responsible for building it. Every door, beam, window, pipe, and cable has properties, relationships, and metadata.</p><p>BIM is the backbone of modern construction and infrastructure projects. Architects, engineers, contractors, and building owners all work with BIM models to design, analyze, construct, and maintain buildings and infrastructure.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My 8 Books With 60% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My 8 Books With 60% Off</span></a></p><h3>1.2. What are IFC Files?</h3><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481&quot;,&quot;text&quot;:&quot;Get 50% off for 1 year&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481"><span>Get 50% off for 1 year</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5Hyp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc72893fe-5903-4c1a-b572-c2ef4cebc811_710x467.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5Hyp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc72893fe-5903-4c1a-b572-c2ef4cebc811_710x467.png 424w, https://substackcdn.com/image/fetch/$s_!5Hyp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc72893fe-5903-4c1a-b572-c2ef4cebc811_710x467.png 848w, https://substackcdn.com/image/fetch/$s_!5Hyp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc72893fe-5903-4c1a-b572-c2ef4cebc811_710x467.png 1272w, https://substackcdn.com/image/fetch/$s_!5Hyp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc72893fe-5903-4c1a-b572-c2ef4cebc811_710x467.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5Hyp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc72893fe-5903-4c1a-b572-c2ef4cebc811_710x467.png" width="710" height="467" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c72893fe-5903-4c1a-b572-c2ef4cebc811_710x467.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:467,&quot;width&quot;:710,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The importance of Industry Foundation Classes in Building Information  Modelling - buildingSMART International&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The importance of Industry Foundation Classes in Building Information  Modelling - buildingSMART International" title="The importance of Industry Foundation Classes in Building Information  Modelling - buildingSMART International" srcset="https://substackcdn.com/image/fetch/$s_!5Hyp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc72893fe-5903-4c1a-b572-c2ef4cebc811_710x467.png 424w, https://substackcdn.com/image/fetch/$s_!5Hyp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc72893fe-5903-4c1a-b572-c2ef4cebc811_710x467.png 848w, https://substackcdn.com/image/fetch/$s_!5Hyp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc72893fe-5903-4c1a-b572-c2ef4cebc811_710x467.png 1272w, https://substackcdn.com/image/fetch/$s_!5Hyp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc72893fe-5903-4c1a-b572-c2ef4cebc811_710x467.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Industry Foundation Classes</strong> (IFC) is the open standard file format for BIM. It&#8217;s maintained by buildingSMART International and designed to enable interoperability between different BIM software tools.</p><p>An IFC file is essentially a database stored as a file. It contains:</p><ul><li><p><strong>Geometric data</strong>: The 3D shapes of building elements</p></li><li><p><strong>Semantic data</strong>: What each element is (wall, door, column, etc.)</p></li><li><p><strong>Properties</strong>: Material, fire rating, thermal properties, manufacturer info</p></li><li><p><strong>Relationships</strong>: Which floor a room is on, which wall a window is in</p></li><li><p><strong>Metadata</strong>: Project info, ownership, timestamps, units</p></li></ul><p>Here&#8217;s a simplified example of what IFC data looks like:</p><pre><code>#1= IFCPROJECT('3MD_HkJ7X3Rw7jJCTkarBW',$,'Bridge Project',$,$,$,$,(#2),#3);
#10= IFCBEAM('2O2Fr$t4X7Zf8NOew3FKVS',$,'Main Beam',$,$,#11,#12,$);
#11= IFCLOCALPLACEMENT($,#20);
#12= IFCPRODUCTDEFINITIONSHAPE($,$,(#30));</code></pre><p>Each line represents an entity (a project, a beam, a placement, etc.), and entities reference each other by ID. The structure is hierarchical and deeply interconnected.</p><h3>1.3. Why is This Hard to Work With?</h3><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481&quot;,&quot;text&quot;:&quot;Get 50% off for 1 year&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481"><span>Get 50% off for 1 year</span></a></p><p>IFC files are powerful, but they&#8217;re not user-friendly. To extract information or make changes, you typically need:</p><ol><li><p>Specialized BIM software (Revit, ArchiCAD, Tekla, etc.)</p></li><li><p>Deep understanding of the IFC schema (which has thousands of entity types)</p></li><li><p>Technical knowledge of how entities relate to each other</p></li><li><p>Programming skills, if you want to automate anything</p></li></ol><p>For non-technical stakeholders&#8212;project managers, clients, contractors&#8212;getting a simple answer like &#8220;How many steel beams are in this bridge?&#8221; requires opening specialized software, navigating complex interfaces, and often asking a BIM coordinator for help.</p><p>This is the gap we&#8217;re addressing.</p><h3>1.4. Natural Language Access to BIM Data</h3><p>What if instead of navigating complex software, you could just ask:</p><ul><li><p>&#8220;How many steel beams are in the bridge?&#8221;</p></li><li><p>&#8220;What&#8217;s the total weight of concrete in the foundation?&#8221;</p></li><li><p>&#8220;Show me all elements on the second floor that are fire-rated.&#8221;</p></li><li><p>&#8220;Change the material of beam B-104 to steel grade S355.&#8221;</p></li></ul><p>This is what our conversational agent enables. It translates natural language into IFC operations and presents results in plain English. It democratizes access to BIM data.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My 8 Books With 60% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My 8 Books With 60% Off</span></a></p><div><hr></div><h1>2. Understanding the Problem Space</h1><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481&quot;,&quot;text&quot;:&quot;Get 50% off for 1 year&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481"><span>Get 50% off for 1 year</span></a></p><p>Let&#8217;s be specific about what we&#8217;re building and why it matters. IFC files contain valuable information, but accessing it requires expertise. On a typical construction project, you might have:</p><ul><li><p><strong>Architects</strong> who need to check design compliance</p></li><li><p><strong>Engineers</strong> who need to analyze structural elements</p></li><li><p><strong>Contractors</strong> who need to understand what to build</p></li><li><p><strong>Project managers</strong> who need to track progress and quantities</p></li><li><p><strong>Clients</strong> who need to verify what they&#8217;re paying for</p></li><li><p><strong>Facility managers</strong> who need to understand the building for maintenance</p></li></ul><p>Most of these people aren&#8217;t BIM specialists. They have questions, but getting answers currently requires either learning complex software or asking someone else to extract the data for them.</p><h3>What Success Looks Like for this Project?</h3><p>A successful system would allow any stakeholder to:</p><ol><li><p><strong>Query</strong>: Ask questions in natural language and get accurate answers</p></li><li><p><strong>Explore</strong>: Follow up with clarifying questions and dive deeper</p></li><li><p><strong>Modify</strong>: Make changes to the model through conversation</p></li><li><p><strong>Verify</strong>: Check compliance and validate data</p></li><li><p><strong>Automate</strong>: Run repetitive queries or modifications at scale</p></li></ol><p>And all of this needs to work reliably, securely, and at scale, not just as a demo.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My 8 Books With 60% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My 8 Books With 60% Off</span></a></p><div><hr></div><h1>3. System Architecture</h1><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481&quot;,&quot;text&quot;:&quot;Get 50% off for 1 year&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481"><span>Get 50% off for 1 year</span></a></p><p>Now that we understand the problem, let&#8217;s design a system to solve it. We&#8217;ll build this in stages, but it&#8217;s important to see the complete picture first so every component makes sense in context.</p><h2>3.1. High-Level Architecture.</h2><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481&quot;,&quot;text&quot;:&quot;Get 50% off for 1 year&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481"><span>Get 50% off for 1 year</span></a></p><p>Here&#8217;s the overall system architecture:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GmZ2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bc41dd1-4337-4d39-9db0-9ca8178846ac_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GmZ2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bc41dd1-4337-4d39-9db0-9ca8178846ac_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!GmZ2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bc41dd1-4337-4d39-9db0-9ca8178846ac_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!GmZ2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bc41dd1-4337-4d39-9db0-9ca8178846ac_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!GmZ2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bc41dd1-4337-4d39-9db0-9ca8178846ac_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GmZ2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bc41dd1-4337-4d39-9db0-9ca8178846ac_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7bc41dd1-4337-4d39-9db0-9ca8178846ac_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:786458,&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://youssefh.substack.com/i/185748481?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bc41dd1-4337-4d39-9db0-9ca8178846ac_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GmZ2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bc41dd1-4337-4d39-9db0-9ca8178846ac_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!GmZ2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bc41dd1-4337-4d39-9db0-9ca8178846ac_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!GmZ2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bc41dd1-4337-4d39-9db0-9ca8178846ac_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!GmZ2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bc41dd1-4337-4d39-9db0-9ca8178846ac_1024x1536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Let&#8217;s break down each major component and understand its role:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481&quot;,&quot;text&quot;:&quot;Get 50% off for 1 year&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=185748481"><span>Get 50% off for 1 year</span></a></p>
      <p>
          <a href="https://todatabeyond.substack.com/p/building-a-production-ready-agentic-a53">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Building a Production-Ready Agentic Chatbot Course [1/30]: Introduction & Course Outline]]></title><description><![CDATA[From Scratch to Production: Building Production Level Agentic Chatbot]]></description><link>https://todatabeyond.substack.com/p/building-a-production-ready-agentic</link><guid isPermaLink="false">https://todatabeyond.substack.com/p/building-a-production-ready-agentic</guid><dc:creator><![CDATA[Youssef Hosni]]></dc:creator><pubDate>Sun, 18 Jan 2026 16:52:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7O--!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb10ed87-a915-4908-a44a-70d8d2e05243_1200x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=28b2610c&amp;utm_content=183815398&quot;,&quot;text&quot;:&quot;Get 30% off forever&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youssefh.substack.com/subscribe?coupon=28b2610c&amp;utm_content=183815398"><span>Get 30% off forever</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7O--!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb10ed87-a915-4908-a44a-70d8d2e05243_1200x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7O--!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb10ed87-a915-4908-a44a-70d8d2e05243_1200x800.png 424w, https://substackcdn.com/image/fetch/$s_!7O--!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb10ed87-a915-4908-a44a-70d8d2e05243_1200x800.png 848w, https://substackcdn.com/image/fetch/$s_!7O--!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb10ed87-a915-4908-a44a-70d8d2e05243_1200x800.png 1272w, https://substackcdn.com/image/fetch/$s_!7O--!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb10ed87-a915-4908-a44a-70d8d2e05243_1200x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7O--!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb10ed87-a915-4908-a44a-70d8d2e05243_1200x800.png" width="1200" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db10ed87-a915-4908-a44a-70d8d2e05243_1200x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102303,&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://youssefh.substack.com/i/183815398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb10ed87-a915-4908-a44a-70d8d2e05243_1200x800.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_!7O--!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb10ed87-a915-4908-a44a-70d8d2e05243_1200x800.png 424w, https://substackcdn.com/image/fetch/$s_!7O--!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb10ed87-a915-4908-a44a-70d8d2e05243_1200x800.png 848w, https://substackcdn.com/image/fetch/$s_!7O--!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb10ed87-a915-4908-a44a-70d8d2e05243_1200x800.png 1272w, https://substackcdn.com/image/fetch/$s_!7O--!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb10ed87-a915-4908-a44a-70d8d2e05243_1200x800.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>There are a lot of tutorials and blogs that show how to create a chatbot or wire up an LLM to a prompt. However, there is a shortage in resources that guide how to turn that into a <strong>reliable, maintainable system</strong> that handles real users, real data, and real constraints.</p><p>When you start building beyond a proof of concept, you quickly realize that a &#8220;working agent&#8221; is only a small part of the problem. You also need backend infrastructure, authentication and permissions, state management, streaming, error handling, observability, and a frontend that people can actually use.</p><p>This course focuses on that gap. We won&#8217;t stop at making an agent respond intelligently. We&#8217;ll build a <strong>complete, production-ready conversational system</strong>, end to end.</p><p>Throughout this course, we&#8217;ll build a <strong>BIM (Building Information Modeling) conversational agent</strong> that allows users to interact with complex building data using natural language.</p><p>You&#8217;ll learn how to build:</p><ul><li><p><strong>A full-stack system</strong>: backend APIs, frontend interface, database, and infrastructure</p></li><li><p><strong>Production patterns</strong>: authentication, authorization, error handling, logging, and monitoring</p></li><li><p><strong>Scalable architecture</strong>: from a single-user setup to multi-tenant, multi-company usage</p></li><li><p><strong>Real-time streaming</strong>: for a better user experience and perceived performance</p></li><li><p><strong>Advanced AI workflows</strong>: RAG pipelines, OCR, query optimization, and custom tools</p></li><li><p><strong>Deployment workflows</strong>: containerization, CI/CD, and cloud deployment</p></li><li><p><strong>Incremental development</strong>: each part builds on the previous one with runnable code</p></li></ul><p>By the end, you won&#8217;t just understand how conversational agents work, you&#8217;ll have built a system that could realistically be deployed and maintained. Let&#8217;s start with an overview of the course and cover in detail what you will learn in each part.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My Books With 40% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My Books With 40% Off</span></a></p><div><hr></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;a8e0a3d7-8675-44ea-a780-2921db42f2a3&quot;,&quot;caption&quot;:&quot;I have created a bundle for my books and roadmaps, so you can buy everything with just one button and for 40% less than the original price. The bundle features 8 eBooks, including:&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Get All My Books, One Button Away With 40% Off&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:108723546,&quot;name&quot;:&quot;Youssef Hosni&quot;,&quot;bio&quot;:&quot;AI Engineer/ Applied Scientist @ Greenstep | PhD &amp; Generative AI Researcher @ Aalto University | Founder @ To Data &amp; Beyond&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9beed7ac-2d99-4bb7-80bc-9765edb4c6a6_1133x1178.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:100}],&quot;post_date&quot;:&quot;2025-06-17T20:07:19.404Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!wXne!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F951ce84a-3a3e-4256-a398-f0f0cb90f5b8_1280x720.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://youssefh.substack.com/p/everything-ive-written-one-button&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:166178756,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:13,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1782281,&quot;publication_name&quot;:&quot;To Data &amp; Beyond&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!BjCx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe25b560-db85-45fd-9925-5e22760ef64c_500x500.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h2>Course Outline </h2><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=28b2610c&amp;utm_content=183815398&quot;,&quot;text&quot;:&quot;Get 30% off forever&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefh.substack.com/subscribe?coupon=28b2610c&amp;utm_content=183815398"><span>Get 30% off forever</span></a></p><p>The course is organized into five main parts.</p><h3>Part 1: System Architecture &amp; Environment Setup</h3><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My Books With 40% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My Books With 40% Off</span></a></p><p>We start with the foundation. Before writing agent logic, we design the system around it. <strong>In this part, we will cover:</strong></p><ul><li><p>Production-oriented architecture design</p></li><li><p>BIM and IFC domain fundamentals</p></li><li><p>Technology stack selection and trade-offs</p></li><li><p>Development environment setup (Docker, Git, IDEs)</p></li><li><p>Project structure and organization</p></li></ul><h3>Part 2: Building the AI Engine</h3><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My Books With 40% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My Books With 40% Off</span></a></p><p>This is where we build the core agent logic and reasoning layer. <strong>In this part, we will cover:</strong></p><ul><li><p>Agent orchestration with LangChain / LangGraph</p></li><li><p>Designing a RAG pipeline</p></li><li><p>Text preprocessing, OCR, and chunking strategies</p></li><li><p>Vector search with pgvector</p></li><li><p>Query optimization techniques</p></li><li><p>Custom tools for IFC operations using IfcOpenShell</p></li><li><p>Conversation memory and state management</p></li><li><p>Streaming model responses</p></li></ul><h3>Part 3: Backend Infrastructure</h3><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My Books With 40% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My Books With 40% Off</span></a></p><p>A production agent needs a solid backend. In this part, we will cover: </p><ul><li><p>FastAPI application structure</p></li><li><p>Database design with SQLAlchemy</p></li><li><p>Authentication and authorization (OAuth, JWT)</p></li><li><p>API design and versioning</p></li><li><p>Streaming endpoints</p></li><li><p>Background jobs and async processing</p></li><li><p>Error handling and retries</p></li><li><p>Logging, monitoring, and observability</p></li><li><p>Basic security practices</p></li></ul><h3>Part 4: Frontend Interface</h3><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My Books With 40% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My Books With 40% Off</span></a></p><p>Users need a clear, stable way to interact with the system. In this part, we will build:</p><ul><li><p>A React + TypeScript application</p></li><li><p>Authentication flows and protected routes</p></li><li><p>A real-time chat interface with streaming</p></li><li><p>File upload and management UI</p></li><li><p>Conversation history and state handling</p></li><li><p>UI/UX patterns for conversational systems</p></li><li><p>Responsive and accessible layouts</p></li></ul><h3>Part 5: Testing, Scaling &amp; Deployment</h3><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My Books With 40% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My Books With 40% Off</span></a></p><p>Finally, we prepare the system for real-world use. In this part, we will build:</p><ul><li><p>Unit, integration, and end-to-end testing</p></li><li><p>Scaling to multi-tenant usage</p></li><li><p>Company and user management</p></li><li><p>Role-based access control (RBAC)</p></li><li><p>Containerization with Docker</p></li><li><p>Kubernetes basics</p></li><li><p>CI/CD pipelines</p></li><li><p>Cloud deployment</p></li><li><p>Performance tuning and monitoring</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=28b2610c&amp;utm_content=183815398&quot;,&quot;text&quot;:&quot;Get 30% off forever&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefh.substack.com/subscribe?coupon=28b2610c&amp;utm_content=183815398"><span>Get 30% off forever</span></a></p><div><hr></div><h2>Course Prerequisites</h2><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My Books With 40% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My Books With 40% Off</span></a></p><p>To get the most out of this course, you should be comfortable with intermediate <strong>Python</strong> and have a basic understanding of <strong>web development</strong> concepts such as <strong>HTTP</strong>, <strong>APIs</strong>, and how backend services communicate. </p><p>Familiarity with Git and working from the command line is important, and you should have a general idea of how large language models work, even if you haven&#8217;t built systems with them before.</p><p>Some experience with FastAPI or similar backend frameworks, basic React or JavaScript, Docker, SQL databases, or cloud platforms will be helpful, but it&#8217;s not required. These topics are introduced gradually, and you can follow along even if they&#8217;re new to you.</p><p>You don&#8217;t need any prior knowledge of BIM or IFC, experience building production systems, or a background in DevOps. Those aspects are covered as part of the learning journey, and the course assumes you&#8217;re here to learn them, not already master them.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=28b2610c&amp;utm_content=183815398&quot;,&quot;text&quot;:&quot;Get 30% off forever&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefh.substack.com/subscribe?coupon=28b2610c&amp;utm_content=183815398"><span>Get 30% off forever</span></a></p><div><hr></div><h2>Expected Outcome </h2><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My Books With 40% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My Books With 40% Off</span></a></p><p>By the end of the course, you will:</p><ul><li><p>Build a <strong>complete production system</strong>, not just a prototype</p></li><li><p>Understand how to design systems that scale and remain maintainable</p></li><li><p>Implement advanced AI workflows (RAG, tools, streaming)</p></li><li><p>Deploy a real application to the cloud</p></li><li><p>Own a strong portfolio project that demonstrates real-world skills</p></li><li><p>Apply the same patterns to other domains (analytics, documents, support, etc.)</p></li></ul><p>Most importantly, you&#8217;ll develop the confidence to take an AI product from idea to production.</p><div><hr></div><h2>How to get the most out of the course?</h2><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My Books With 40% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My Books With 40% Off</span></a></p><p>This course is designed to <strong>be hands-on.</strong> The best way to follow it is to code as you read. Don&#8217;t rush through the articles or treat them as reference material only. You&#8217;ll learn the most by running the code yourself, encountering issues, and fixing them along the way. That friction is part of the learning process.</p><p>While the project focuses on the BIM and IFC domains, you shouldn&#8217;t feel limited by it. The architecture and patterns we build are intentionally domain-agnostic. You can adapt the same ideas to legal document analysis, medical report processing, code assistants, customer support systems, or any other problem you care about. Building a version that matters to you will make the course more engaging and more useful as a portfolio project.</p><p>Experimentation is encouraged. Change prompts, try different models, add or remove tools, and observe how the system behaves. These small experiments will help you understand not just how things work, but why certain design choices matter.</p><p>You&#8217;re also encouraged to engage with others following the course. Use GitHub Discussions and newsletter comments to ask questions, share progress, and learn from how others approach the same problems. Explaining your thinking and seeing alternative solutions is a powerful way to deepen your understanding.</p><p>Most importantly, try to think production-first as you build. Regularly ask yourself what happens when something fails, how the system would behave under load, and how you would debug issues in a real deployment. Developing this mindset is the real goal of the course.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=28b2610c&amp;utm_content=183815398&quot;,&quot;text&quot;:&quot;Get 30% off forever&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefh.substack.com/subscribe?coupon=28b2610c&amp;utm_content=183815398"><span>Get 30% off forever</span></a></p><div><hr></div><h2>Frameworks and Tools</h2><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My Books With 40% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My Books With 40% Off</span></a></p><p>Throughout this course, we will use a lot of frameworks and tools to bring our product to life. </p><h3><strong>1. AI &amp; Agents</strong></h3><ul><li><p>LangChain / LangGraph</p></li><li><p>pgvector</p></li><li><p>OpenAI or other LLM providers</p></li><li><p>Sentence Transformers</p></li><li><p>IfcOpenShell</p></li></ul><h3><strong>2. Backend</strong></h3><ul><li><p>FastAPI</p></li><li><p>SQLAlchemy</p></li><li><p>PostgreSQL</p></li><li><p>Redis</p></li><li><p>Pydantic</p></li><li><p>Alembic</p></li></ul><h3><strong>3. Frontend</strong></h3><ul><li><p>React + TypeScript</p></li><li><p>Vite</p></li><li><p>TanStack Query</p></li><li><p>Tailwind CSS</p></li><li><p>shadcn/ui</p></li></ul><h3><strong>4. DevOps</strong></h3><ul><li><p>Docker &amp; Docker Compose</p></li><li><p>Kubernetes</p></li><li><p>GitHub Actions</p></li><li><p>Cloud deployment (AWS / Azure / GCP)</p></li><li><p>Prometheus &amp; Grafana</p></li></ul><div><hr></div><h2>Course Resources &amp; Logistics</h2><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefhosni.gumroad.com/l/ofpngo&quot;,&quot;text&quot;:&quot;Get All My Books With 40% Off&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://youssefhosni.gumroad.com/l/ofpngo"><span>Get All My Books With 40% Off</span></a></p><p>The new issue will be published every <strong>Sunday at 5:00 p.m. (EEST)</strong>, allowing you to replicate the work and build your project throughout the week. Each article corresponds to a step towards our product, and the code will be updated to the course <strong><a href="https://github.com/youssefHosni/Building-a-Production-Ready-Agentic-Chatbot-Course">GitHub repository</a></strong>.</p><p>Discussions and questions happen in GitHub Discussions and newsletter comments. The course will be for To Data &amp; Beyond paid subscribers. Make sure to <strong>subscribe</strong> to never miss any parts of the course. You can get a <strong>30% discount</strong> on monthly and yearly subscriptions from <strong><a href="https://youssefh.substack.com/subscribe?coupon=28b2610c&amp;utm_content=183815398">here</a></strong>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youssefh.substack.com/subscribe?coupon=28b2610c&amp;utm_content=183815398&quot;,&quot;text&quot;:&quot;Get 30% off forever&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youssefh.substack.com/subscribe?coupon=28b2610c&amp;utm_content=183815398"><span>Get 30% off forever</span></a></p><p>Over the next several months, we&#8217;ll move from architecture decisions to deployment, step by step.</p><p>The goal isn&#8217;t to build the perfect system. It&#8217;s to understand how real conversational AI systems are designed, built, and maintained.</p><p>Next up: <strong>Designing the system architecture and setting up the working environment.</strong></p><p>See you next Sunday!</p><div><hr></div><h4><em><strong>This newsletter is a personal passion project, and your support helps keep it alive. If you would like to contribute, there are a few great ways:</strong></em></h4><ul><li><p><strong><a href="https://youssefh.substack.com/subscribe?coupon=c00b291d&amp;utm_content=166178756">Subscribe</a></strong>. A paid subscription helps to make my writing sustainable and gives you access to additional content.*</p></li><li><p><strong><a href="https://youssefhosni.gumroad.com/l/ofpngo">Grab a copy of my book Bundle</a></strong>. Get my 8 hands-on books and roadmaps for only 50% of the price</p></li></ul><p><em>Thanks for reading, and for helping support independent writing and research!</em></p><h4><strong>Are you looking to start a career in data science and AI, but do not know how? I offer data science mentoring sessions and long-term career mentoring:</strong></h4><ul><li><p><strong><a href="https://topmate.io/youssef_hosni">1-1 Mentoring sessions</a></strong></p></li><li><p><strong><a href="https://topmate.io/youssef_hosni">Long-term mentoring</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0b-F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1afd8e-4e08-418e-bf5b-18821ee60905_583x583.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0b-F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1afd8e-4e08-418e-bf5b-18821ee60905_583x583.png 424w, https://substackcdn.com/image/fetch/$s_!0b-F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1afd8e-4e08-418e-bf5b-18821ee60905_583x583.png 848w, https://substackcdn.com/image/fetch/$s_!0b-F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1afd8e-4e08-418e-bf5b-18821ee60905_583x583.png 1272w, https://substackcdn.com/image/fetch/$s_!0b-F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1afd8e-4e08-418e-bf5b-18821ee60905_583x583.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0b-F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1afd8e-4e08-418e-bf5b-18821ee60905_583x583.png" width="583" height="583" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd1afd8e-4e08-418e-bf5b-18821ee60905_583x583.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:583,&quot;width&quot;:583,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!0b-F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1afd8e-4e08-418e-bf5b-18821ee60905_583x583.png 424w, https://substackcdn.com/image/fetch/$s_!0b-F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1afd8e-4e08-418e-bf5b-18821ee60905_583x583.png 848w, https://substackcdn.com/image/fetch/$s_!0b-F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1afd8e-4e08-418e-bf5b-18821ee60905_583x583.png 1272w, https://substackcdn.com/image/fetch/$s_!0b-F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1afd8e-4e08-418e-bf5b-18821ee60905_583x583.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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></p>]]></content:encoded></item></channel></rss>