<?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[NoCode SaaS]]></title><description><![CDATA[Learn how to build and grow a software business using AI and NoCode]]></description><link>https://www.nocodesaas.io</link><image><url>https://substackcdn.com/image/fetch/$s_!35V6!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77d22e5b-07f4-4cbb-9f5d-fee960ae7d36_1280x1280.png</url><title>NoCode SaaS</title><link>https://www.nocodesaas.io</link></image><generator>Substack</generator><lastBuildDate>Sat, 02 May 2026 21:50:30 GMT</lastBuildDate><atom:link href="https://www.nocodesaas.io/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[James Devonport]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[nocodesaas@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[nocodesaas@substack.com]]></itunes:email><itunes:name><![CDATA[James Devonport]]></itunes:name></itunes:owner><itunes:author><![CDATA[James Devonport]]></itunes:author><googleplay:owner><![CDATA[nocodesaas@substack.com]]></googleplay:owner><googleplay:email><![CDATA[nocodesaas@substack.com]]></googleplay:email><googleplay:author><![CDATA[James Devonport]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Claude Code vs Codex: an honest comparison for non-coders]]></title><description><![CDATA[I've been using Claude Code and Codex daily for months. This week I'm breaking down their strengths, weaknesses, and which one you should actually start with.]]></description><link>https://www.nocodesaas.io/p/claude-code-vs-codex-desktop-apps</link><guid isPermaLink="false">https://www.nocodesaas.io/p/claude-code-vs-codex-desktop-apps</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 24 Apr 2026 16:47:33 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/78673cb6-0980-4974-9a62-29cd3682cbca_5696x3000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi there,</p><p>Welcome to this week&#8217;s newsletter, where I take you along for the ride building profitable SaaS businesses without code using AI!<br><br>This week I wanted to talk a bit about what the best tools are for building software using AI, for those of us who aren&#8217;t hardcode coders.</p><p>Obviously there are web based platforms like Lovable, Replit, Bubble etc which are a great way to get started (indeed that&#8217;s how I got into learning how to make things in the first place!)</p><p>But increasingly, I&#8217;m finding myself spending nearly all the time I spend on my computer in a development environment like Claude Code or Codex.</p><p>I&#8217;m going to cover the strengths and weaknesses of each of the big desktop AI building apps, and which ones I use every day to help me build things.</p><p>Whilst all these tools work in similar ways, there are differences between them.  Some are easier to use than others, some are more flexible and customisable.</p><p>It&#8217;s worth noting I&#8217;m going to be covering everything today from the perspective of being a Mac user, though many of these tools have Windows equivalents.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.nocodesaas.io/subscribe?"><span>Subscribe now</span></a></p><p><strong>What&#8217;s a AI harness?<br><br></strong>I thought it would be worth quickly covering this term as it&#8217;s likely something you&#8217;ve come across but it&#8217;s a bit jargon-y.</p><p>Essentially Claude Code, Codex, Cursor are all harnesses around an underlying AI model.</p><p>Think of a harness like the body around the AI brain. The raw AI model (like Claude or ChatGPT) is great at understanding language and generating code - but on its own, it&#8217;s just a chatbot in a box. </p><p>All it&#8217;s trying to do is predict the next word. </p><p>It can&#8217;t see your files, edit them, run commands, remember what it did yesterday, or safely interact with your computer.</p><p>The <strong>harness</strong> is everything else: the tools, rules, context manager, permission system, and workflow layer that turns a great AI model into a useful coding partner. </p><p>It&#8217;s the scaffolding that lets the AI actually <em>do</em> things in the real world (your project folder) without going rogue or forgetting what it&#8217;s supposed to be building.</p><h2><strong>Claude Code</strong></h2><p>First up, Claude Code! </p><p><em>Quick clarification before we dive in. I&#8217;m talking here about the <a href="https://code.claude.com/docs/en/desktop-quickstart">Claude Code desktop app</a>, not the CLI version. I&#8217;ll cover the CLI a bit later when we get to Cursor, because that&#8217;s where I spend most of my time actually using it.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x89r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd6fe6b6-40ad-4ce1-a672-4cf1f59cbae9_2632x1710.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x89r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd6fe6b6-40ad-4ce1-a672-4cf1f59cbae9_2632x1710.png 424w, https://substackcdn.com/image/fetch/$s_!x89r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd6fe6b6-40ad-4ce1-a672-4cf1f59cbae9_2632x1710.png 848w, https://substackcdn.com/image/fetch/$s_!x89r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd6fe6b6-40ad-4ce1-a672-4cf1f59cbae9_2632x1710.png 1272w, https://substackcdn.com/image/fetch/$s_!x89r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd6fe6b6-40ad-4ce1-a672-4cf1f59cbae9_2632x1710.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x89r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd6fe6b6-40ad-4ce1-a672-4cf1f59cbae9_2632x1710.png" width="1456" height="946" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd6fe6b6-40ad-4ce1-a672-4cf1f59cbae9_2632x1710.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:946,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:622666,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/194509110?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd6fe6b6-40ad-4ce1-a672-4cf1f59cbae9_2632x1710.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_!x89r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd6fe6b6-40ad-4ce1-a672-4cf1f59cbae9_2632x1710.png 424w, https://substackcdn.com/image/fetch/$s_!x89r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd6fe6b6-40ad-4ce1-a672-4cf1f59cbae9_2632x1710.png 848w, https://substackcdn.com/image/fetch/$s_!x89r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd6fe6b6-40ad-4ce1-a672-4cf1f59cbae9_2632x1710.png 1272w, https://substackcdn.com/image/fetch/$s_!x89r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd6fe6b6-40ad-4ce1-a672-4cf1f59cbae9_2632x1710.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Claude Desktop App in Code Mode</figcaption></figure></div><p>The desktop app is a fantastic way for people to build their first proper bit of software. No installing CLIs, no faffing with terminals. You open the app, go to the Code tab, start a new session, and you&#8217;re off.</p><p>If you&#8217;re anything like me I used to find doing anything in the terminal intimidating (and sometimes scary!) so using the nice and polished Claude desktop app can be a great access point for getting started with building things.</p><p><strong>How it actually works</strong></p><p>At the highest level a Claude Code session is linked to a specific folder on your computer. That folder contains all the files for a given project: code, assets, configs etc.</p><p>Claude can read those files, edit them, create new ones, and run commands. When you want to work on a different project, you point it at a different folder. That&#8217;s basically the whole mental model.</p><p><strong>The modes you need to know about</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bvbY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc44ac33-f286-497a-93b4-8726b2a121c5_2632x1710.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bvbY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc44ac33-f286-497a-93b4-8726b2a121c5_2632x1710.png 424w, https://substackcdn.com/image/fetch/$s_!bvbY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc44ac33-f286-497a-93b4-8726b2a121c5_2632x1710.png 848w, https://substackcdn.com/image/fetch/$s_!bvbY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc44ac33-f286-497a-93b4-8726b2a121c5_2632x1710.png 1272w, https://substackcdn.com/image/fetch/$s_!bvbY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc44ac33-f286-497a-93b4-8726b2a121c5_2632x1710.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bvbY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc44ac33-f286-497a-93b4-8726b2a121c5_2632x1710.png" width="1456" height="946" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bc44ac33-f286-497a-93b4-8726b2a121c5_2632x1710.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:946,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:619874,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/194509110?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc44ac33-f286-497a-93b4-8726b2a121c5_2632x1710.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_!bvbY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc44ac33-f286-497a-93b4-8726b2a121c5_2632x1710.png 424w, https://substackcdn.com/image/fetch/$s_!bvbY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc44ac33-f286-497a-93b4-8726b2a121c5_2632x1710.png 848w, https://substackcdn.com/image/fetch/$s_!bvbY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc44ac33-f286-497a-93b4-8726b2a121c5_2632x1710.png 1272w, https://substackcdn.com/image/fetch/$s_!bvbY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc44ac33-f286-497a-93b4-8726b2a121c5_2632x1710.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Claude Code has a few different &#8220;permission modes&#8221; which control how much it checks in with you before doing things. Shift+Tab lets you quickly switch between them, or there&#8217;s the menu shown above. </p><p>Worth understanding these because they change the whole feel of working with it:</p><p><strong>Default mode.</strong> Claude asks for permission before editing files or running commands. Safe, but you&#8217;ll be clicking &#8220;allow&#8221; a lot!</p><p><strong>Accept edits.</strong> Claude makes file changes automatically, but still asks before running commands. </p><p><strong>Plan mode.</strong> Claude writes out a plan before touching anything. Useful when you&#8217;re kicking off something bigger and want to sanity-check the approach first.</p><p><strong>Bypass permissions.</strong> The YOLO option. Claude does whatever it wants, no prompts. This is what I run on most of the time, if I&#8217;m honest. Fastest way to actually get work done once you trust it.  </p><p>I love that I can set a complex task off and come back an hour later to have it completed without me having to have constantly granted permissions.</p><p><strong>Auto mode.</strong> The newest addition, and the best one. Instead of asking you about everything or blindly doing everything, it uses classifiers to evaluate each action. Safe stuff gets auto-approved, risky stuff (like deleting files or hitting production) still gets flagged. </p><p>It&#8217;s basically bypass mode with guardrails, and I&#8217;ve been using it more and more recently.</p><p><strong>Worktrees, keep it simple</strong></p><p>One thing worth mentioning quickly&#8230; worktrees. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!reu_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cc5664-952c-44d0-aef1-4afe24c906ad_1902x738.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!reu_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cc5664-952c-44d0-aef1-4afe24c906ad_1902x738.png 424w, https://substackcdn.com/image/fetch/$s_!reu_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cc5664-952c-44d0-aef1-4afe24c906ad_1902x738.png 848w, https://substackcdn.com/image/fetch/$s_!reu_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cc5664-952c-44d0-aef1-4afe24c906ad_1902x738.png 1272w, https://substackcdn.com/image/fetch/$s_!reu_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cc5664-952c-44d0-aef1-4afe24c906ad_1902x738.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!reu_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cc5664-952c-44d0-aef1-4afe24c906ad_1902x738.png" width="1456" height="565" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8cc5664-952c-44d0-aef1-4afe24c906ad_1902x738.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:565,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:80557,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/194509110?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cc5664-952c-44d0-aef1-4afe24c906ad_1902x738.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_!reu_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cc5664-952c-44d0-aef1-4afe24c906ad_1902x738.png 424w, https://substackcdn.com/image/fetch/$s_!reu_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cc5664-952c-44d0-aef1-4afe24c906ad_1902x738.png 848w, https://substackcdn.com/image/fetch/$s_!reu_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cc5664-952c-44d0-aef1-4afe24c906ad_1902x738.png 1272w, https://substackcdn.com/image/fetch/$s_!reu_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cc5664-952c-44d0-aef1-4afe24c906ad_1902x738.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Don&#8217;t worry too much about the technical details. Just know that a worktree is basically a way to run multiple Claude sessions on the <em>same</em> project at the same time, without them stepping on each other. In the desktop app you can enable this with a checkbox when you start a session.</p><p>Sometimes it&#8217;s fine to have multiple instances of Claude running on the same folder without worktrees, but it&#8217;s usually safer to try and keep things isolated if you can!</p><p><strong>MCPs and CLIs, where things get interesting</strong></p><p>This is where the desktop app really starts to give you wow moments. </p><p>MCPs and CLIs <em>(both fairly similar in practice, they essentially let Claude execute commands on other services)</em> let Claude connect to external tools like databases, hosting providers, APIs, etc. </p><p>Think of them as giving Claude superpowers beyond just editing files on your computer.</p><p>The one I use most is the <strong><a href="https://supabase.com/docs/guides/getting-started/mcp">Supabase MCP</a></strong>. Once it&#8217;s connected, Claude can do basically anything in your Supabase project: read data, run migrations, create tables, inspect schemas. </p><p>Instead of me copy-pasting SQL back and forth or describing what I want, Claude just does it.</p><p>The desktop app makes adding MCPs genuinely easy. </p><p>There&#8217;s a proper UI for it, and Anthropic&#8217;s built-in connector marketplace means most of the popular ones are a couple of clicks to install.</p><p><strong>My verdict</strong></p><p>Honestly, the desktop app is just a nice, easy wrapper for getting into this stuff. If you&#8217;ve never touched Claude Code before, I&#8217;d start here rather than the CLI. The skills, the MCPs, the routines, it&#8217;s all right there in a proper UI, no config files to wrestle with.</p><h2>Codex</h2><p>I&#8217;ve been using the Codex desktop app more and more recently, and the main reason is honestly just how nicely put together the app is. </p><p>It feels like a beautifully designed piece of software, and everything you need is in one place.</p><p><strong>The app experience</strong></p><p>The Codex desktop app is where I&#8217;d suggest most people start (same as with Claude Code). </p><p>There&#8217;s also a CLI version, and an IDE extension, but it does feel like OpenAI are putting most of their development effort into the desktop app right now. The UI is miles ahead of anything else in this space in my opinion!</p><p>A few things that stand out:</p><p><strong>The built-in browser.</strong> </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!27Z4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e616271-c1db-49dc-9bd8-3d8b09dcb014_3260x2036.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!27Z4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e616271-c1db-49dc-9bd8-3d8b09dcb014_3260x2036.png 424w, https://substackcdn.com/image/fetch/$s_!27Z4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e616271-c1db-49dc-9bd8-3d8b09dcb014_3260x2036.png 848w, https://substackcdn.com/image/fetch/$s_!27Z4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e616271-c1db-49dc-9bd8-3d8b09dcb014_3260x2036.png 1272w, https://substackcdn.com/image/fetch/$s_!27Z4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e616271-c1db-49dc-9bd8-3d8b09dcb014_3260x2036.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!27Z4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e616271-c1db-49dc-9bd8-3d8b09dcb014_3260x2036.png" width="1456" height="909" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e616271-c1db-49dc-9bd8-3d8b09dcb014_3260x2036.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:909,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2455719,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/194509110?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e616271-c1db-49dc-9bd8-3d8b09dcb014_3260x2036.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_!27Z4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e616271-c1db-49dc-9bd8-3d8b09dcb014_3260x2036.png 424w, https://substackcdn.com/image/fetch/$s_!27Z4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e616271-c1db-49dc-9bd8-3d8b09dcb014_3260x2036.png 848w, https://substackcdn.com/image/fetch/$s_!27Z4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e616271-c1db-49dc-9bd8-3d8b09dcb014_3260x2036.png 1272w, https://substackcdn.com/image/fetch/$s_!27Z4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e616271-c1db-49dc-9bd8-3d8b09dcb014_3260x2036.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I love the live website preview you get in the Codex app when working on a project</figcaption></figure></div><p>You get a proper live preview of whatever you&#8217;re building, right inside the app. No alt-tabbing to Chrome to see what&#8217;s changed. </p><p>But the really clever bit is the annotating mode. While you&#8217;re looking at a live preview, you can write notes directly on the page, circle a button, draw an arrow, whatever, and those annotations get sent back to the model as context for the next change. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AqkA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc00acda-d4ff-41d4-b41e-2c62ab8f2934_1392x942.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AqkA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc00acda-d4ff-41d4-b41e-2c62ab8f2934_1392x942.png 424w, https://substackcdn.com/image/fetch/$s_!AqkA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc00acda-d4ff-41d4-b41e-2c62ab8f2934_1392x942.png 848w, https://substackcdn.com/image/fetch/$s_!AqkA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc00acda-d4ff-41d4-b41e-2c62ab8f2934_1392x942.png 1272w, https://substackcdn.com/image/fetch/$s_!AqkA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc00acda-d4ff-41d4-b41e-2c62ab8f2934_1392x942.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AqkA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc00acda-d4ff-41d4-b41e-2c62ab8f2934_1392x942.png" width="1392" height="942" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc00acda-d4ff-41d4-b41e-2c62ab8f2934_1392x942.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:942,&quot;width&quot;:1392,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:467631,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/194509110?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc00acda-d4ff-41d4-b41e-2c62ab8f2934_1392x942.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_!AqkA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc00acda-d4ff-41d4-b41e-2c62ab8f2934_1392x942.png 424w, https://substackcdn.com/image/fetch/$s_!AqkA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc00acda-d4ff-41d4-b41e-2c62ab8f2934_1392x942.png 848w, https://substackcdn.com/image/fetch/$s_!AqkA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc00acda-d4ff-41d4-b41e-2c62ab8f2934_1392x942.png 1272w, https://substackcdn.com/image/fetch/$s_!AqkA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc00acda-d4ff-41d4-b41e-2c62ab8f2934_1392x942.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Example of using Codex annotation mode to request changes</figcaption></figure></div><p>It honestly makes it feel like you&#8217;re talking to a human developer. &#8220;Make this button bigger, move this over here, change the colour of this.&#8221; I haven&#8217;t seen this in any other tool and it&#8217;s a proper differentiator.</p><p><strong>Browser use.</strong> Codex can also control and navigate the built in browser using the &#8216;Browser Use&#8217; plugin - this is amazing for things like doing automated tests.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fTDG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff04e4a96-6f70-4220-b4d3-8f59d8c6eeb2_1240x812.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fTDG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff04e4a96-6f70-4220-b4d3-8f59d8c6eeb2_1240x812.png 424w, https://substackcdn.com/image/fetch/$s_!fTDG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff04e4a96-6f70-4220-b4d3-8f59d8c6eeb2_1240x812.png 848w, https://substackcdn.com/image/fetch/$s_!fTDG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff04e4a96-6f70-4220-b4d3-8f59d8c6eeb2_1240x812.png 1272w, https://substackcdn.com/image/fetch/$s_!fTDG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff04e4a96-6f70-4220-b4d3-8f59d8c6eeb2_1240x812.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fTDG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff04e4a96-6f70-4220-b4d3-8f59d8c6eeb2_1240x812.png" width="1240" height="812" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f04e4a96-6f70-4220-b4d3-8f59d8c6eeb2_1240x812.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:812,&quot;width&quot;:1240,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:171629,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/194509110?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff04e4a96-6f70-4220-b4d3-8f59d8c6eeb2_1240x812.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_!fTDG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff04e4a96-6f70-4220-b4d3-8f59d8c6eeb2_1240x812.png 424w, https://substackcdn.com/image/fetch/$s_!fTDG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff04e4a96-6f70-4220-b4d3-8f59d8c6eeb2_1240x812.png 848w, https://substackcdn.com/image/fetch/$s_!fTDG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff04e4a96-6f70-4220-b4d3-8f59d8c6eeb2_1240x812.png 1272w, https://substackcdn.com/image/fetch/$s_!fTDG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff04e4a96-6f70-4220-b4d3-8f59d8c6eeb2_1240x812.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Built-in GitHub.</strong> Nice friendly UI for committing, pushing, creating branches, all the stuff you&#8217;d normally drop into the terminal for. If you&#8217;re newer to git, this is a really gentle on-ramp.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kC-t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F507d2ad0-9fc1-4b75-b99f-7d12e8917422_1130x1284.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kC-t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F507d2ad0-9fc1-4b75-b99f-7d12e8917422_1130x1284.png 424w, https://substackcdn.com/image/fetch/$s_!kC-t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F507d2ad0-9fc1-4b75-b99f-7d12e8917422_1130x1284.png 848w, https://substackcdn.com/image/fetch/$s_!kC-t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F507d2ad0-9fc1-4b75-b99f-7d12e8917422_1130x1284.png 1272w, https://substackcdn.com/image/fetch/$s_!kC-t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F507d2ad0-9fc1-4b75-b99f-7d12e8917422_1130x1284.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kC-t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F507d2ad0-9fc1-4b75-b99f-7d12e8917422_1130x1284.png" width="366" height="415.8796460176991" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/507d2ad0-9fc1-4b75-b99f-7d12e8917422_1130x1284.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1284,&quot;width&quot;:1130,&quot;resizeWidth&quot;:366,&quot;bytes&quot;:380134,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/194509110?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F507d2ad0-9fc1-4b75-b99f-7d12e8917422_1130x1284.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_!kC-t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F507d2ad0-9fc1-4b75-b99f-7d12e8917422_1130x1284.png 424w, https://substackcdn.com/image/fetch/$s_!kC-t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F507d2ad0-9fc1-4b75-b99f-7d12e8917422_1130x1284.png 848w, https://substackcdn.com/image/fetch/$s_!kC-t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F507d2ad0-9fc1-4b75-b99f-7d12e8917422_1130x1284.png 1272w, https://substackcdn.com/image/fetch/$s_!kC-t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F507d2ad0-9fc1-4b75-b99f-7d12e8917422_1130x1284.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Nice and simple Github UI inside Codex</figcaption></figure></div><p></p><p><strong>Quick toggles for file tree, terminal, and a side panel</strong> showing every file that&#8217;s been changed in the current session. Super easy to see exactly what Codex has been up to, which matters when you&#8217;re running it in anything other than manual approval mode.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nU0B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b10c1b-fdc6-4f14-8f8b-ccc76a107c98_1044x1798.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nU0B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b10c1b-fdc6-4f14-8f8b-ccc76a107c98_1044x1798.png 424w, https://substackcdn.com/image/fetch/$s_!nU0B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b10c1b-fdc6-4f14-8f8b-ccc76a107c98_1044x1798.png 848w, https://substackcdn.com/image/fetch/$s_!nU0B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b10c1b-fdc6-4f14-8f8b-ccc76a107c98_1044x1798.png 1272w, https://substackcdn.com/image/fetch/$s_!nU0B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b10c1b-fdc6-4f14-8f8b-ccc76a107c98_1044x1798.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nU0B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b10c1b-fdc6-4f14-8f8b-ccc76a107c98_1044x1798.png" width="266" height="458.1111111111111" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6b10c1b-fdc6-4f14-8f8b-ccc76a107c98_1044x1798.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1798,&quot;width&quot;:1044,&quot;resizeWidth&quot;:266,&quot;bytes&quot;:163450,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/194509110?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b10c1b-fdc6-4f14-8f8b-ccc76a107c98_1044x1798.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_!nU0B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b10c1b-fdc6-4f14-8f8b-ccc76a107c98_1044x1798.png 424w, https://substackcdn.com/image/fetch/$s_!nU0B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b10c1b-fdc6-4f14-8f8b-ccc76a107c98_1044x1798.png 848w, https://substackcdn.com/image/fetch/$s_!nU0B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b10c1b-fdc6-4f14-8f8b-ccc76a107c98_1044x1798.png 1272w, https://substackcdn.com/image/fetch/$s_!nU0B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b10c1b-fdc6-4f14-8f8b-ccc76a107c98_1044x1798.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Side panel shows all the changes made to files, and lets you undo them with a single click</figcaption></figure></div><p><strong>Permission modes</strong></p><p>Same idea as Claude Code. You&#8217;ve got default permissions (it asks about everything), full access (it does whatever it wants), and the newer <strong>auto mode</strong> (officially called auto-review). </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2miB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61243978-4833-427e-bd4b-538234d9292f_1252x356.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2miB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61243978-4833-427e-bd4b-538234d9292f_1252x356.png 424w, https://substackcdn.com/image/fetch/$s_!2miB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61243978-4833-427e-bd4b-538234d9292f_1252x356.png 848w, https://substackcdn.com/image/fetch/$s_!2miB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61243978-4833-427e-bd4b-538234d9292f_1252x356.png 1272w, https://substackcdn.com/image/fetch/$s_!2miB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61243978-4833-427e-bd4b-538234d9292f_1252x356.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2miB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61243978-4833-427e-bd4b-538234d9292f_1252x356.png" width="1252" height="356" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61243978-4833-427e-bd4b-538234d9292f_1252x356.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:356,&quot;width&quot;:1252,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61713,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/194509110?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61243978-4833-427e-bd4b-538234d9292f_1252x356.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_!2miB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61243978-4833-427e-bd4b-538234d9292f_1252x356.png 424w, https://substackcdn.com/image/fetch/$s_!2miB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61243978-4833-427e-bd4b-538234d9292f_1252x356.png 848w, https://substackcdn.com/image/fetch/$s_!2miB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61243978-4833-427e-bd4b-538234d9292f_1252x356.png 1272w, https://substackcdn.com/image/fetch/$s_!2miB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61243978-4833-427e-bd4b-538234d9292f_1252x356.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Auto review mode in Codex</figcaption></figure></div><p>Auto mode is the interesting one&#8230; it uses a second &#8220;guardian&#8221; agent to review actions before they run, which means you get most of the speed of full access without the anxiety. </p><p>I&#8217;ve been running it on auto mode for most tasks recently and it handles the vast majority of stuff with no confirmation prompts.</p><p><strong>Plan mode</strong></p><p>Works similarly to Claude Code&#8217;s plan mode. You describe what you want, Codex writes out a proper implementation plan, and once you&#8217;ve signed it off, it goes and executes. </p><p>Worth using for anything non-trivial because it forces a sanity check before anything gets written.</p><p><strong>The models, and the intelligence selector</strong></p><p>Codex just got the <a href="https://openai.com/index/introducing-gpt-5-5/">brand new GPT-5.5 model (as of this week)</a>, which has been performing really well. It&#8217;s also really token efficient, which matters because token efficiency translates directly into how long your usage lasts on a given plan, as well as how fast it is!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!phY8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c91969-e539-459f-ad84-8f35e9f43a91_1058x722.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!phY8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c91969-e539-459f-ad84-8f35e9f43a91_1058x722.png 424w, https://substackcdn.com/image/fetch/$s_!phY8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c91969-e539-459f-ad84-8f35e9f43a91_1058x722.png 848w, https://substackcdn.com/image/fetch/$s_!phY8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c91969-e539-459f-ad84-8f35e9f43a91_1058x722.png 1272w, https://substackcdn.com/image/fetch/$s_!phY8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c91969-e539-459f-ad84-8f35e9f43a91_1058x722.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!phY8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c91969-e539-459f-ad84-8f35e9f43a91_1058x722.png" width="519" height="354.1758034026465" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64c91969-e539-459f-ad84-8f35e9f43a91_1058x722.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:722,&quot;width&quot;:1058,&quot;resizeWidth&quot;:519,&quot;bytes&quot;:129207,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/194509110?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c91969-e539-459f-ad84-8f35e9f43a91_1058x722.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_!phY8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c91969-e539-459f-ad84-8f35e9f43a91_1058x722.png 424w, https://substackcdn.com/image/fetch/$s_!phY8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c91969-e539-459f-ad84-8f35e9f43a91_1058x722.png 848w, https://substackcdn.com/image/fetch/$s_!phY8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c91969-e539-459f-ad84-8f35e9f43a91_1058x722.png 1272w, https://substackcdn.com/image/fetch/$s_!phY8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c91969-e539-459f-ad84-8f35e9f43a91_1058x722.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>One thing worth explaining: the intelligence level selector. You can pick between <strong>low, medium</strong> and <strong>high</strong> (and sometimes <strong>extra high</strong>, depending on your plan). </p><p>The temptation is to always run on the highest setting possible, but OpenAI are actually recommending <strong>medium</strong> as the default for most tasks now. It&#8217;s faster, uses fewer tokens, and for the vast majority of stuff it&#8217;s genuinely good enough. Save high for the planning or big complex problems.</p><p>GPT-5.5 also has a 400K context window in Codex, so you can have pretty long sessions before it starts struggling.</p><p>There&#8217;s also a speed setting where you can pick between standard or fast modes (fast uses credits more quickly!)</p><p><strong>Auto-compacting</strong></p><p>Speaking of long sessions. One of Codex&#8217;s nicer features is auto-compacting. When your context window starts filling up, instead of either crashing or silently forgetting things, Codex automatically writes a summary of the conversation so far and replaces the full history with that summary. You keep going, Codex remembers the important stuff, and you don&#8217;t have to start a new session every time things get long. Small thing, but it makes a real difference on bigger projects.</p><p><strong>Pricing</strong></p><p>This is the bit people miss: if you&#8217;re already paying for ChatGPT Plus, Pro, or Business, Codex is included. You don&#8217;t need a separate subscription. Given most people building in AI already have a ChatGPT account, this is effectively free Codex for many.</p><p><strong>My verdict</strong></p><p>Codex is the one I reach for when I want things to <em>feel</em> good. The UI is lovely, the annotating browser is genuinely unique, and the new GPT-5.5 model is performing well. </p><p>Combined with the fact that it&#8217;s bundled with a ChatGPT subscription, it&#8217;s getting harder and harder to ignore.  Many people say that the OpenAI models are also becoming better at coding than Claude, though there are lots of voices on both sides!</p><h4>Want to go further and use multiple models? </h4><p>The two apps above are where I&#8217;d suggest most people start, but they&#8217;re not the only game in town.  Even though I do occasionally use the Claude and Codex desktop apps, I do most of my work inside <a href="https://cursor.com/">Cursor</a> using their CLIs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JWmb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c6aec0-b5b2-45d0-ae41-b0d68c5e71a2_3824x2482.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JWmb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c6aec0-b5b2-45d0-ae41-b0d68c5e71a2_3824x2482.png 424w, https://substackcdn.com/image/fetch/$s_!JWmb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c6aec0-b5b2-45d0-ae41-b0d68c5e71a2_3824x2482.png 848w, https://substackcdn.com/image/fetch/$s_!JWmb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c6aec0-b5b2-45d0-ae41-b0d68c5e71a2_3824x2482.png 1272w, https://substackcdn.com/image/fetch/$s_!JWmb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c6aec0-b5b2-45d0-ae41-b0d68c5e71a2_3824x2482.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JWmb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c6aec0-b5b2-45d0-ae41-b0d68c5e71a2_3824x2482.png" width="1456" height="945" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b6c6aec0-b5b2-45d0-ae41-b0d68c5e71a2_3824x2482.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:945,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1579800,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/194509110?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c6aec0-b5b2-45d0-ae41-b0d68c5e71a2_3824x2482.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_!JWmb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c6aec0-b5b2-45d0-ae41-b0d68c5e71a2_3824x2482.png 424w, https://substackcdn.com/image/fetch/$s_!JWmb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c6aec0-b5b2-45d0-ae41-b0d68c5e71a2_3824x2482.png 848w, https://substackcdn.com/image/fetch/$s_!JWmb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c6aec0-b5b2-45d0-ae41-b0d68c5e71a2_3824x2482.png 1272w, https://substackcdn.com/image/fetch/$s_!JWmb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c6aec0-b5b2-45d0-ae41-b0d68c5e71a2_3824x2482.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">My Cursor set up using Claude Code CLI and Codex Plugin</figcaption></figure></div><p>It&#8217;s a full IDE (based on <a href="https://code.visualstudio.com/">VS Code</a>) rather than a standalone app, I really like that you can run Claude Code and Codex directly inside Cursor&#8217;s terminal, so you can instantly switch between them and even play them off one another if you get stuck.</p><p>Cursor also has a really nice built in browser and file change view to show everything you&#8217;ve worked on.</p><div><hr></div><p>That&#8217;s it for this week!<br><br>I hope you found this comparison useful, it&#8217;s definatly worth giving all these options a spin to see which works best for you, often I will switch between them depending on what I&#8217;m working on! <em>or when I run out of credits on one &#128064;</em></p><p>It&#8217;s amazing that all the big AI labs are turning their attention to building these increasingly powerful desktop apps that make it easier to do complex things with AI.<br><br>I&#8217;d love to hear about what you&#8217;re working on with them, drop me a reply!</p><p>Happy building!</p><p>James</p><p>P.S. The <a href="https://createwith.com/">Create With Conference</a> is coming up in June - Advance tickets are still available for only &#163;49.  It would be great to see you there!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading, subscribe for free to receive new posts!</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Build vs Buy: When Does It Makes Sense to Replace Your SaaS Subscriptions?]]></title><description><![CDATA[When does vibe coding your own software to replace your expensive SaaS subscriptions actually make sense? I've replaced a few apps I subscribed to and have learnt (and saved) a ton. You can too!]]></description><link>https://www.nocodesaas.io/p/build-vs-buy-saas-ai</link><guid isPermaLink="false">https://www.nocodesaas.io/p/build-vs-buy-saas-ai</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 10 Apr 2026 17:27:49 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/16aa657e-e6b9-449c-9c7e-ae087825b57a_5696x3000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there! </p><p>When does it make sense to cancel a SaaS subscription and build your own version of it using AI?  </p><p>I&#8217;m <a href="https://x.com/asaio87/status/2023288769340756472?s=20">always reading posts on X</a> saying it&#8217;s a terrible idea.  <em>You&#8217;re going to waste weeks building it! What about the maintenance? </em></p><p>But then I decided to replace a few of the expensive SaaS tools I was using and I&#8217;m converted!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.tella.tv/video/should-you-build-your-own-software-ag7z" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P0Kp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F002a291a-dae3-47a8-beec-11d6b6921016_5696x3000.png 424w, https://substackcdn.com/image/fetch/$s_!P0Kp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F002a291a-dae3-47a8-beec-11d6b6921016_5696x3000.png 848w, https://substackcdn.com/image/fetch/$s_!P0Kp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F002a291a-dae3-47a8-beec-11d6b6921016_5696x3000.png 1272w, https://substackcdn.com/image/fetch/$s_!P0Kp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F002a291a-dae3-47a8-beec-11d6b6921016_5696x3000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P0Kp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F002a291a-dae3-47a8-beec-11d6b6921016_5696x3000.png" width="1456" height="767" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/002a291a-dae3-47a8-beec-11d6b6921016_5696x3000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:767,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5797134,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.tella.tv/video/should-you-build-your-own-software-ag7z&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/192333334?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F002a291a-dae3-47a8-beec-11d6b6921016_5696x3000.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_!P0Kp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F002a291a-dae3-47a8-beec-11d6b6921016_5696x3000.png 424w, https://substackcdn.com/image/fetch/$s_!P0Kp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F002a291a-dae3-47a8-beec-11d6b6921016_5696x3000.png 848w, https://substackcdn.com/image/fetch/$s_!P0Kp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F002a291a-dae3-47a8-beec-11d6b6921016_5696x3000.png 1272w, https://substackcdn.com/image/fetch/$s_!P0Kp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F002a291a-dae3-47a8-beec-11d6b6921016_5696x3000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p style="text-align: center;"><a href="https://www.tella.tv/video/should-you-build-your-own-software-ag7z">Watch how I built my own Intercom style support system</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and tutorials.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p>There are some real reasons you should consider &#8216;rolling your own&#8217; software to replace pricy subscriptions.</p><ol><li><p><strong>It&#8217;s a great way to learn how to build things.</strong>  You&#8217;re already a user of the tool you&#8217;re looking to replace (probably a power user!) so you know exactly how you want your new app to work.  You know what features it should have.  You don&#8217;t have to spend weeks searching for the perfect app idea, you&#8217;re just copying (and hopefully improving) a tool that already exists.  I speak to so many people who get stuck at the step</p></li><li><p><strong>Learn a new app development stack.  </strong>I started my first replacement build as a weekend project simply because I wanted to learn how to build an app using Convex as the DB and hosting it on Cloudflare Workers using NextJS.  If there&#8217;s a new technology you&#8217;ve been wanting to try - rebuilding a tool you already use can be a great way to give things a test drive.</p></li><li><p><strong>Better fit your use case.  </strong>One huge bonus of building your own tools is that you can customize them for your exact use case and make them totally personal to you.  For my support system I was able to give it a deeper integration into my app&#8217;s backend to perform admin tasks and fetch data when needed, all things I used to have to do manually.  Building the tool myself meant I could integrate it deeply.</p></li><li><p><strong>Reduce your costs.</strong>  It goes without saying you can radically reduce your operating costs by replacing expensive SaaS subscriptions with your own vibe coded version.  In fact, my support system built on <a href="https://convex.dev/referral/JAMESD124">Convex</a> and Cloudflare is effectively free to operate!</p><p></p></li></ol><p>There have been some fairly high profile cases of companies replacing expensive SaaS, such as Klarna who replaced expensive Salesforce &amp; Workday subscriptions with custom built software.</p><p>Klarna went all-in on this approach back in 2024. They shut down Salesforce and Workday (plus a bunch of other tools) and rebuilt their internal systems with a simpler AI-powered stack. </p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/bindureddy/status/1833603866207916475&quot;,&quot;full_text&quot;:&quot;Klarna just shut down Salesforce and Workday and replaced it with a simpler tech stack created by AI\n\nAs AI engineers become prolific, you can create custom applications that are 10x cheaper to run than these SaaS applications.&quot;,&quot;username&quot;:&quot;bindureddy&quot;,&quot;name&quot;:&quot;Bindu Reddy&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/2019406331955015683/XHe0v8Gq_normal.jpg&quot;,&quot;date&quot;:&quot;2024-09-10T20:30:03.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:98,&quot;retweet_count&quot;:266,&quot;like_count&quot;:2757,&quot;impression_count&quot;:558851,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p>This was in 2024&#8230; before Claude Code and Codex was even released, so the barriers have been lowered even further since then&#8230; is there any such thing as a sticky SaaS anymore?</p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/gokulr/status/1833600569635967124&quot;,&quot;full_text&quot;:&quot;ENTERPRISE SAAS STICKINESS - WHAT STICKINESS?\n\nThis news from <span class=\&quot;tweet-fake-link\&quot;>@Klarna</span> should have every enterprise SaaS company shaking in their boots. If an internal  team using AI can replicate 20+ years of work and customization from <span class=\&quot;tweet-fake-link\&quot;>@salesforce</span> and <span class=\&quot;tweet-fake-link\&quot;>@Workday</span>, to the extent the company doesn't&quot;,&quot;username&quot;:&quot;gokulr&quot;,&quot;name&quot;:&quot;Gokul Rajaram&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/967146848082321408/6IHD3HIa_normal.jpg&quot;,&quot;date&quot;:&quot;2024-09-10T20:16:57.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:82,&quot;retweet_count&quot;:129,&quot;like_count&quot;:846,&quot;impression_count&quot;:230216,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><div><hr></div><p>But it&#8217;s not just billion-dollar companies doing this. I did the same thing on a much smaller (and more realistic) scale with two tools I was actually paying for every month.</p><p><strong>My Crisp/Intercom replacement for customer support.</strong></p><p>Old cost: ~&#163;100/month </p><p>New stack: <a href="https://nextjs.org/">NextJS</a> + <a href="https://convex.dev/referral/JAMESD124">Convex</a> + <a href="https://workers.cloudflare.com/">Cloudflare Workers</a> (effectively free at my scale)</p><p>Live chat widget on the site, full help desk, product updates feed and my favourite feature: new tickets ping me in Slack and I reply straight from there, it syncs back instantly.  It handles incoming and outgoing emails using Postmark for email support.</p><p>What started as &#8220;just learn <a href="https://convex.dev/referral/JAMESD124">Convex</a>&#8221; turned into a system that fits my exact workflow better than anything off-the-shelf.</p><p>Both projects taught me new a stack, gave me deeper integrations I could never buy, and paid for themselves in months.</p><p> Most importantly, because I was already a power user, prompting the AI was easy, I knew every feature, every frustration, and every edge case I wanted to fix.</p><p><strong>So what should you actually build this on?</strong></p><p>If you&#8217;re going to try one of these projects, the stack you pick is important. Get it wrong and you&#8217;ll spend your weekend fighting deployment issues instead of building. Here&#8217;s what I&#8217;d use if I was starting from scratch today.</p><p>For the app itself, NextJS. Not because it&#8217;s trendy, but because every AI coding tool has seen a million NextJS projects and gets it right first time. </p><p>Claude Code works incredibly well with it.  <a href="https://www.tella.tv/video/should-you-build-your-own-software-ag7z">As you can see in my video tutorial</a> you get a really nice dev environment with claude code below a live preview of your app.</p><p>For the database and backend, Convex. This is the one I&#8217;ve really fallen in love with. It&#8217;s a database, backend functions, file storage, real-time sync, all in one thing, and it&#8217;s fully typed, which means the AI writes correct code instead of guessing at your schema. </p><p>Real-time sync basically for free is what made the Slack integration on my support tool a 10-minute job instead of a weekend. The free tier is generous enough that most side projects will never pay a penny.</p><p>If Convex feels too opinionated for you, Supabase is the sensible alternative <a href="https://www.nocodesaas.io/p/build-your-own-ai-powered-database">which I&#8217;ve covered in previous editions</a>. Proper Postgres, good auth, works with anything. Bit more wiring to do yourself, but it has a brilliant MCP server.</p><p>For hosting, Cloudflare Workers or Vercel. </p><p>Both have free tiers that&#8217;ll comfortably cover a personal project, both deploy from a git push, both will stay up without you thinking about them. I&#8217;ve been using Cloudflare recently because I wanted to learn how to host full apps on it, but honestly you can&#8217;t go wrong either way.</p><p>For auth I used the built in <a href="https://docs.convex.dev/auth/convex-auth">Convex Auth</a> with email one time passwords.</p><p>And then Claude Code to actually build the thing!</p><p>The trick I&#8217;ve landed on is to tell it the exact stack upfront&#8230; &#8220;NextJS, Convex, deploying to Cloudflare Workers&#8221; otherwise it&#8217;ll waste time picking technologies for you. </p><p>Then just work through the features one at a time, the same way you&#8217;d use the tool you&#8217;re replacing.</p><p>That&#8217;s it. That&#8217;s the whole stack. Nothing exotic, nothing you&#8217;ll have to rip out in six months.</p><p><strong>So when does it actually make sense?</strong></p><p>Here&#8217;s the quick decision framework I now run every time a renewal email lands in my inbox:</p><p><em>Cost threshold: Under ~$50/month?</em> The bar is high&#8230; it better teach me something big or save me serious time. Over $80&#8211;100? Way easier to justify the experiment (the savings can easily pay for a pro Codex or Claude Code sub!)</p><p><em>How well do I know the tool?</em> If I&#8217;m a daily power user, I can describe the perfect version in detail. That context makes AI builds shockingly fast.</p><p><em>Learning upside?</em> Every build lets me try a new stack (Convex this time, Cloudflare Workers last time) that I can now use on client work or future products.</p><p><em>Maintenance check:</em> Will this need weekly babysitting? If it&#8217;s built on rock-solid platforms like Cloudflare, Vercel, or Convex&#8230; usually no. If issues do arise, Claude Code is usually able to pull in the logs directly via the Cloudflare MCP and address the issue without much input from me.</p><p>Being able to build so quickly using AI has flipped the economics completely.</p><p>A few years ago this would have been weeks of pain and totally unviable. Now it&#8217;s a weekend project that levels up your skills and cuts costs.</p><p>I still read those X threads saying &#8220;don&#8217;t do it &#8212; maintenance will kill you.&#8221; They&#8217;re not wrong for every case.</p><p>But when the tool is something you use every day, the savings are real, and you&#8217;re treating it as a learning investment&#8230; why not give it a go?</p><p>What SaaS tool are you thinking about replacing?</p><p>Hit reply and tell me! I&#8217;d love to hear what stack you&#8217;re thinking of using.</p><p>Happy building! James</p><p></p><p>PS: If you&#8217;re interested in this kind of thing I&#8217;d love for you to <a href="https://luma.com/createwith26">join us at the Create With Conference in Brighton this June!</a> Ticket are only &#163;49 for a day of learning about how to build with AI.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.nocodesaas.io/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Building an OpenClaw Marketing Manager]]></title><description><![CDATA[How I built automated agents for SEO, Ads and Social Media that run on autopilot using OpenClaw and Claude Code]]></description><link>https://www.nocodesaas.io/p/building-an-openclaw-marketing-manager</link><guid isPermaLink="false">https://www.nocodesaas.io/p/building-an-openclaw-marketing-manager</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 20 Mar 2026 18:01:48 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6b8e782e-9b4b-4007-b419-9e23b40ee6be_5696x3000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there!<br><br>Welcome to this week&#8217;s edition of the NoCode SaaS newsletter, where I take you along for the ride of building a business using AI.</p><p>I had a great response to my last issue on <a href="https://www.nocodesaas.io/p/how-i-built-an-automated-ad-machine">how I built an automated ad machine using Claude Code</a>, it seems a lot of people share my frustrations with creating and setting up ad campaigns manually.</p><p>I&#8217;ve been using this ad system for a few weeks now, for both creating and managing the campaigns.<br><br>I&#8217;m basically never logging into the Meta Ads manager anymore, just chatting in Claude Code on how the campaign is performing, and allowing it to adjust budgets / make optimisations as it goes.  It&#8217;s been a really fun experience so far.</p><p>Here&#8217;s an example of what one of my my ad account reports looks like - it would have taken me a long time to get all of this from looking through hundreds of ads in our Meta dashboard!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CLkA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f3b1376-bc1d-42ad-8c4d-08c459469e00_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CLkA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f3b1376-bc1d-42ad-8c4d-08c459469e00_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!CLkA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f3b1376-bc1d-42ad-8c4d-08c459469e00_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!CLkA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f3b1376-bc1d-42ad-8c4d-08c459469e00_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!CLkA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f3b1376-bc1d-42ad-8c4d-08c459469e00_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CLkA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f3b1376-bc1d-42ad-8c4d-08c459469e00_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f3b1376-bc1d-42ad-8c4d-08c459469e00_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:843546,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/191596277?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f3b1376-bc1d-42ad-8c4d-08c459469e00_2784x1824.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_!CLkA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f3b1376-bc1d-42ad-8c4d-08c459469e00_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!CLkA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f3b1376-bc1d-42ad-8c4d-08c459469e00_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!CLkA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f3b1376-bc1d-42ad-8c4d-08c459469e00_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!CLkA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f3b1376-bc1d-42ad-8c4d-08c459469e00_2784x1824.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Claude Code Meta Ad Campaign Monitor</figcaption></figure></div><p>As I mentioned in my last issue, I built this whole system to be run locally on my machine only.  To do anything or make changes I need to fire up Cursor + Claude Code and get chatting.</p><p>But I found myself wanting to automate some of these review tasks.  I just wanted them to run every day and send me an update with recommended improvements I could accept or reject.  Basically to act like a human ad manager.</p><p>Initially I decided to <a href="https://code.claude.com/docs/en/scheduled-tasks">try out the new Claude Code /loop feature</a>, which runs your prompts on a schedule.<br><br>This sounds great in theory - it could run a simple prompt every day to run the campaign monitor health check and make any updates.   However it didn&#8217;t really work in practice for me.</p><p>The main issue I had with it is that in order for the schedule to run, Claude Code must be open and active in a terminal on your computer.</p><p>I&#8217;m often travelling around and my machine isn&#8217;t constantly on, with the terminal running ready to complete tasks.</p><p>Which got me thinking back to <a href="https://openclaw.ai/">OpenClaw</a>.</p><div class="pullquote"><p>If you havn&#8217;t heard of OpenClaw yet, essentially it&#8217;s a open source AI agent that you can install on a server, and it can have multiple &#8216;agents&#8217; which complete tasks for you.  It&#8217;s very similiar to Claude Code in that it is able to orchestrate pretty much anything, and you can chat to it through apps like WhatsApp, Telegram or in my case Slack.</p></div><p>I tried OpenClaw (or Clawdbot or Molty as it was then known!) when it first came out. </p><p>It took ages to set up, and I felt like I was constantly debugging it trying to get it to do the most basic of tasks reliably.</p><p>But after reading about how many updates have been shipped to it, and seeing people doing interesting things using it recently I decided to give it another go.</p><p>My objective was to take the local Claude Code project I&#8217;d built locally and have it run autonomously on OpenClaw on a schedule, and for it to message me in a Slack channel whenever I needed to take action on something.</p><p>So with this in mind, I headed over to Hetzner and set up their cheapest server at $4 a month where I&#8217;d run my OpenClaw.</p><p>Then I headed back into Claude Code and explained what I was trying to do.<br><br>I gave Claude the details of the server I&#8217;d just created, it&#8217;s IP address etc <a href="https://docs.openclaw.ai/install">and the official docs for installing OpenClaw</a>.  </p><p>As I was installing this on a totally clean VPS I decided to run Claude in &#8216;yolo&#8217; or <em><strong>claude</strong></em> --<em><strong>dangerously</strong></em>-<em><strong>skip</strong></em>-<em><strong>permissions </strong></em>mode where it can bascially go off and do whatever it needs to do without asking for your permission for everything.<br><br>About 5 minutes later OpenClaw was up and running on the new box, and I proceeded to the next part of the mission&#8230; move the ads monitor from Claude Code into OpenClaw, and have it run on a schedule.</p><p>To do this, I explained everything about what I was hoping to achieve, and that I liked the local setup I had with Claude Code and wanted to replicate that on OpenClaw.</p><p>Claude then put together a complete plan to move the code from my local machine to running on OpenClaw.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CeXe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb73a5cf7-a62f-43c1-92b8-03b1fc01ad77_1551x1158.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CeXe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb73a5cf7-a62f-43c1-92b8-03b1fc01ad77_1551x1158.png 424w, https://substackcdn.com/image/fetch/$s_!CeXe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb73a5cf7-a62f-43c1-92b8-03b1fc01ad77_1551x1158.png 848w, https://substackcdn.com/image/fetch/$s_!CeXe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb73a5cf7-a62f-43c1-92b8-03b1fc01ad77_1551x1158.png 1272w, https://substackcdn.com/image/fetch/$s_!CeXe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb73a5cf7-a62f-43c1-92b8-03b1fc01ad77_1551x1158.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CeXe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb73a5cf7-a62f-43c1-92b8-03b1fc01ad77_1551x1158.png" width="1456" height="1087" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b73a5cf7-a62f-43c1-92b8-03b1fc01ad77_1551x1158.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1087,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:336821,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/191596277?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb73a5cf7-a62f-43c1-92b8-03b1fc01ad77_1551x1158.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_!CeXe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb73a5cf7-a62f-43c1-92b8-03b1fc01ad77_1551x1158.png 424w, https://substackcdn.com/image/fetch/$s_!CeXe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb73a5cf7-a62f-43c1-92b8-03b1fc01ad77_1551x1158.png 848w, https://substackcdn.com/image/fetch/$s_!CeXe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb73a5cf7-a62f-43c1-92b8-03b1fc01ad77_1551x1158.png 1272w, https://substackcdn.com/image/fetch/$s_!CeXe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb73a5cf7-a62f-43c1-92b8-03b1fc01ad77_1551x1158.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Here&#8217;s how my OpenClaw Ad Reports look in Slack</figcaption></figure></div><p>As part of setting this up, the main new thing I had to create was a private Slack app which would be able to post to my #marketing channel, and listen for my replies.  <br><br>I also wanted to be able to approve and disapprove actions using emojis, like in the example above.</p><p>Here I have a report with a bunch of recommendations, with a request to creat 3 new ad variations if I add a checkmark emoji to the post.<br><br>It&#8217;s been working amazingly well for me so far! I get a daily report delivered into my Slack marketing channel of how each ad is performing and where to make adjustments, I can even chat back with the bot if needed so I&#8217;m finding I never even look at the OpenClaw UI.</p><p>I have since decided to take this even further, creating multiple agents on the OpenClaw to help me out with various marketing tasks I don&#8217;t enjoy doing</p><p><strong>Writing Blog Posts</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6AS9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87957908-d04f-4347-8691-82d39970922b_1568x534.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6AS9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87957908-d04f-4347-8691-82d39970922b_1568x534.png 424w, https://substackcdn.com/image/fetch/$s_!6AS9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87957908-d04f-4347-8691-82d39970922b_1568x534.png 848w, https://substackcdn.com/image/fetch/$s_!6AS9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87957908-d04f-4347-8691-82d39970922b_1568x534.png 1272w, https://substackcdn.com/image/fetch/$s_!6AS9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87957908-d04f-4347-8691-82d39970922b_1568x534.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6AS9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87957908-d04f-4347-8691-82d39970922b_1568x534.png" width="1456" height="496" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87957908-d04f-4347-8691-82d39970922b_1568x534.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:496,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:172045,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/191596277?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87957908-d04f-4347-8691-82d39970922b_1568x534.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_!6AS9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87957908-d04f-4347-8691-82d39970922b_1568x534.png 424w, https://substackcdn.com/image/fetch/$s_!6AS9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87957908-d04f-4347-8691-82d39970922b_1568x534.png 848w, https://substackcdn.com/image/fetch/$s_!6AS9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87957908-d04f-4347-8691-82d39970922b_1568x534.png 1272w, https://substackcdn.com/image/fetch/$s_!6AS9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87957908-d04f-4347-8691-82d39970922b_1568x534.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I set up a skill which writes and publishes new blog posts, even generating custom on brand illustrations and images using Gemini.  I set up a monthly job where I create a content plan, then every day OpenClaw writes and publishes the post to my blog automatically.</p><p><strong>Web Analytics</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kM7c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1f745e7-4c2e-4231-8aee-406b36c7d83f_1556x1186.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kM7c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1f745e7-4c2e-4231-8aee-406b36c7d83f_1556x1186.png 424w, https://substackcdn.com/image/fetch/$s_!kM7c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1f745e7-4c2e-4231-8aee-406b36c7d83f_1556x1186.png 848w, https://substackcdn.com/image/fetch/$s_!kM7c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1f745e7-4c2e-4231-8aee-406b36c7d83f_1556x1186.png 1272w, https://substackcdn.com/image/fetch/$s_!kM7c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1f745e7-4c2e-4231-8aee-406b36c7d83f_1556x1186.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kM7c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1f745e7-4c2e-4231-8aee-406b36c7d83f_1556x1186.png" width="1456" height="1110" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1f745e7-4c2e-4231-8aee-406b36c7d83f_1556x1186.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1110,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:205311,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/191596277?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1f745e7-4c2e-4231-8aee-406b36c7d83f_1556x1186.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_!kM7c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1f745e7-4c2e-4231-8aee-406b36c7d83f_1556x1186.png 424w, https://substackcdn.com/image/fetch/$s_!kM7c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1f745e7-4c2e-4231-8aee-406b36c7d83f_1556x1186.png 848w, https://substackcdn.com/image/fetch/$s_!kM7c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1f745e7-4c2e-4231-8aee-406b36c7d83f_1556x1186.png 1272w, https://substackcdn.com/image/fetch/$s_!kM7c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1f745e7-4c2e-4231-8aee-406b36c7d83f_1556x1186.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;ve also given OpenClaw the ability to pull data from the Google Analytics API to see how all the marketing is performing and make adjustments as it goes.<br><br>I&#8217;m hoping that having access to this data helps with both improving our ad performance in optimising messaging, and our SEO through better blog posts targetting weak spots.</p><p><strong>Social Media</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f7IX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145d14e4-5892-461f-a896-e9115b777ae2_1552x1166.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f7IX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145d14e4-5892-461f-a896-e9115b777ae2_1552x1166.png 424w, https://substackcdn.com/image/fetch/$s_!f7IX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145d14e4-5892-461f-a896-e9115b777ae2_1552x1166.png 848w, https://substackcdn.com/image/fetch/$s_!f7IX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145d14e4-5892-461f-a896-e9115b777ae2_1552x1166.png 1272w, https://substackcdn.com/image/fetch/$s_!f7IX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145d14e4-5892-461f-a896-e9115b777ae2_1552x1166.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f7IX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145d14e4-5892-461f-a896-e9115b777ae2_1552x1166.png" width="1456" height="1094" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/145d14e4-5892-461f-a896-e9115b777ae2_1552x1166.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1094,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:548503,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/191596277?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145d14e4-5892-461f-a896-e9115b777ae2_1552x1166.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_!f7IX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145d14e4-5892-461f-a896-e9115b777ae2_1552x1166.png 424w, https://substackcdn.com/image/fetch/$s_!f7IX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145d14e4-5892-461f-a896-e9115b777ae2_1552x1166.png 848w, https://substackcdn.com/image/fetch/$s_!f7IX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145d14e4-5892-461f-a896-e9115b777ae2_1552x1166.png 1272w, https://substackcdn.com/image/fetch/$s_!f7IX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145d14e4-5892-461f-a896-e9115b777ae2_1552x1166.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I built a social media agent which runs daily and suggests posts for LinkedIn and X based on all our other content like the blog, product updates, reviews etc.<br><br>It then writes the posts, generates images for them using Gemini and posts them into Slack for my approval, I can either add a &#9989; emoji and the post will be published or request changes.</p><p>I think it will take a bit of time to refine the writing style of this but it seems to be working fairly reliably in the week or so I&#8217;ve had this up and running.</p><div><hr></div><p>These are just a few of the agents I&#8217;ve worked on over the last week - please do let me know if you&#8217;d like me to make tutorials or guides on how to make your own versions of these by dropping me a reply to this post.</p><p>I&#8217;m also considering releasing all of the code behind this as a starter kit as many people have been asking me about it, more on that soon.</p><p>Hopefully this gave you some ideas of new marketing agents to try out to help you day to day.  This technology is moving incredibly quickly and it can be hard to keep up but I am doing my best!<br><br>Are there any other topics you&#8217;d like me to cover? Drop me a reply, I love to hear from you!<br><br>That&#8217;s it for this week, happy building!</p><p></p>]]></content:encoded></item><item><title><![CDATA[How I Built an Automated Ad Machine With Claude Code]]></title><description><![CDATA[I built a system that generates hundreds of targeted Meta ads with Gemini, uploads them automatically, and manages the whole campaign. Here's how you can too!]]></description><link>https://www.nocodesaas.io/p/how-i-built-an-automated-ad-machine</link><guid isPermaLink="false">https://www.nocodesaas.io/p/how-i-built-an-automated-ad-machine</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 06 Mar 2026 16:57:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hOMz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff226d78f-9402-402f-aa36-6da5bacf4e5e_3594x1994.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there!<br><br>Welcome back to the NoCode SaaS newsletter, where I take you along on the ride of building a solo SaaS business without code using AI.</p><p>A few weeks ago I talked about <a href="https://www.nocodesaas.io/p/the-rise-of-the-solo-founder">the rise of the solo founder</a> and how AI is making it possible for one person to build and run an entire software business. </p><p>But building is only half the battle. The other half is increasingly tricky - getting people to actually notice what you&#8217;ve built.</p><p>Marketing has always been the hardest part for us solo founders. You can build an amazing product but if nobody knows about it, none of that matters. And traditionally, running a proper paid ad campaign meant hiring designers, copywriters, and a media buyer. Or spending weeks learning it all yourself.<br><br>As we know, building software using AI is almost trivial now.  We&#8217;re seeing thousands of new apps launch every week, the pace is quite astonishing.  </p><p>But this means that more than ever, a focus on marketing is going to be super important if you&#8217;re going to get anyone to pay attention to what you&#8217;ve built.</p><p>This week I want to show you something that has completely changed our marketing strategy. I used Claude Code to build an entire Meta ads pipeline that generates hundreds of targeted ads, creates images with AI, and uploads everything directly to Meta. <br><br>I made a <a href="https://www.tella.tv/video/ai-powered-ad-creative-generation-management-demo-778m">quick video to demo the system</a> below to give you an idea of what it does&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.tella.tv/video/ai-powered-ad-creative-generation-management-demo-778m" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hOMz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff226d78f-9402-402f-aa36-6da5bacf4e5e_3594x1994.png 424w, https://substackcdn.com/image/fetch/$s_!hOMz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff226d78f-9402-402f-aa36-6da5bacf4e5e_3594x1994.png 848w, https://substackcdn.com/image/fetch/$s_!hOMz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff226d78f-9402-402f-aa36-6da5bacf4e5e_3594x1994.png 1272w, https://substackcdn.com/image/fetch/$s_!hOMz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff226d78f-9402-402f-aa36-6da5bacf4e5e_3594x1994.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hOMz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff226d78f-9402-402f-aa36-6da5bacf4e5e_3594x1994.png" width="1456" height="808" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f226d78f-9402-402f-aa36-6da5bacf4e5e_3594x1994.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:808,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6999593,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.tella.tv/video/ai-powered-ad-creative-generation-management-demo-778m&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/190116810?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff226d78f-9402-402f-aa36-6da5bacf4e5e_3594x1994.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_!hOMz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff226d78f-9402-402f-aa36-6da5bacf4e5e_3594x1994.png 424w, https://substackcdn.com/image/fetch/$s_!hOMz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff226d78f-9402-402f-aa36-6da5bacf4e5e_3594x1994.png 848w, https://substackcdn.com/image/fetch/$s_!hOMz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff226d78f-9402-402f-aa36-6da5bacf4e5e_3594x1994.png 1272w, https://substackcdn.com/image/fetch/$s_!hOMz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff226d78f-9402-402f-aa36-6da5bacf4e5e_3594x1994.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://www.tella.tv/video/ai-powered-ad-creative-generation-management-demo-778m&quot;,&quot;text&quot;:&quot;Watch the demo video&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.tella.tv/video/ai-powered-ad-creative-generation-management-demo-778m"><span>Watch the demo video</span></a></p><p>For the <a href="https://createwith.com">Create With Conference</a> we&#8217;re currently running around 250 different ads, way more than we&#8217;ve ever been able to make before.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hNt6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ba8905-17dc-484d-8d89-306f6cb0dbdc_3036x1958.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hNt6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ba8905-17dc-484d-8d89-306f6cb0dbdc_3036x1958.png 424w, https://substackcdn.com/image/fetch/$s_!hNt6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ba8905-17dc-484d-8d89-306f6cb0dbdc_3036x1958.png 848w, https://substackcdn.com/image/fetch/$s_!hNt6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ba8905-17dc-484d-8d89-306f6cb0dbdc_3036x1958.png 1272w, https://substackcdn.com/image/fetch/$s_!hNt6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ba8905-17dc-484d-8d89-306f6cb0dbdc_3036x1958.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hNt6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ba8905-17dc-484d-8d89-306f6cb0dbdc_3036x1958.png" width="1456" height="939" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3ba8905-17dc-484d-8d89-306f6cb0dbdc_3036x1958.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:939,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7673185,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/190116810?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ba8905-17dc-484d-8d89-306f6cb0dbdc_3036x1958.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_!hNt6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ba8905-17dc-484d-8d89-306f6cb0dbdc_3036x1958.png 424w, https://substackcdn.com/image/fetch/$s_!hNt6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ba8905-17dc-484d-8d89-306f6cb0dbdc_3036x1958.png 848w, https://substackcdn.com/image/fetch/$s_!hNt6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ba8905-17dc-484d-8d89-306f6cb0dbdc_3036x1958.png 1272w, https://substackcdn.com/image/fetch/$s_!hNt6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ba8905-17dc-484d-8d89-306f6cb0dbdc_3036x1958.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A small sample of some of the hundreds of ads generated for the Create With Conference by my Claude Code Ad Machine</figcaption></figure></div><p>The interesting thing is that some of the ads that are now performing the best are ones I would never have come up with myself. Personas and angles I wouldn&#8217;t have considered. </p><p>That&#8217;s the real power of this approach. Being able to create so many different creatives gives Meta&#8217;s algorithms the chance to really experiment and discover which messages are actually getting customers interested.  When previously we were only running a handful of fairly generic ads we wern&#8217;t learning much about what our audience actually wanted.</p><p>This is the first in a series of posts I&#8217;m planning on <em><a href="https://en.wikipedia.org/wiki/Go-to-market_strategy">go-to-market (GTM)</a></em> with AI. </p><p>We&#8217;ll be covering social media, Google Ads, X, TikTok, all orchestrated through Claude Code. </p><p>I&#8217;ve also been using Claude Code increasingly to handle other operational stuff. Like automatically generating and updating documentation for my apps. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/jamesdevonport/status/2026957540865499488" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C8Uw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59df5245-0cfc-405f-8368-0cd269d310d0_1196x1456.png 424w, https://substackcdn.com/image/fetch/$s_!C8Uw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59df5245-0cfc-405f-8368-0cd269d310d0_1196x1456.png 848w, https://substackcdn.com/image/fetch/$s_!C8Uw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59df5245-0cfc-405f-8368-0cd269d310d0_1196x1456.png 1272w, https://substackcdn.com/image/fetch/$s_!C8Uw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59df5245-0cfc-405f-8368-0cd269d310d0_1196x1456.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C8Uw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59df5245-0cfc-405f-8368-0cd269d310d0_1196x1456.png" width="348" height="423.6521739130435" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/59df5245-0cfc-405f-8368-0cd269d310d0_1196x1456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1196,&quot;resizeWidth&quot;:348,&quot;bytes&quot;:553194,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/jamesdevonport/status/2026957540865499488&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/190116810?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59df5245-0cfc-405f-8368-0cd269d310d0_1196x1456.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_!C8Uw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59df5245-0cfc-405f-8368-0cd269d310d0_1196x1456.png 424w, https://substackcdn.com/image/fetch/$s_!C8Uw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59df5245-0cfc-405f-8368-0cd269d310d0_1196x1456.png 848w, https://substackcdn.com/image/fetch/$s_!C8Uw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59df5245-0cfc-405f-8368-0cd269d310d0_1196x1456.png 1272w, https://substackcdn.com/image/fetch/$s_!C8Uw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59df5245-0cfc-405f-8368-0cd269d310d0_1196x1456.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I posted a <a href="https://x.com/jamesdevonport/status/2026957540865499488">tweet showing an example of this recently</a>. It&#8217;s a small thing but it just shows how much of the day-to-day running of a business you can hand off to AI, manually updating documentation used to take me hours.  Now Claude spins up a browser, uses the app, annotates the screenshots and updates my helpdesk for me! I&#8217;ll cover this in a future edition.<br><br><a href="https://luma.com/pgmh0c51">I&#8217;m going to be doing a live build of this ad machine on a Create With on Monday 16th March, you can register here, it&#8217;s free! </a></p><p>So lets get into building our automated Ads AI machine using Claude Code!</p><h2>Before You Start</h2><p>This is going to be a bit different to my usual tutorials. We&#8217;re going to be building a proper project with Claude Code. If this is your first time doing something like this, don&#8217;t worry. </p><p>The whole point is that Claude does the heavy lifting. You just need to describe what you want clearly (this is such an important skill now)</p><p>There are a few things you&#8217;ll need to set up first that will make following the tutorial much easier.</p><p><strong><a href="https://claude.ai/upgrade">A Claude Pro subscription</a>.</strong> You&#8217;ll need the $20/month plan or above to use Claude Code.  <em>I have 3 free guest passes to give away, so if you don&#8217;t currently have a subscription and would like a free week of Claude Code drop me a reply to this email and I&#8217;ll send over the link, first come first served!</em></p><p><strong>A Meta developer account and API access.</strong> This is the bit that takes the most time to set up but it&#8217;s not difficult. You need to:</p><ol><li><p>Go to <a href="https://developers.facebook.com">developers.facebook.com</a> and create an app. Choose &#8220;Other&#8221; as the use case and &#8220;Business&#8221; as the type.</p></li><li><p>Add the Marketing API product to your app.</p></li><li><p>Find your Ad Account ID. Go to your Meta Ads Manager, look in the URL bar, and you&#8217;ll see a number after <code>act=</code>. That&#8217;s your Ad Account ID.</p></li><li><p>Find your Business ID. Go to Meta Business Settings and grab it from the URL or the business info section, I just pasted in this entire URL to Claude and it picked out the info it needed.</p></li><li><p>Generate an access token. In your app dashboard, go to Marketing API &gt; Tools, select all the <code>ads_management</code> and <code>ads_read</code> permissions, and generate a token. Important: these tokens expire after about 60 days so you&#8217;ll need to regenerate them occasionally.</p></li></ol><p><strong>A Google Gemini API key.</strong> We&#8217;re using Gemini to generate the ad images. Head to <a href="https://aistudio.google.com">aistudio.google.com</a>, sign in with your Google account, and generate an API key. </p><p>I&#8217;m going to recommend using the <em>gemini-3.1-flash-image-preview </em>model to generate the ads which you will need a bit of credit to use.</p><p><strong>Node.js installed on your computer.</strong> You&#8217;ll need version 18 or newer. If you don&#8217;t have it, just search for &#8220;install Node.js&#8221; and follow the instructions for your operating system or ask Claude to do it for you, it should be able to handle everything.</p><p>Once you&#8217;ve got all of that sorted, you&#8217;re good to go!</p><h2>How It Works</h2><p>The system has three layers and it&#8217;s really quite a simple approach.</p><p><strong>Layer 1: Your brand file.</strong> This is a single file that contains everything about your brand. Your colours, fonts, product name, screenshots, key messages, target audience. Everything. It&#8217;s the single source of truth that the whole system references. <br><br>Every ad it generates will be on-brand because it all pulls from this one file.  You can chat back and forth with Claude to set this up, to start with I just told Claude my brand colours, logos and fonts and that was enough to get started.  </p><p>You could also suggest Claude scrapes your marketing site and it could probably pick most of this up itself.</p><p><strong>Layer 2: The creative matrix.</strong> This is where we work out what your ad angles and personas.  If you already know what messaging you want to use you directly tell Claude what you&#8217;d like (the key messages or features you want to promote), your personas (the different types of people you want to reach), and your styles (the visual approaches for the ads). <br><br>If you&#8217;re not sure about how to build up the personas, just ask Claude what it recommends based on your brand.<br><br>Claude Code then generates every combination. So if you have 7 topics, 5 personas, and 4 styles, that&#8217;s 140 unique ads. Each one targeted to a specific person with a specific message in a specific visual style.</p><p><strong>Layer 3: The upload pipeline.</strong> This handles talking to the Meta API. It takes your generated images, uploads them to Meta, creates the ad creatives with the right copy, and organises everything into campaigns and ad sets. The whole thing is automated.</p><h2>Building It Step by Step</h2><p>First of all don&#8217;t panic if you&#8217;re not technical! You don&#8217;t need to understand any of the code. You&#8217;re going to describe what you want to Claude Code and let it build everything for you, and then you&#8217;re just going to run it locally on your own machine.</p><p>I&#8217;ll give you the prompts I used at each stage.<br><br>I&#8217;m going to assume you&#8217;re starting in an empty project with no files, a blank slate.</p><h3>Step 1: Set Up Your Project</h3><p>Open Claude Code and start with this prompt:</p><p><em>&#8220;Create a new Node.js TypeScript project for generating Meta ads. Set up the project structure with folders for source code, generated images, and configuration. Install the dependencies we&#8217;ll need: the Google Generative AI SDK for image generation, dotenv for environment variables, and tsx for running TypeScript directly.&#8221;</em></p><p>Claude will create the project, set up the folder structure, and install everything you need. </p><p>It&#8217;ll also create a <code>.env</code> file where you&#8217;ll paste in your API keys, remember to keep these safe! </p><p>Go ahead and add your Gemini API key, Meta access token, Ad Account ID, and Business ID to that file.<br><br>You can then ask Claude to do a quick check to see if all the keys are working properly before proceeding.</p><h3>Step 2: Create Your Brand File</h3><p>This is the foundation of the whole system. Prompt Claude:</p><p><em>&#8220;Create a brand constants file that defines everything about my brand. I need sections for colours (primary, secondary, accent, background), fonts, my product/company name, tagline, key selling points, and target audience descriptions. Also define the ad formats we&#8217;ll be generating, like square for Instagram feed and portrait for Stories.&#8221;</em></p><p>Then customise it with your actual brand details, put your logo files etc into this folder. Tell Claude your colours, your product name, who your audience is. The more detail you put in here the better your ads will come out.<br><br>As I mentioned before, you could let Claude just crawl your marketing site if you like to populate this.</p><h3>Step 3: Build the Creative Matrix</h3><p>This is where you define what ads to generate. Prompt Claude:</p><p><em>&#8220;Create a creative matrix system. I want to define topics (key messages I want to promote), personas (different audience types I&#8217;m targeting), and visual styles for the ads. Then build a function that generates every combination of topic &#215; persona &#215; style. Each combination should include a description of the image to generate and the ad copy to use.&#8221;</em></p><p>For Create With, our topics included things like &#8220;AI is transforming how we build software&#8221; and &#8220;learn to build without code.&#8221; </p><p>My personas were indie hackers, product managers, career changers, startup founders, and agency owners. </p><p>And our styles ranged from bold typography to lifestyle photography to abstract tech visuals.</p><p>You can start small. Even 3 topics, 3 personas, and 2 styles gives you 18 unique ads. That&#8217;s already way more than most people run.</p><h3>Step 4: Generate Your Ad Images</h3><p>Now the fun bit. Prompt Claude:</p><p><em>&#8220;Build an image generation script that takes entries from the creative matrix, converts them into detailed prompts using our brand constants, and sends them to the Gemini API to generate images. Save each image as a PNG with a descriptive filename. Include a progress display so I can see what&#8217;s being generated.&#8221;</em></p><p>Claude will build a script that loops through your matrix, crafts a detailed prompt for each ad (including your brand colours, fonts, style requirements), sends it to Gemini, and saves the results. </p><p>You&#8217;ll end up with a folder full of AI-generated ad images, all on-brand.</p><p><em>One tip here. Gemini is really good at generating ads but you want to be specific in your brand spec about things like &#8220;no text in the image&#8221; or &#8220;always include the brand colours prominently.&#8221; The more specific you are, the better the results.</em></p><h3>Step 5: Review Your Ads</h3><p>You&#8217;re going to have loads of images now and not all of them will be great. Prompt Claude:</p><p><em>&#8220;Build a simple local gallery web page that shows all the generated images in a grid. Include a delete button on each one so I can quickly remove any ads I don&#8217;t want to use. Group them by topic and persona so I can see the full range.&#8221;</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w1Pa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50156490-4fa6-4a80-b946-982e77f45121_3824x2482.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w1Pa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50156490-4fa6-4a80-b946-982e77f45121_3824x2482.png 424w, https://substackcdn.com/image/fetch/$s_!w1Pa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50156490-4fa6-4a80-b946-982e77f45121_3824x2482.png 848w, https://substackcdn.com/image/fetch/$s_!w1Pa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50156490-4fa6-4a80-b946-982e77f45121_3824x2482.png 1272w, https://substackcdn.com/image/fetch/$s_!w1Pa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50156490-4fa6-4a80-b946-982e77f45121_3824x2482.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w1Pa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50156490-4fa6-4a80-b946-982e77f45121_3824x2482.png" width="1456" height="945" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50156490-4fa6-4a80-b946-982e77f45121_3824x2482.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:945,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5550732,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/190116810?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50156490-4fa6-4a80-b946-982e77f45121_3824x2482.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_!w1Pa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50156490-4fa6-4a80-b946-982e77f45121_3824x2482.png 424w, https://substackcdn.com/image/fetch/$s_!w1Pa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50156490-4fa6-4a80-b946-982e77f45121_3824x2482.png 848w, https://substackcdn.com/image/fetch/$s_!w1Pa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50156490-4fa6-4a80-b946-982e77f45121_3824x2482.png 1272w, https://substackcdn.com/image/fetch/$s_!w1Pa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50156490-4fa6-4a80-b946-982e77f45121_3824x2482.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This is what the preview screen for the UserLoop app ads I generated looks like</figcaption></figure></div><p>Claude will spin up a little local web server with a gallery page. </p><p>You open it in your browser, scroll through all your ads, and delete the ones that aren&#8217;t up to scratch. I usually keep about 70 to 80% of what Gemini generates. The quality is genuinely impressive with this latest model.</p><h3>Step 6: Upload to Meta</h3><p>This is the bit that saves you the most time. Prompt Claude:</p><p><em>&#8220;Build a Meta Ads upload pipeline using the Graph API v21.0. It should upload each image to my ad account, create ad creatives with rotating copy from our brand file, then organise everything into a campaign with ad sets grouped by persona. Use Campaign Budget Optimization so Meta can automatically shift budget to the best performing ads. Enable Advantage+ creative optimizations.&#8221;</em></p><p>Claude will build the entire upload pipeline. It creates the campaign, sets up ad sets for each persona group, uploads all your images, attaches the copy, and sets the targeting.  You&#8217;ll also need to say what kind of campaign you&#8217;d like, eg send traffic to our landing page https://createwith.com/conference.</p><p>You tell it your daily budget and it handles the rest.</p><p>And there&#8217;s rate limiting so Claude will need to add small delays between API calls. But honestly, Claude Code handles all of this really well, it can take a bit of time if you have hundreds of ads as it will need to space out it&#8217;s requests to the Meta API.</p><p></p><h3>Step 7: Monitor Performance</h3><p>Once your ads are running, you want to know what&#8217;s working. Prompt Claude:</p><p><em>&#8220;Build a performance monitoring script that pulls daily stats from the Meta API for my campaign. Show me impressions, clicks, click-through rate, cost per click, and spend for each ad. Sort by best performing so I can see what&#8217;s working.&#8221;</em></p><p>This gives you a nice daily report you can run from the command line, this really impressed me.</p><p>As I mentioned earlier, the ads that are performing best for Create With are ones I would never have created manually. Different angles, different personas, different visual approaches. </p><p>The matrix approach means you&#8217;re testing so many more variations than a human (well a solo founder anyway!) would ever bother  to create. And Meta&#8217;s algorithm is really good at figuring out which ones resonate.</p><h2>The Results</h2><p>We&#8217;re currently running about 200 ads for Create With Conference through this system. The whole thing was built in a weekend. </p><p>Previously this kind of campaign would have required a designer, a copywriter, and someone managing the Meta Ads account. Now it&#8217;s just me and Claude Code.</p><p>The most surprising result has been discovering which ads actually convert. I had assumptions about what messaging would work and which personas would respond. I was wrong about a lot of it. </p><p>The matrix approach surfaces winning combinations you&#8217;d never think to try. </p><h2>What&#8217;s Coming Next</h2><p>This is just the beginning of a series on go-to-market with AI. </p><p>In the next few editions I&#8217;m going to cover using the same matrix approach for social media content generation, expanding to Google Ads, X, and TikTok using the same pipeline, and building a unified marketing dashboard that monitors everything in one place. </p><p>The vision is a solo founder running a full-scale marketing operation across every major channel, all orchestrated through Claude Code. </p><p>A marketing team of AI agents!<br><br><strong>Create With Conference 2026</strong></p><p>If any of this stuff excites you, <a href="https://createwith.com">Create With Conference</a> on June 25th in Brighton this year is for you. Live coding with AI, building and marketing as a solo founder, and the future of no-code and AI. It&#8217;s going to be brilliant and I&#8217;d love to see you there.</p><p>That&#8217;s it for this week! If you try building your own ad pipeline I&#8217;d love to hear how it goes. Just hit reply and let me know.</p><p><a href="https://luma.com/pgmh0c51">Don&#8217;t forget if you&#8217;d like to join the Live session and follow along me building this system in realtime register here.</a></p><p>Happy building!</p><p>James</p><p><strong>P.S.</strong> Advance tickets for Create With Conference are still available at https://luma.com/createwith26. Grab yours before they&#8217;re gone!</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.nocodesaas.io/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[I Got Claude Code to Build My Entire SEO Strategy]]></title><description><![CDATA[How two free tools gave Claude Code the power to research keywords, analyse competitors and hand me a content plan in 20 minutes.]]></description><link>https://www.nocodesaas.io/p/i-got-claude-code-to-build-my-entire</link><guid isPermaLink="false">https://www.nocodesaas.io/p/i-got-claude-code-to-build-my-entire</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 06 Feb 2026 19:07:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Pq_a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c5d0da-ff40-475e-a68e-91101bde8d08_2752x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there!</p><p>Welcome back to NoCode SaaS. This is the newsletter where I take you along for the ride of building and scaling a software business without code using AI. </p><p>This week I want to show you something that felt like magic when I first tried it.</p><p>I got Claude Code to build me an entire SEO strategy. It researched my competitors, analysed keywords, looked at what content is ranking, and came back with a prioritised plan of exactly what pages I should add to my website to improve my search rankings. </p><p>All backed by real data. And it took about 20 minutes!</p><p>But before I get into how I did it, I want to talk about why I think this stuff matters so much right now.</p><h2>The Shift That&#8217;s Happening</h2><p>No-code made building software easy. AI is making it even easier.</p><p>When anyone can spin up an app in a weekend, the hard part isn&#8217;t building anymore. It&#8217;s getting people to notice what you&#8217;ve built.</p><p>Capturing attention is becoming the most important skill for indie founders. Marketing is the bottleneck now.</p><p>If I&#8217;m being honest, marketing is my least favourite thing to do. I&#8217;d much rather be building features than writing blog posts or figuring out SEO. But as a solo founder, you don&#8217;t get to just ignore it.</p><p>So the holy grail for me is getting Claude Code to help run marketing autonomously. </p><p>I want a <a href="https://www.nocodesaas.io/p/ai-agents-building-the-self-driving">marketing team of agents</a> instead of a bunch of employees I have to manage. A team that can help me grow my app without needing to hire anyone. I&#8217;ve been actively experimenting with ways to do this using Claude Code and tools like <a href="https://openclaw.ai/">OpenClaw</a>.</p><p>MCPs are a big part of that story. They&#8217;re how you give Claude Code the ability to actually do things. Research keywords. Check rankings. Analyse competitors. Post content. All of it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Pq_a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c5d0da-ff40-475e-a68e-91101bde8d08_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Pq_a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c5d0da-ff40-475e-a68e-91101bde8d08_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Pq_a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c5d0da-ff40-475e-a68e-91101bde8d08_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Pq_a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c5d0da-ff40-475e-a68e-91101bde8d08_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Pq_a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c5d0da-ff40-475e-a68e-91101bde8d08_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Pq_a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c5d0da-ff40-475e-a68e-91101bde8d08_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64c5d0da-ff40-475e-a68e-91101bde8d08_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8740868,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/187095996?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c5d0da-ff40-475e-a68e-91101bde8d08_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Pq_a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c5d0da-ff40-475e-a68e-91101bde8d08_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Pq_a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c5d0da-ff40-475e-a68e-91101bde8d08_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Pq_a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c5d0da-ff40-475e-a68e-91101bde8d08_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Pq_a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c5d0da-ff40-475e-a68e-91101bde8d08_2752x1536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you haven&#8217;t tried <a href="https://claude.ai/code">Claude Code</a> yet, or you&#8217;ve been intimidated by it, this is a really good way in. It&#8217;s pretty easy to set up. You don&#8217;t need to be technical.</p><p>I&#8217;ll walk you through the whole thing step by step below. And by the end you&#8217;ll have something genuinely useful - an AI-generated SEO plan based on real data.</p><p>Over the next few months I&#8217;m going to cover a lot of the MCPs and tools I&#8217;m using in Claude Code (and remember, I&#8217;m not a developer!)</p><p>They&#8217;re giving it capabilities we couldn&#8217;t have even imagined last year for building software. This week we&#8217;re starting with two that completely changed how I think about SEO.</p><h2>What Are MCPs?</h2><p>MCP stands for Model Context Protocol. But you don&#8217;t really need to remember that. Just think of them as tools you give to Claude Code that it can decide when and how to use. You can read more about <a href="https://modelcontextprotocol.io/introduction">MCPs in the official documentation</a>.</p><p>Here&#8217;s what makes them different from something like a Bubble plugin or an API connection. With those, you&#8217;re in control. You set up the connection, you decide when it fires, you tell it exactly what to do.</p><p>With MCPs, you&#8217;re giving Claude Code a capability and letting it figure out when to use it. You say &#8220;I want an SEO strategy for my website&#8221; and Claude decides: okay, I need to crawl the site first, then I need to research keywords, then I need to compare them. It picks the right tools for the job and chains them together.</p><p>I really realised Claude Code was an unbelievable tool once I added the <a href="https://supabase.com/docs/guides/getting-started/mcp">Supabase MCP</a>. I&#8217;ve <a href="https://www.nocodesaas.io/p/build-your-own-ai-powered-database">written about Supabase before</a>, but this really suprised me with just how easy it made things. </p><p>I was working on a project and Claude just went off and completely configured the database for me. Set up the tables, configured the security rules, linked it all up to my project. </p><p>It was amazing to watch it work.</p><p>Claude Code on its own is incredibly clever. But it can&#8217;t see the full web. It can&#8217;t check how your site is ranking on Google. It can&#8217;t browse your competitors&#8217; websites. It can&#8217;t update your database. MCPs unlock all of that.</p><p>The really nice thing is that setting them up is way easier than you&#8217;d think. Most of the time you&#8217;re just adding a line to a config file. No coding required. I&#8217;ll show you exactly how below.</p><h2>The Two MCPs I Used</h2><p><em>For this SEO project I used two different MCPs together.</em> </p><p><strong>Playwright</strong></p><p><a href="https://github.com/microsoft/playwright-mcp">Playwright</a> is an MCP that gives Claude Code a real browser it can control. It can visit websites, click around, read content, basically do anything you can do in Chrome.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QuvD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a085348-599d-4f1c-aa06-05da8c5dd30f_2716x1834.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QuvD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a085348-599d-4f1c-aa06-05da8c5dd30f_2716x1834.png 424w, https://substackcdn.com/image/fetch/$s_!QuvD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a085348-599d-4f1c-aa06-05da8c5dd30f_2716x1834.png 848w, https://substackcdn.com/image/fetch/$s_!QuvD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a085348-599d-4f1c-aa06-05da8c5dd30f_2716x1834.png 1272w, https://substackcdn.com/image/fetch/$s_!QuvD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a085348-599d-4f1c-aa06-05da8c5dd30f_2716x1834.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QuvD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a085348-599d-4f1c-aa06-05da8c5dd30f_2716x1834.png" width="1456" height="983" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a085348-599d-4f1c-aa06-05da8c5dd30f_2716x1834.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:983,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:630974,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/187095996?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a085348-599d-4f1c-aa06-05da8c5dd30f_2716x1834.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_!QuvD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a085348-599d-4f1c-aa06-05da8c5dd30f_2716x1834.png 424w, https://substackcdn.com/image/fetch/$s_!QuvD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a085348-599d-4f1c-aa06-05da8c5dd30f_2716x1834.png 848w, https://substackcdn.com/image/fetch/$s_!QuvD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a085348-599d-4f1c-aa06-05da8c5dd30f_2716x1834.png 1272w, https://substackcdn.com/image/fetch/$s_!QuvD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a085348-599d-4f1c-aa06-05da8c5dd30f_2716x1834.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Claude Code using Playwright to scrape this blog&#8217;s content.  It&#8217;s not as complicated as it first looks!</figcaption></figure></div><p>I used it to fetch my entire website. Claude visited every page on my site, grabbed all the content, saved it to markdown files, downloaded the images, and built a complete local copy of my site structure. By the end of it, Claude had full context of everything I&#8217;ve already published. Every blog post, every landing page, sitemaps etc.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j1LI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26b01bcd-b3eb-44f6-a618-0aa24f8c0eae_2804x1922.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j1LI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26b01bcd-b3eb-44f6-a618-0aa24f8c0eae_2804x1922.png 424w, https://substackcdn.com/image/fetch/$s_!j1LI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26b01bcd-b3eb-44f6-a618-0aa24f8c0eae_2804x1922.png 848w, https://substackcdn.com/image/fetch/$s_!j1LI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26b01bcd-b3eb-44f6-a618-0aa24f8c0eae_2804x1922.png 1272w, https://substackcdn.com/image/fetch/$s_!j1LI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26b01bcd-b3eb-44f6-a618-0aa24f8c0eae_2804x1922.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j1LI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26b01bcd-b3eb-44f6-a618-0aa24f8c0eae_2804x1922.png" width="1456" height="998" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/26b01bcd-b3eb-44f6-a618-0aa24f8c0eae_2804x1922.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:998,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1017048,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/187095996?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26b01bcd-b3eb-44f6-a618-0aa24f8c0eae_2804x1922.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_!j1LI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26b01bcd-b3eb-44f6-a618-0aa24f8c0eae_2804x1922.png 424w, https://substackcdn.com/image/fetch/$s_!j1LI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26b01bcd-b3eb-44f6-a618-0aa24f8c0eae_2804x1922.png 848w, https://substackcdn.com/image/fetch/$s_!j1LI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26b01bcd-b3eb-44f6-a618-0aa24f8c0eae_2804x1922.png 1272w, https://substackcdn.com/image/fetch/$s_!j1LI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26b01bcd-b3eb-44f6-a618-0aa24f8c0eae_2804x1922.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">All the scraped content gets saved into a folder as markdown files.</figcaption></figure></div><p>This is important because Claude needs to know what content you already have before it can tell you what&#8217;s missing.</p><p><strong>SerpAPI</strong></p><p>This is the star of the show. <a href="https://serpapi.com/">SerpAPI</a> gives Claude Code access to live search engine data. And I mean everything&#8230; Google search results, autocomplete suggestions, related keywords, what your competitors are ranking for, news results, shopping results. </p><p>Basically all the stuff you&#8217;d normally pay hundreds of pounds a month for with tools like Ahrefs or SEMrush.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B5b4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ef5ded-c262-4885-bc24-d8a69f81fdc5_2804x1922.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B5b4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ef5ded-c262-4885-bc24-d8a69f81fdc5_2804x1922.png 424w, https://substackcdn.com/image/fetch/$s_!B5b4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ef5ded-c262-4885-bc24-d8a69f81fdc5_2804x1922.png 848w, https://substackcdn.com/image/fetch/$s_!B5b4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ef5ded-c262-4885-bc24-d8a69f81fdc5_2804x1922.png 1272w, https://substackcdn.com/image/fetch/$s_!B5b4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ef5ded-c262-4885-bc24-d8a69f81fdc5_2804x1922.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B5b4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ef5ded-c262-4885-bc24-d8a69f81fdc5_2804x1922.png" width="1456" height="998" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9ef5ded-c262-4885-bc24-d8a69f81fdc5_2804x1922.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:998,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:970389,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/187095996?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ef5ded-c262-4885-bc24-d8a69f81fdc5_2804x1922.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_!B5b4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ef5ded-c262-4885-bc24-d8a69f81fdc5_2804x1922.png 424w, https://substackcdn.com/image/fetch/$s_!B5b4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ef5ded-c262-4885-bc24-d8a69f81fdc5_2804x1922.png 848w, https://substackcdn.com/image/fetch/$s_!B5b4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ef5ded-c262-4885-bc24-d8a69f81fdc5_2804x1922.png 1272w, https://substackcdn.com/image/fetch/$s_!B5b4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9ef5ded-c262-4885-bc24-d8a69f81fdc5_2804x1922.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Claude Code using the SerpAPI MCP to do the keyword research</figcaption></figure></div><p>They have a free tier which is more than enough to test this out and see if it&#8217;s useful for you. And setting it up is super simple. You literally just add a URL to your Claude Code config with your API key in it. That&#8217;s it.</p><p>Once it&#8217;s connected, you can just ask Claude things like &#8220;what keywords could my site rank for?&#8221; or &#8220;what are my competitors ranking for that I&#8217;m not?&#8221; and it will go off and actually research it using real search data.</p><h2>How To Set This Up (Step by Step)</h2><p>Here&#8217;s exactly how to get this working. It&#8217;s easier than you&#8217;d think.</p><p><strong>Step 1: Get Claude Code Running</strong></p><p>If you don&#8217;t already have Claude Code installed, head to <a href="https://claude.ai/code">claude.ai/code</a> and follow the setup instructions. You&#8217;ll need a Claude Pro or Max subscription.</p><p>Once it&#8217;s installed, open your terminal and type</p><p> <code>claude</code> to start it up.<br></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6zhK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01aaa387-2fad-4313-820f-2c35969a0102_2804x1922.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6zhK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01aaa387-2fad-4313-820f-2c35969a0102_2804x1922.png 424w, https://substackcdn.com/image/fetch/$s_!6zhK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01aaa387-2fad-4313-820f-2c35969a0102_2804x1922.png 848w, https://substackcdn.com/image/fetch/$s_!6zhK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01aaa387-2fad-4313-820f-2c35969a0102_2804x1922.png 1272w, https://substackcdn.com/image/fetch/$s_!6zhK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01aaa387-2fad-4313-820f-2c35969a0102_2804x1922.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6zhK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01aaa387-2fad-4313-820f-2c35969a0102_2804x1922.png" width="1456" height="998" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01aaa387-2fad-4313-820f-2c35969a0102_2804x1922.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:998,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:670936,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/187095996?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01aaa387-2fad-4313-820f-2c35969a0102_2804x1922.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_!6zhK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01aaa387-2fad-4313-820f-2c35969a0102_2804x1922.png 424w, https://substackcdn.com/image/fetch/$s_!6zhK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01aaa387-2fad-4313-820f-2c35969a0102_2804x1922.png 848w, https://substackcdn.com/image/fetch/$s_!6zhK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01aaa387-2fad-4313-820f-2c35969a0102_2804x1922.png 1272w, https://substackcdn.com/image/fetch/$s_!6zhK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01aaa387-2fad-4313-820f-2c35969a0102_2804x1922.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Step 2: Install the Playwright MCP</strong></p><p>In your terminal, run this command:</p><pre><code><code>claude mcp add playwright -- npx @anthropic-ai/mcp-server-playwright
</code></code></pre><p>That&#8217;s it. Playwright is now connected to Claude Code. </p><p><strong>Step 3: Set Up SerpAPI</strong></p><p>First, head to <a href="https://serpapi.com/">serpapi.com</a> and create a free account. Once you&#8217;re in, grab your API key from the dashboard.</p><p>Now add the SerpAPI MCP to Claude Code. The easiest way is to use their hosted version. Run this command, replacing YOUR_API_KEY with your actual key:</p><pre><code><code>claude mcp add serpapi --url https://mcp.serpapi.com/YOUR_API_KEY/mcp
</code></code></pre><p>You can find more details on the <a href="https://serpapi.com/blog/integrating-serpapi-mcp-into-your-developer-workflow/">SerpAPI MCP integration page</a>.</p><p><strong>Step 4: Verify Your MCPs Are Connected</strong></p><p>You can check that both MCPs are working by asking Claude Code to list its available tools. Just type:</p><pre><code><code>What MCPs do you have access to?
</code></code></pre><p>You should see both Playwright and SerpAPI listed.</p><p><strong>Step 5: Run the SEO Analysis</strong></p><p>Now for the fun part. Here&#8217;s the prompt I used to kick off the whole workflow:</p><pre><code><code>I want you to help me create an SEO content strategy for my website [YOUR WEBSITE URL].

First, use Playwright to crawl my website and save all the content to markdown files locally. I want you to understand what topics I've already covered.

Then use SerpAPI to research keywords in my niche. Look at what's ranking, what questions people are asking, and what my competitors are covering.

Finally, compare my existing content against the opportunities you find. Give me a prioritised list of new pages I should create, with the keyword, estimated search volume, and why I have a chance of ranking.
</code></code></pre><p>Claude will take a few minutes to crawl your site and run the keyword research. You&#8217;ll see it working through everything in the terminal.</p><p>And that&#8217;s it. You&#8217;ll get back a full SEO content plan based on real search data.</p><p>The next step is to get Claude Code to actually implement it&#8217;s recommendations and make all the SEO improvements itself, I&#8217;ll cover this in the future.</p><h2>Coming Up: More MCPs</h2><p>This is just the start. Over the next few months I&#8217;m going to cover the MCPs that have become essential to how I build:</p><p><strong><a href="https://github.com/supabase-community/supabase-mcp">Supabase</a></strong> for database operations directly from Claude Code. Super useful for setting up backends and managing data. If you&#8217;ve read my previous posts on <a href="https://www.nocodesaas.io/p/supercharge-your-bubble-app-with">Supabase + Bubble</a>, you&#8217;ll love what the MCP can do.</p><p><strong><a href="https://apify.com/">Apify</a></strong> for web scraping and automation at scale. When Playwright isn&#8217;t enough and you need to scrape thousands of pages. I&#8217;ve covered <a href="https://www.nocodesaas.io/p/bubble-scraper-api-apify-instagram-x-youtube">using Apify with Bubble before</a> but the MCP integration is even more powerful.</p><p><strong><a href="https://context7.com/">Context7</a></strong> which gives Claude Code access to always up-to-date documentation for basically every API out there. Game changer for building integrations.</p><p><strong><a href="https://github.com/makenotion/notion-mcp-server">Notion</a></strong> to connect your docs and knowledge base. Let Claude read and write to your Notion workspace.</p><p><strong><a href="https://vercel.com/">Vercel</a></strong> to deploy straight from Claude Code. Build something and ship it without leaving the terminal.</p><p>Each one unlocks new capabilities. I&#8217;ll show you how I&#8217;m actually using them in real projects.</p><h2>One More Thing: Bubble + Claude Code</h2><p>Speaking of MCPs, this is exciting news for the Bubble community.</p><p>George Collier just announced <a href="https://buildprint.dev/">Buildprint 2.0</a> which connects your Bubble app directly to Claude Code. And Cursor, ChatGPT, and other AI tools.</p><p>It gives AI access to your Bubble logic, data, and logs. It can pull tickets from your project management tool, trace issues through real workflow runs, generate documentation, explain how systems work, and plan new features. And soon it&#8217;s going to be able to implement changes for you.</p><p>This is exactly the direction I&#8217;ve been talking about, it&#8217;s so exciting to see agentic tools appearing for platforms like Bubble as well as code first platforms.</p><p>Check out George&#8217;s announcement here: </p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/george_nqu/status/2019334939255230492?s=20&quot;,&quot;full_text&quot;:&quot;We work on some of the most complex Bubble apps out there - and debugging them gets painful fast.\n\nBubble&#8217;s AI isn&#8217;t built for real apps with real logic, data, and bugs.\n\nToday, Buildprint 2.0 is back in exclusive early access.\n\nBuildprint connects your Bubble app to Claude Code, &quot;,&quot;username&quot;:&quot;george_nqu&quot;,&quot;name&quot;:&quot;George Collier&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1991888696912605184/fLsisg5g_normal.jpg&quot;,&quot;date&quot;:&quot;2026-02-05T08:59:01.000Z&quot;,&quot;photos&quot;:[{&quot;img_url&quot;:&quot;https://pbs.substack.com/media/HAYebJnWcAAaaDE.jpg&quot;,&quot;link_url&quot;:&quot;https://t.co/7687bUQJ8v&quot;}],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:43,&quot;retweet_count&quot;:0,&quot;like_count&quot;:21,&quot;impression_count&quot;:1496,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><h2>Wrapping Up</h2><p>The tools are evolving so fast. Six months ago I couldn&#8217;t have imagined having Claude Code research my SEO strategy for me. Now it&#8217;s something I can set up in an afternoon.</p><p>If you&#8217;re not experimenting with this stuff yet, now&#8217;s the time to start. And if the SEO angle isn&#8217;t your thing, stick around for the upcoming MCP tutorials. There&#8217;s going to be something useful for everyone.<br><br>I rebuilt my <a href="https://jamesdevonport.com">entire personal website</a> this week in Claude Code, so I can cover how to build marketing sites in the future from start to finish if you&#8217;re interested in that, let me know.</p><p>That&#8217;s it for this week! I&#8217;d love to hear if you try this out. Just hit reply and let me know how it goes.</p><p>Happy building!</p><p>James</p><p><strong>P.S.</strong> <a href="https://createwith.com/">Create With Conference</a> Advance tickets are still available. We&#8217;re going to be covering a lot of this stuff in person. Live coding with AI, MCPs, the whole lot. <a href="https://www.createwith.com/">Grab your ticket here.</a></p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.nocodesaas.io/subscribe?"><span>Subscribe now</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Rise of the Solo Founder]]></title><description><![CDATA[Why 2026 is the year to build your own AI-powered business]]></description><link>https://www.nocodesaas.io/p/the-rise-of-the-solo-founder</link><guid isPermaLink="false">https://www.nocodesaas.io/p/the-rise-of-the-solo-founder</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 16 Jan 2026 12:10:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!aCjW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16dc7e6-f331-4877-b1b6-924e9b5f9218_5712x4284.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there,</p><p>Welcome back to NoCode SaaS. I&#8217;m kicking off 2026 with a fresh approach to this newsletter.</p><p>This year I&#8217;m going to be focusing on solo founders using AI to orchestrate agents to run a SaaS business as an independent operator. I believe we&#8217;re at an inflection point where a single person can build and run software businesses that would have required entire teams just a year ago.</p><p>But first let me tell you about what I&#8217;ve been up to.</p><h2>Where I&#8217;ve Been</h2><p>Last year I met founders building with AI all around the world at our <a href="https://createwith.com">Create With AI Meetups</a> - from London to Bangkok!  </p><p>The one thing that everyone I met had in common was they were high agency people actually getting stuff done using AI.  Whether it&#8217;s building their app, making marketing materials or even managing their schedules.  </p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c16dc7e6-f331-4877-b1b6-924e9b5f9218_5712x4284.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4aa5cad-58c4-47cd-b9ee-846f820b500c_4284x5712.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16431eb7-60eb-4e98-acdf-6dbe4e25afd4_5712x4284.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f3ed7b7-aa99-49d3-bc47-3151b5876307_5712x4284.jpeg&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98c5ba50-21a4-4a72-af51-7da3e6e212ce_1456x1456.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p>I also visited Singapore for the <a href="https://aimx.global/aimx-singapore-2025/">AIMX conference</a> which was a totally different vibe. This was all about real-world AI. Humanoid robots, physical automation, AI in manufacturing and logistics.</p><p>Whilst in this newsletter I&#8217;m largely going to be focussed on AI that helps you build and run a business it&#8217;s important to remember the coming wave of &#8216;embodied AI&#8217; in robots, cars and just about everything else.</p><h2>The Rise of the Solo Founder</h2><p>I believe 2026 is going to be the year of the solo founder.</p><p>We&#8217;re seeing more and more people going independent. Quitting their jobs, particularly product managers and operators, and learning to build and orchestrate their own software using AI. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/agazdecki/status/1875724220979933584?s=20" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jodj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b1b7ff-5d0c-4708-8a81-7db1dfed94db_1190x1094.png 424w, https://substackcdn.com/image/fetch/$s_!jodj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b1b7ff-5d0c-4708-8a81-7db1dfed94db_1190x1094.png 848w, https://substackcdn.com/image/fetch/$s_!jodj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b1b7ff-5d0c-4708-8a81-7db1dfed94db_1190x1094.png 1272w, https://substackcdn.com/image/fetch/$s_!jodj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b1b7ff-5d0c-4708-8a81-7db1dfed94db_1190x1094.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jodj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b1b7ff-5d0c-4708-8a81-7db1dfed94db_1190x1094.png" width="564" height="518.5008403361345" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0b1b7ff-5d0c-4708-8a81-7db1dfed94db_1190x1094.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1094,&quot;width&quot;:1190,&quot;resizeWidth&quot;:564,&quot;bytes&quot;:602374,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/agazdecki/status/1875724220979933584?s=20&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/181426671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b1b7ff-5d0c-4708-8a81-7db1dfed94db_1190x1094.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_!jodj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b1b7ff-5d0c-4708-8a81-7db1dfed94db_1190x1094.png 424w, https://substackcdn.com/image/fetch/$s_!jodj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b1b7ff-5d0c-4708-8a81-7db1dfed94db_1190x1094.png 848w, https://substackcdn.com/image/fetch/$s_!jodj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b1b7ff-5d0c-4708-8a81-7db1dfed94db_1190x1094.png 1272w, https://substackcdn.com/image/fetch/$s_!jodj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0b1b7ff-5d0c-4708-8a81-7db1dfed94db_1190x1094.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>And they&#8217;re running these businesses super profitably because they don&#8217;t have a huge salary bill, office costs, or any of the traditional overhead.</p><p>The economics have completely flipped. What used to require a team of five or ten people can now be done by one person orchestrating a team of AI agents.</p><p><a href="https://x.com/nocodelife">Kieran&#8217;s</a> a great example of this. Back in July he <a href="https://www.nocodelife.com/i-tried-coding-with-ai-it-sucks">wrote a blog post saying he wasn&#8217;t sold on vibe coding</a>. It wasn&#8217;t stable enough, too many bugs, he was sticking with nocode. </p><p>Fast forward to December and he finally gave Claude Code a proper try. Now he&#8217;s completely converted. </p><p>He&#8217;s rebuilt all his static websites, replaced a $39/month blog platform with his own custom solution hosted for basically nothing on <a href="https://vercel.com/">Vercel</a>, and even built his own course platform to replace Podia after they sent him a bill for $900 for the year. The whole thing just works and he built it himself.</p><p>And that&#8217;s the mental shift I think is really important here. You&#8217;re not replacing yourself with AI. You&#8217;re becoming a conductor of all these different agents. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ON5U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b96c217-a73d-49f7-8b29-b66be499c3ac_1024x559.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ON5U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b96c217-a73d-49f7-8b29-b66be499c3ac_1024x559.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ON5U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b96c217-a73d-49f7-8b29-b66be499c3ac_1024x559.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ON5U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b96c217-a73d-49f7-8b29-b66be499c3ac_1024x559.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ON5U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b96c217-a73d-49f7-8b29-b66be499c3ac_1024x559.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ON5U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b96c217-a73d-49f7-8b29-b66be499c3ac_1024x559.jpeg" width="1024" height="559" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b96c217-a73d-49f7-8b29-b66be499c3ac_1024x559.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:559,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:212434,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/181426671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b96c217-a73d-49f7-8b29-b66be499c3ac_1024x559.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ON5U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b96c217-a73d-49f7-8b29-b66be499c3ac_1024x559.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ON5U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b96c217-a73d-49f7-8b29-b66be499c3ac_1024x559.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ON5U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b96c217-a73d-49f7-8b29-b66be499c3ac_1024x559.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ON5U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b96c217-a73d-49f7-8b29-b66be499c3ac_1024x559.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You have different agents handling different things. Development, customer support, data analysis, content. </p><p>You&#8217;re directing the orchestra, not playing every instrument (not always easy if you struggle to delegate &#128514;)</p><p><a href="https://www.nocodesaas.io/p/ai-agents-building-the-self-driving">The &#8220;self-driving startup&#8221; that I&#8217;ve talked about before in this newsletter</a> isn&#8217;t a dream anymore. It&#8217;s reality.</p><h2>What Claude Code Means for No-Code Developers</h2><p>Let&#8217;s address the elephant in the room. If AI can now write code, and write it really well, do no-code tools still matter?</p><p>Right now I do think they still have a part to play.  </p><p>For example, if I hadn&#8217;t starting building my own apps with Bubble there is no way I would have ended up being so comfortable making things using AI generated code, using APIs etc. </p><p>Using a no-code tools is still a great entry point for building things, because it&#8217;s a visual platform you can literally see everything (UI, workflows, db, files etc) and see exactly how everything is working.</p><p>No-code tools teach you how to think logically, how to build and structure a system.  Right now, Vibe Coding often feels a bit like the Wizard Of Oz&#8230; you don&#8217;t really know who is pulling the levers behind the curtain or how anything acutally works.</p><p>Personally, I use Claude Code and Bubble together. Claude Code handles the backend of my app and the high-frequency services where I need performance and cost efficiency. Bubble controls most of the user interface and the core logic where I need visibility.<br><br>However I must admit I am finding myself increasingly frustrated when using nocode tools at  how long it takes to do things manually - in particular building UI.  I don&#8217;t want to waste an hour building a login page or dashboard when I know AI could do it in 30 seconds (and do a better job than me)</p><p><em>Visibility</em> is actually the huge advantage that no-code tools still have. </p><p>Not just over traditional coding, but over AI-generated code too. Everything is visual. </p><p>You can see exactly how your app works. The data flows, the logic, the connections. It&#8217;s all right there on the canvas.</p><p>Whilst I think it&#8217;s inevitable all nocode tools transition to being primarily AI driven (or die), it&#8217;s also true that the Vibe Coding platforms like Loveable are moving to bring more visual editing into their apps too, so I suspect we will end up somwhere in between.  Where you can describe your app in plain English, then visualise everything about how it works visually.</p><p>Here&#8217;s something I think about a lot though. </p><p>If you had a $20k MRR app, would you really be comfortable with it being 100% vibe-coded and having no idea how it actually runs today?</p><p>When something breaks at 2am, can you fix it? Do you even know where to look?</p><p>The DevOps angle with fully AI-generated code is tricky right now. Monitoring, debugging, understanding what&#8217;s actually happening under the hood. It&#8217;s a bit of an issue if you don&#8217;t really understand the codebase.</p><p>But I&#8217;m pretty confident this gets solved within six months.</p><p>I&#8217;ve already seen examples of people running Claude Code in YOLO mode on dev servers and having it do its own sysadmin. Would I do that in production right now? Absolutely not. But it proves the concept. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u8x8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9836b53-c53e-44f9-b248-469d593f4c93_1024x559.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u8x8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9836b53-c53e-44f9-b248-469d593f4c93_1024x559.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u8x8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9836b53-c53e-44f9-b248-469d593f4c93_1024x559.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u8x8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9836b53-c53e-44f9-b248-469d593f4c93_1024x559.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u8x8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9836b53-c53e-44f9-b248-469d593f4c93_1024x559.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u8x8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9836b53-c53e-44f9-b248-469d593f4c93_1024x559.jpeg" width="1024" height="559" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e9836b53-c53e-44f9-b248-469d593f4c93_1024x559.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:559,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:226671,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/181426671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9836b53-c53e-44f9-b248-469d593f4c93_1024x559.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u8x8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9836b53-c53e-44f9-b248-469d593f4c93_1024x559.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u8x8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9836b53-c53e-44f9-b248-469d593f4c93_1024x559.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u8x8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9836b53-c53e-44f9-b248-469d593f4c93_1024x559.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u8x8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9836b53-c53e-44f9-b248-469d593f4c93_1024x559.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It shows us where this is heading. AI that doesn&#8217;t just build your software but deploys it, monitors it, and fixes it too. We&#8217;re not there yet but the direction is crystal clear.</p><p>The hybrid approach I&#8217;m using has been transformational for <a href="https://userloop.io">UserLoop</a>. I&#8217;ve been able to build loads of new features, migrate older parts of the app into a completely new architecture, and radically reduce costs. </p><p>All while maintaining visibility into how everything works.</p><p>This week I decided to challenge Claude Code to build an entire new Shopify app from scratch.  I used the <a href="https://shopify.dev/docs/apps/build/devmcp">Shopify Dev MCP</a> which basically describes everything from the compliance rules to how the UI should be structured to how the API works. I went into plan mode, described the app I wanted in detail, let Claude go off and make a plan using the MCP to understand all Shopify&#8217;s requirements, then let it execute. </p><p>A couple of hours later I had a fully embedded Shopify app built to their &#8220;Built for Shopify&#8221; standards. Even with no-code tools that would have taken months previously, or not even been possible at all (UserLoop is not even an embedded app today!) </p><p>It&#8217;s honestly hard to overstate how much things have changed. <br><br>It did also get me asking - if it&#8217;s so easy to build software now, does it even have any inherent value? Some interesting times are coming for SaaS for sure.</p><h2>AI for Marketing - where are all the tools?</h2><p>Right now most AI content online is focused on building software. </p><p>And yes, Claude Code has made it incredibly easy to build. But building is only half the story. </p><p>What about marketing? What about operations? What about all the other stuff that actually makes a business run?</p><p>This is where I think the even bigger opportunity lies.</p><p>We&#8217;ve actually been doing this ourselves with <a href="https://createwith.com">Create With</a>. Kieran&#8217;s been building out a custom internal dashboard that&#8217;s basically replacing a bunch of different tools we were using. Zapier, n8n, Google Sheets, Notion, all of it. </p><p>It watches all the AI news, ranks stories by relevance to our audience, helps us put together the newsletter. And we can just keep adding features whenever we need them. It&#8217;s becoming our own little operating system for running the conference.</p><p>You can use AI to orchestrate your entire business, not just your codebase. </p><p>Content creation, marketing campaigns, customer outreach, analytics, reporting. All of this can be handled by AI agents working together. The full picture isn&#8217;t just &#8220;build with AI.&#8221; It&#8217;s &#8220;build with AI and run with AI.&#8221;</p><p>I&#8217;m even using Claude Code to generate our marketing visuals for the conference (on brand right?)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/jamesdevonport/status/2011838145264783478?s=20" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YLQK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa501291b-84e0-4fa7-93e5-4cc5ab75a692_1182x1184.png 424w, https://substackcdn.com/image/fetch/$s_!YLQK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa501291b-84e0-4fa7-93e5-4cc5ab75a692_1182x1184.png 848w, https://substackcdn.com/image/fetch/$s_!YLQK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa501291b-84e0-4fa7-93e5-4cc5ab75a692_1182x1184.png 1272w, https://substackcdn.com/image/fetch/$s_!YLQK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa501291b-84e0-4fa7-93e5-4cc5ab75a692_1182x1184.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YLQK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa501291b-84e0-4fa7-93e5-4cc5ab75a692_1182x1184.png" width="479" height="479.81049069373944" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a501291b-84e0-4fa7-93e5-4cc5ab75a692_1182x1184.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1184,&quot;width&quot;:1182,&quot;resizeWidth&quot;:479,&quot;bytes&quot;:649237,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/jamesdevonport/status/2011838145264783478?s=20&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/181426671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa501291b-84e0-4fa7-93e5-4cc5ab75a692_1182x1184.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_!YLQK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa501291b-84e0-4fa7-93e5-4cc5ab75a692_1182x1184.png 424w, https://substackcdn.com/image/fetch/$s_!YLQK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa501291b-84e0-4fa7-93e5-4cc5ab75a692_1182x1184.png 848w, https://substackcdn.com/image/fetch/$s_!YLQK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa501291b-84e0-4fa7-93e5-4cc5ab75a692_1182x1184.png 1272w, https://substackcdn.com/image/fetch/$s_!YLQK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa501291b-84e0-4fa7-93e5-4cc5ab75a692_1182x1184.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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 how solo founders can now genuinely compete with funded startups. </p><p>You&#8217;re not just a developer anymore. You&#8217;ve got an AI-powered team handling development, marketing, and operations. You&#8217;re the founder directing all of it.</p><p>I&#8217;m going to be writing a lot more about using AI for marketing this year as I learn new things.</p><h2>Looking Ahead to 2026</h2><p>I&#8217;ve never been more optimistic about the future of building software.</p><p>We&#8217;re going to see a huge wave of independent operators launching profitable businesses this year. </p><p>People leaving traditional jobs to build their own thing. Product managers who understand users and problems, now able to build and ship solutions themselves. </p><p>The combination of no-code for visibility, AI for speed, and agents for operations creates a complete business engine that one person can run.</p><p>If you&#8217;ve ever thought about making the jump and building something of your own, now is the time. The tools have never been better, the barriers have never been lower, and the opportunity has never been bigger.</p><h2>Create With Conference 2026</h2><p>Speaking of where things are heading, I&#8217;m thrilled to announce that this year&#8217;s <a href="https://createwith.com/">Create With conference is moving to the Brighton Centre!</a></p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f61fc462-0ee9-4679-9c06-087f380bcfc0_640x480.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4dafc558-e714-4f3f-99ff-7b0f41ec2eff_640x480.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f7d846f-7cb2-4dc6-b354-d26fa1a7d3df_640x480.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ffc14dac-9ad9-401f-9226-8942aa6e9cc0_2048x1536.jpeg&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0378818b-8490-4ad4-9ba8-8fd58f5a9a24_1456x1456.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p>It&#8217;s going to be much bigger than previous years and the theme is going to focus on exactly these questions. Live coding with AI, what it means for builders, and how to navigate this new landscape. More details coming soon but save the date. </p><p>This is going to be the place to be if you&#8217;re thinking about any of this stuff.  <a href="https://luma.com/createwith26">Today is the final day for early bird tickets.</a></p><h2>What&#8217;s Coming Next</h2><p>This newsletter is taking a fresh approach for 2026. I&#8217;m going to be focusing on solo founders and how to build and run a SaaS business as an independent operator. </p><p>AI orchestration and using agents to handle development, marketing, and operations. </p><p>Real examples of what&#8217;s actually working, what isn&#8217;t, and what I&#8217;m learning along the way.</p><p>I&#8217;m really excited to take you along for the ride!</p><div><hr></div><p>That&#8217;s it for this week! I&#8217;d love to hear what you&#8217;re building or thinking about. Just hit reply and let me know.</p><p>Happy building!</p><p>James</p><p><strong><a href="https://luma.com/createwith26">P.S.</a></strong><a href="https://luma.com/createwith26"> Early bird tickets for Create With Conference are just </a><strong><a href="https://luma.com/createwith26">&#163;35</a></strong><a href="https://luma.com/createwith26"> but they end TONIGHT at midnight! Grab yours here.</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading NoCode SaaS! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Build Your Own Internal MCP Server with n8n and Claude]]></title><description><![CDATA[This week we look at how to create your own custom MCP server in n8n and connect it to Claude for powerful internal knowledge access]]></description><link>https://www.nocodesaas.io/p/build-your-own-internal-mcp-server-claude-n8n</link><guid isPermaLink="false">https://www.nocodesaas.io/p/build-your-own-internal-mcp-server-claude-n8n</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 22 Aug 2025 13:05:22 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/190c2f24-42e5-4cfd-8150-174ef500cb58_3283x1797.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there!</p><p>Welcome to this week's NoCode SaaS newsletter, where I take you along on the journey of building a profitable business without code using AI.</p><p>This week I want to show you something that's changed how we work internally at <a href="https://createwith.com">Create With</a> - building custom MCP servers using <a href="https://n8n.io">n8n</a>. </p><p>I recently saw a fascinating thread from <a href="https://x.com/tobi">Toby L&#252;tke</a>, the CEO of Shopify, following up on his <a href="https://x.com/tobi/status/1909231499448401946">widely shared AI first memo</a> about their <a href="https://x.com/tobi/status/1958244700189790549">internal tool called Scout</a>. <br><br>It's essentially an internal MCP server and has indexed hundreds of millions of merchant feedback items, giving anyone at Shopify instant access to customer insights.</p><p>But what really caught my attention was that Shopify isn't just using MCPs as simple connectors. </p><p>They're treating them as the backbone of a new kind of company operating system. </p><p>Every team is building MCP-powered tools that are living, breathing extensions of their expertise. </p><p>Their Creative Production team has an agent, their Product team has the AlphaAI mesh, and they have a VibeOps Stack for internal development. </p><p>Each tool doesn't just share data - it shares the team's entire playbook, workflows, and know-how.</p><p>This is exactly the direction we've been moving at Create With, and today I'm going to show you how to build your own MCP server in n8n and connect it to Claude. </p><p>It&#8217;s a lot easier to set up than you might think - you don&#8217;t need write any code!!</p><p>Once you see how powerful this is, you'll understand why MCPs are becoming the new standard for how companies operate with AI.</p><h2>What exactly is an MCP server?</h2><p>Before we dive into the how-to, let me quickly explain what MCP (Model Context Protocol) servers are and why you&#8217;re reading about them everywhere at the moment.</p><p>MCP is a protocol that lets AI assistants like Claude connect to external data sources and tools in a standardized way. </p><p>But it's becoming much more than just a connector, companies like Shopify are using MCPs as the backbone of their entire AI operating system. </p><p>Think of it as creating not just a bridge between your AI and your data, but packaging your team's entire expertise into something that can be accessed and used by anyone in your organization.</p><p>When you build an MCP server, you're essentially creating what some are calling "an expert in a box". Your workflows, knowledge, and decision-making processes all become accessible through natural language. </p><p>The MCP repository becomes your gateway to all company knowledge and capability.</p><p>The beauty of building your MCP server in <a href="https://n8n.io">n8n</a> is that you get all the flexibility of n8n's workflow automation combined with the intelligence of AI. <br><br>You can connect to literally any data source or app that n8n supports.  Databases, APIs, spreadsheets, you name it. </p><h2>Why build your own MCP server?</h2><p>There are some really compelling reasons why MCPs are becoming the new standard:</p><p><strong>Teams become scalable through their tools</strong>. Instead of being a bottleneck, each team can package their expertise into MCP powered tools that anyone can access. It's like cloning your best people's knowledge and making it available 24/7 (imagine getting less of those weekend Slack messages!!)</p><p><strong>Building agents that know your business</strong>. Building MCPs containing all your data doesn&#8217;t just benefit the humans you work with, you can also give access to AI agents. For example in n8n you could have an AI Agent that can query data from your MCP about your latest content and automatically write social posts about it.</p><p><strong>Instant access to expertise</strong>: Instead of scheduling meetings or waiting for responses, anyone can tap into any team's knowledge immediately through natural language queries.</p><p><strong>Keep your tools organized</strong>: Once you build an MCP server in n8n, you can reuse those same tools from any workflow or AI agent. It becomes part of your company's AI operating system.  You only have to update it one place.</p><p><strong>Works everywhere</strong>: You can use these MCP servers from Claude, from within n8n itself, or from any tool that supports the MCP protocol (there are more and more every week). Build once, use everywhere.</p><p>I really think understanding MCPs and learning how to use them is important for any business who is serious about embeddeing AI in everything they do.</p><h2>Watch the video tutorial</h2><p>I've recorded a video tutorial that walks through the entire process of setting up your MCP server in n8n and connecting it to Claude. In the video, I show you our actual Create With MCP server in action and demonstrate how to build your own from scratch.  <br><br>I would recommend <a href="https://www.nocodesaas.io/p/build-your-own-ai-powered-database">reading my previous post about building a RAG database</a> if you follow this tutorial as we are using a lot of what we built in that here.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.tella.tv/video/building-an-internal-mcp-server-7ppe" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ptmi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9470b4-9442-4483-9124-3c45765dfc10_2542x1417.png 424w, https://substackcdn.com/image/fetch/$s_!ptmi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9470b4-9442-4483-9124-3c45765dfc10_2542x1417.png 848w, https://substackcdn.com/image/fetch/$s_!ptmi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9470b4-9442-4483-9124-3c45765dfc10_2542x1417.png 1272w, https://substackcdn.com/image/fetch/$s_!ptmi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9470b4-9442-4483-9124-3c45765dfc10_2542x1417.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ptmi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9470b4-9442-4483-9124-3c45765dfc10_2542x1417.png" width="1456" height="812" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e9470b4-9442-4483-9124-3c45765dfc10_2542x1417.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:812,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3895695,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.tella.tv/video/building-an-internal-mcp-server-7ppe&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/171581600?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9470b4-9442-4483-9124-3c45765dfc10_2542x1417.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_!ptmi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9470b4-9442-4483-9124-3c45765dfc10_2542x1417.png 424w, https://substackcdn.com/image/fetch/$s_!ptmi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9470b4-9442-4483-9124-3c45765dfc10_2542x1417.png 848w, https://substackcdn.com/image/fetch/$s_!ptmi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9470b4-9442-4483-9124-3c45765dfc10_2542x1417.png 1272w, https://substackcdn.com/image/fetch/$s_!ptmi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9470b4-9442-4483-9124-3c45765dfc10_2542x1417.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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://www.tella.tv/video/building-an-internal-mcp-server-7ppe&quot;,&quot;text&quot;:&quot;Watch the tutorial&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.tella.tv/video/building-an-internal-mcp-server-7ppe"><span>Watch the tutorial</span></a></p><h2>Setting up your first MCP server in n8n</h2><p>Below I'll walk through the key steps from the video tutorial in more detail. If you prefer to follow along visually, definitely check out the <a href="https://www.tella.tv/video/building-an-internal-mcp-server-7ppe">video</a> above first.</p><h3>Step 1: Create the MCP Server Trigger</h3><p>First, you need to create a new workflow in n8n and add an MCP Server Trigger node. This is what will listen for requests from Claude.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NGoX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c1166ad-eb50-446d-ab27-b465446b4770_3964x2614.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NGoX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c1166ad-eb50-446d-ab27-b465446b4770_3964x2614.png 424w, https://substackcdn.com/image/fetch/$s_!NGoX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c1166ad-eb50-446d-ab27-b465446b4770_3964x2614.png 848w, https://substackcdn.com/image/fetch/$s_!NGoX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c1166ad-eb50-446d-ab27-b465446b4770_3964x2614.png 1272w, https://substackcdn.com/image/fetch/$s_!NGoX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c1166ad-eb50-446d-ab27-b465446b4770_3964x2614.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NGoX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c1166ad-eb50-446d-ab27-b465446b4770_3964x2614.png" width="1456" height="960" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c1166ad-eb50-446d-ab27-b465446b4770_3964x2614.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:960,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1198390,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/171581600?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c1166ad-eb50-446d-ab27-b465446b4770_3964x2614.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_!NGoX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c1166ad-eb50-446d-ab27-b465446b4770_3964x2614.png 424w, https://substackcdn.com/image/fetch/$s_!NGoX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c1166ad-eb50-446d-ab27-b465446b4770_3964x2614.png 848w, https://substackcdn.com/image/fetch/$s_!NGoX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c1166ad-eb50-446d-ab27-b465446b4770_3964x2614.png 1272w, https://substackcdn.com/image/fetch/$s_!NGoX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c1166ad-eb50-446d-ab27-b465446b4770_3964x2614.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>When you add the MCP Server Trigger, n8n will generate a unique URL for your server. This is the URL you'll need to connect Claude to your MCP server later. It'll look something like:</p><p><code>https://your-n8n-instance.com/webhook/mcp/your-unique-id</code></p><p>Keep this URL handy - you'll need it in a minute.</p><h3>Step 2: Connect your tools</h3><p>Now comes the fun part - connecting the tools and data sources you want to make available through your MCP. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wHEZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30d65cf-d7bc-41e5-b7cf-553e5d64c847_3964x2614.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wHEZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30d65cf-d7bc-41e5-b7cf-553e5d64c847_3964x2614.png 424w, https://substackcdn.com/image/fetch/$s_!wHEZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30d65cf-d7bc-41e5-b7cf-553e5d64c847_3964x2614.png 848w, https://substackcdn.com/image/fetch/$s_!wHEZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30d65cf-d7bc-41e5-b7cf-553e5d64c847_3964x2614.png 1272w, https://substackcdn.com/image/fetch/$s_!wHEZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30d65cf-d7bc-41e5-b7cf-553e5d64c847_3964x2614.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wHEZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30d65cf-d7bc-41e5-b7cf-553e5d64c847_3964x2614.png" width="1456" height="960" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a30d65cf-d7bc-41e5-b7cf-553e5d64c847_3964x2614.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:960,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1267199,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/171581600?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30d65cf-d7bc-41e5-b7cf-553e5d64c847_3964x2614.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_!wHEZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30d65cf-d7bc-41e5-b7cf-553e5d64c847_3964x2614.png 424w, https://substackcdn.com/image/fetch/$s_!wHEZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30d65cf-d7bc-41e5-b7cf-553e5d64c847_3964x2614.png 848w, https://substackcdn.com/image/fetch/$s_!wHEZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30d65cf-d7bc-41e5-b7cf-553e5d64c847_3964x2614.png 1272w, https://substackcdn.com/image/fetch/$s_!wHEZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30d65cf-d7bc-41e5-b7cf-553e5d64c847_3964x2614.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In our Create With server, we've connected six different tools:</p><ul><li><p>Events database</p></li><li><p>Featured content</p></li><li><p>Tweets</p></li><li><p>Newsletter archives</p></li><li><p>YouTube video transcripts</p></li><li><p>Internal documentation</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_!mNKq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2c4616-bc9c-40ba-8112-fd8acd45e185_3964x2614.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mNKq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2c4616-bc9c-40ba-8112-fd8acd45e185_3964x2614.png 424w, https://substackcdn.com/image/fetch/$s_!mNKq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2c4616-bc9c-40ba-8112-fd8acd45e185_3964x2614.png 848w, https://substackcdn.com/image/fetch/$s_!mNKq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2c4616-bc9c-40ba-8112-fd8acd45e185_3964x2614.png 1272w, https://substackcdn.com/image/fetch/$s_!mNKq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2c4616-bc9c-40ba-8112-fd8acd45e185_3964x2614.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mNKq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2c4616-bc9c-40ba-8112-fd8acd45e185_3964x2614.png" width="1456" height="960" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd2c4616-bc9c-40ba-8112-fd8acd45e185_3964x2614.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:960,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1645104,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/171581600?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2c4616-bc9c-40ba-8112-fd8acd45e185_3964x2614.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_!mNKq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2c4616-bc9c-40ba-8112-fd8acd45e185_3964x2614.png 424w, https://substackcdn.com/image/fetch/$s_!mNKq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2c4616-bc9c-40ba-8112-fd8acd45e185_3964x2614.png 848w, https://substackcdn.com/image/fetch/$s_!mNKq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2c4616-bc9c-40ba-8112-fd8acd45e185_3964x2614.png 1272w, https://substackcdn.com/image/fetch/$s_!mNKq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd2c4616-bc9c-40ba-8112-fd8acd45e185_3964x2614.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Each tool is connected as a separate branch from the MCP Server Trigger. The key here is that each tool needs a clear description so Claude knows when to use it.</p><p>For example, our YouTube videos tool has this description: "Contains a database of YouTube videos published on the Create With YouTube channel"</p><blockquote><p>This description is crucial, it's what Claude uses to decide which tool to use when you ask it a question.</p></blockquote><h3>Step 3: Set up your data retrieval</h3><p>For each tool, you need to configure how it retrieves data. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AGbw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb0f7c3-7852-4316-ad84-21e2c8df90b5_1996x1822.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AGbw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb0f7c3-7852-4316-ad84-21e2c8df90b5_1996x1822.png 424w, https://substackcdn.com/image/fetch/$s_!AGbw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb0f7c3-7852-4316-ad84-21e2c8df90b5_1996x1822.png 848w, https://substackcdn.com/image/fetch/$s_!AGbw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb0f7c3-7852-4316-ad84-21e2c8df90b5_1996x1822.png 1272w, https://substackcdn.com/image/fetch/$s_!AGbw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb0f7c3-7852-4316-ad84-21e2c8df90b5_1996x1822.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AGbw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb0f7c3-7852-4316-ad84-21e2c8df90b5_1996x1822.png" width="1456" height="1329" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9bb0f7c3-7852-4316-ad84-21e2c8df90b5_1996x1822.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1329,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:253407,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/171581600?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb0f7c3-7852-4316-ad84-21e2c8df90b5_1996x1822.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_!AGbw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb0f7c3-7852-4316-ad84-21e2c8df90b5_1996x1822.png 424w, https://substackcdn.com/image/fetch/$s_!AGbw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb0f7c3-7852-4316-ad84-21e2c8df90b5_1996x1822.png 848w, https://substackcdn.com/image/fetch/$s_!AGbw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb0f7c3-7852-4316-ad84-21e2c8df90b5_1996x1822.png 1272w, https://substackcdn.com/image/fetch/$s_!AGbw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb0f7c3-7852-4316-ad84-21e2c8df90b5_1996x1822.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>We're using a Supabase vector store for our RAG (Retrieval Augmented Generation) database, but you could use any data source n8n supports.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5g8H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067029a2-f0cb-4c3e-9a40-16de3c103131_1326x1122.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5g8H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067029a2-f0cb-4c3e-9a40-16de3c103131_1326x1122.png 424w, https://substackcdn.com/image/fetch/$s_!5g8H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067029a2-f0cb-4c3e-9a40-16de3c103131_1326x1122.png 848w, https://substackcdn.com/image/fetch/$s_!5g8H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067029a2-f0cb-4c3e-9a40-16de3c103131_1326x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!5g8H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067029a2-f0cb-4c3e-9a40-16de3c103131_1326x1122.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5g8H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067029a2-f0cb-4c3e-9a40-16de3c103131_1326x1122.png" width="1326" height="1122" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/067029a2-f0cb-4c3e-9a40-16de3c103131_1326x1122.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1122,&quot;width&quot;:1326,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:128195,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/171581600?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067029a2-f0cb-4c3e-9a40-16de3c103131_1326x1122.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_!5g8H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067029a2-f0cb-4c3e-9a40-16de3c103131_1326x1122.png 424w, https://substackcdn.com/image/fetch/$s_!5g8H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067029a2-f0cb-4c3e-9a40-16de3c103131_1326x1122.png 848w, https://substackcdn.com/image/fetch/$s_!5g8H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067029a2-f0cb-4c3e-9a40-16de3c103131_1326x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!5g8H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067029a2-f0cb-4c3e-9a40-16de3c103131_1326x1122.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>If you want to learn more about setting up a RAG database in Supabase, check out my <a href="https://www.nocodesaas.io/p/build-your-own-ai-powered-database">previous tutorial on creating RAG databases</a>. </p><p>Here's how we configured our YouTube videos tool:</p><ol><li><p>Added a Supabase Vector Store node</p></li><li><p>Set it to retrieve up to 50 results</p></li><li><p>Added a metadata filter to only pull YouTube video content</p></li><li><p>Connected it to GPT-4 for processing</p></li><li><p>Used OpenAI's embeddings for semantic search</p></li></ol><p>The beauty of using a vector store is that you can ask natural language questions and it will find semantically similar content, not just keyword matches.</p><h3>Step 4: Connect Claude to your MCP server</h3><p>Now for the magic moment - connecting Claude to your new MCP server.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4zx3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdda890bb-04af-4cb4-b245-26c089dd3221_3748x2528.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4zx3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdda890bb-04af-4cb4-b245-26c089dd3221_3748x2528.png 424w, https://substackcdn.com/image/fetch/$s_!4zx3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdda890bb-04af-4cb4-b245-26c089dd3221_3748x2528.png 848w, https://substackcdn.com/image/fetch/$s_!4zx3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdda890bb-04af-4cb4-b245-26c089dd3221_3748x2528.png 1272w, https://substackcdn.com/image/fetch/$s_!4zx3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdda890bb-04af-4cb4-b245-26c089dd3221_3748x2528.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4zx3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdda890bb-04af-4cb4-b245-26c089dd3221_3748x2528.png" width="1456" height="982" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dda890bb-04af-4cb4-b245-26c089dd3221_3748x2528.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:982,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:559640,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/171581600?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdda890bb-04af-4cb4-b245-26c089dd3221_3748x2528.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_!4zx3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdda890bb-04af-4cb4-b245-26c089dd3221_3748x2528.png 424w, https://substackcdn.com/image/fetch/$s_!4zx3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdda890bb-04af-4cb4-b245-26c089dd3221_3748x2528.png 848w, https://substackcdn.com/image/fetch/$s_!4zx3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdda890bb-04af-4cb4-b245-26c089dd3221_3748x2528.png 1272w, https://substackcdn.com/image/fetch/$s_!4zx3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdda890bb-04af-4cb4-b245-26c089dd3221_3748x2528.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol><li><p>Open Claude's settings</p></li><li><p>Go to the Connectors section</p></li><li><p>Click "Add Custom Connector"</p></li><li><p>Paste in your MCP server URL from Step 1 - make sure you use the production URL!</p></li><li><p>Give it a name (like "My Company MCP")</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9o53!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0940303-1c23-4498-83b3-da431aa705c9_3422x2404.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9o53!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0940303-1c23-4498-83b3-da431aa705c9_3422x2404.png 424w, https://substackcdn.com/image/fetch/$s_!9o53!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0940303-1c23-4498-83b3-da431aa705c9_3422x2404.png 848w, https://substackcdn.com/image/fetch/$s_!9o53!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0940303-1c23-4498-83b3-da431aa705c9_3422x2404.png 1272w, https://substackcdn.com/image/fetch/$s_!9o53!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0940303-1c23-4498-83b3-da431aa705c9_3422x2404.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9o53!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0940303-1c23-4498-83b3-da431aa705c9_3422x2404.png" width="1456" height="1023" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0940303-1c23-4498-83b3-da431aa705c9_3422x2404.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1023,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:576799,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/171581600?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0940303-1c23-4498-83b3-da431aa705c9_3422x2404.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_!9o53!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0940303-1c23-4498-83b3-da431aa705c9_3422x2404.png 424w, https://substackcdn.com/image/fetch/$s_!9o53!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0940303-1c23-4498-83b3-da431aa705c9_3422x2404.png 848w, https://substackcdn.com/image/fetch/$s_!9o53!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0940303-1c23-4498-83b3-da431aa705c9_3422x2404.png 1272w, https://substackcdn.com/image/fetch/$s_!9o53!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0940303-1c23-4498-83b3-da431aa705c9_3422x2404.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That's it! Claude will now show your MCP server in its list of available tools.</p><h2>Testing your MCP server</h2><p>Once everything's connected, you can test it right in Claude. Just ask a question that would require data from your MCP server. For example, I asked Claude:</p><p>"Can you write a tweet based on the latest Create With YouTube video?"</p><p>Claude automatically recognized it needed to use our MCP server, requested permission to access the YouTube videos tool, pulled the latest video data, and generated a perfect tweet based on the content.</p><p>The first time Claude uses each tool, it will ask for permission. You can click "Allow Always" if you want it to use that tool without asking in the future.</p><h2>Advanced tips and tricks</h2><h3>Using your MCP from other n8n workflows</h3><p>One of the coolest things about building your MCP in n8n is that you can use it from other workflows too. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5lmW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4c0389-8e6f-4a34-aa9a-e1470726f680_2268x1532.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5lmW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4c0389-8e6f-4a34-aa9a-e1470726f680_2268x1532.png 424w, https://substackcdn.com/image/fetch/$s_!5lmW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4c0389-8e6f-4a34-aa9a-e1470726f680_2268x1532.png 848w, https://substackcdn.com/image/fetch/$s_!5lmW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4c0389-8e6f-4a34-aa9a-e1470726f680_2268x1532.png 1272w, https://substackcdn.com/image/fetch/$s_!5lmW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4c0389-8e6f-4a34-aa9a-e1470726f680_2268x1532.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5lmW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4c0389-8e6f-4a34-aa9a-e1470726f680_2268x1532.png" width="1456" height="984" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac4c0389-8e6f-4a34-aa9a-e1470726f680_2268x1532.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:984,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:239868,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/171581600?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4c0389-8e6f-4a34-aa9a-e1470726f680_2268x1532.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_!5lmW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4c0389-8e6f-4a34-aa9a-e1470726f680_2268x1532.png 424w, https://substackcdn.com/image/fetch/$s_!5lmW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4c0389-8e6f-4a34-aa9a-e1470726f680_2268x1532.png 848w, https://substackcdn.com/image/fetch/$s_!5lmW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4c0389-8e6f-4a34-aa9a-e1470726f680_2268x1532.png 1272w, https://substackcdn.com/image/fetch/$s_!5lmW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4c0389-8e6f-4a34-aa9a-e1470726f680_2268x1532.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Just add an MCP Client node to any workflow, paste in your MCP server URL, and boom - that workflow now has access to all your MCP tools.</p><p>This is incredibly useful for keeping your automation organized. Instead of rebuilding the same data retrieval logic in multiple workflows, you build it once in your MCP and reuse it everywhere.</p><h3>Adding authentication and security</h3><p>If you're dealing with sensitive data, you'll want to add authentication to your MCP server. n8n makes this easy with built-in authentication options for webhooks. You can use:</p><ul><li><p>Basic authentication</p></li><li><p>Header authentication</p></li><li><p>Query parameter authentication</p></li><li><p>JWT tokens</p></li></ul><p>For our internal MCP, we use header authentication with a secret token that only our team knows.</p><h3>Monitoring and debugging</h3><p>n8n's execution history is really useful for debugging your MCP server. </p><p>You can see exactly what queries Claude is sending, what data your tools are returning, and where any errors might be occurring.</p><p>Pro tip: Add a Set node after each tool to format the response data exactly how you want Claude to see it. This gives you fine control over what information gets passed back.</p><h3>Combining multiple data sources</h3><p>Don't limit yourself to just one data source per tool. </p><p>You can create complex workflows that pull from multiple sources, process the data, and return a unified response.</p><p>For example, we have a tool that combines customer feedback from our surveys with purchase data from Shopify to provide insights on how feedback correlates with customer behavior. </p><p>The MCP handles all the complexity, Claude just sees a simple tool it can query.</p><h2>Building your company's AI operating system</h2><p>What's really exciting about this approach is that you're not just building isolated tools, you're creating what's essentially an AI-powered operating system for your company. </p><p>At Shopify, teams aren't just sharing data through their MCPs, they're sharing their entire playbook. Scout gives access to hundreds of millions of merchant feedback items, but more importantly, it provides the context and workflows for how to interpret and act on that feedback.</p><p>This is intentional architecture, not accidental automation. When you build MCP servers this way, you're creating:</p><ul><li><p><strong>Knowledge repositories</strong> that capture not just information but expertise</p></li><li><p><strong>Workflow automation</strong> that encodes your team's best practices</p></li><li><p><strong>Composable tools</strong> that can be mixed and matched for new capabilities</p></li><li><p><strong>Living documentation</strong> that stays current because it's actively used</p></li></ul><p>The shift here is profound - instead of AI replacing people, it's amplifying them. Each expert in your company can package their knowledge and make it accessible to everyone. Your company becomes smarter as a whole.</p><h2>Getting started with your own MCP</h2><p>If you want to build your own MCP server, here's what I'd recommend:</p><ol><li><p><strong>Start simple</strong>: Pick one data source to begin with. Maybe your customer feedback, your documentation, or your product catalog.</p></li><li><p><strong>Use existing tools</strong>: If you already have workflows in n8n that retrieve data, you can easily adapt them to work with an MCP server.</p></li><li><p><strong>Test thoroughly</strong>: Use Claude to ask various questions and see how your MCP responds. Refine the tool descriptions and data retrieval until it works smoothly.</p></li><li><p><strong>Expand gradually</strong>: Once you have one tool working well, add more. Each new tool makes your MCP server more powerful.</p></li><li><p><strong>Share with your team</strong>: The real power comes when your whole team can access internal knowledge through Claude. Set up MCP connections for everyone who could benefit.</p></li></ol><h2>What's next?</h2><p>The MCP ecosystem is evolving rapidly. What we're seeing at companies like Shopify and what we're building at Create With is just the beginning. MCPs aren't just connectors anymore, they're becoming the backbone of how AI-powered companies operate. </p><p>Every tool, every workflow, every bit of expertise can be packaged and made accessible through this new operating system.</p><h2>Resources</h2><p>If you want to learn more about building AI agents and automation, check out the <a href="https://www.youtube.com/@createwithhq">Create With YouTube channel</a> where we have uploaded a ton of other tutorials.</p><p>Also don't miss our weekly <a href="https://createwith.com/podcast">Create With podcast</a> where we discussed MCP servers in detail this week.</p><p>That's it for this week! </p><p>Building your own MCP server might seem complex at first, but hopefully the video tutorial should make it a bit clearer. Once you get it running, I think you&#8217;ll get addicted to adding more and more tools to build out your companies&#8217; own AI operating system!</p><p>Let me know if you build your own MCP server - I'd love to hear what tools you connect and how you're using it! Tag me on <a href="https://x.com/jamesdevonport">X/Twitter @jamesdevonport</a> with your creations. </p><p>Thanks again for reading, and happy building!</p><p>James</p><p>P.S. - We just launched the new <a href="https://createwith.com/join">Create With Membership program</a> with office hours where youc an ask quesitons about building your own AI company operating system, get tutorials, courses and early invites to our events. </p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share NoCode SaaS&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.nocodesaas.io/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share NoCode SaaS</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[How to connect Bubble to n8n AI Agents]]></title><description><![CDATA[Integrate advanced AI agents into your Bubble app using n8n. We dive deep into n8n's features, including self-hosting and its powerful AI framework. Learn to connect Bubble to n8n via the API Connector and build a custom AI agent that uses Firecrawl for web scraping and Gmail for automated email sending.]]></description><link>https://www.nocodesaas.io/p/how-to-connect-bubble-to-n8n-ai-agents</link><guid isPermaLink="false">https://www.nocodesaas.io/p/how-to-connect-bubble-to-n8n-ai-agents</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 04 Jul 2025 15:30:13 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/bd08b6fd-d10d-404c-88e2-0aa5b8182e8a_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi there!<br><br>Welcome to this week&#8217;s NoCode SaaS newsletter, where I take you along on the ride of building a profitable SaaS business without code using <a href="https://bubble.io">Bubble</a> and AI tools.</p><p>This week I wanted to focus on adding AI agent capabilities to your Bubble app visually without any code at all.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading NoCode SaaS! Subscribe for free!</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>If you&#8217;re like me, you&#8217;ve probably seen a ton of hype around <a href="https://n8n.io">n8n</a> recently.  Whether it&#8217;s on YouTube, X or LinkedIn it&#8217;s almost impossible to escape the endless screenshots of super complex workflows that people are sharing.</p><p>I admit there is a lot of quite over hyped content around n8n, sometimes showing fake workflows that don&#8217;t stand up to scrutiny when you actually try and use them for real in production.</p><p>However, over the last few week&#8217;s I&#8217;ve been really diving into n8n and using it a lot more to help with real life day to day operations in two companies I&#8217;m working on, <a href="https://userloop.io">UserLoop</a> and <a href="https://createwith.com">Create With</a>.<br><br>It&#8217;s some of the most fun I&#8217;ve had building things since I first discovered Bubble 7 (&#128561;) years ago.  The standout feature in n8n which got me so excited to learn it is AI Agents.<br><br>So rather than just building regular workflows that complete tasks in a predefined order one step at a time, you can add intelligent agents which have access to a set of tools and can actually take actions based on the instructions you give them.</p><h2>What is n8n?</h2><p>For those who haven't encountered it yet, <a href="https://n8n.io">n8n</a> is a workflow automation platform that lets you connect different apps and services together without writing code. </p><blockquote><p><em>For people coming from the Bubble world - it&#8217;s effectively a combinations of Bubble&#8217;s backend workflows and API Connector.  But with some added extra AI magic we&#8217;ll talk more about in a bit.</em></p></blockquote><p><br>While you might be familiar with tools like <a href="https://zapier.com">Zapier</a> or <a href="https://make.com">Make</a>, n8n takes a different approach that gives you way more control and flexibility.  </p><p>While this does mean it can be a bit more intimidating for beginners with a slightly steeper learning curve, putting in the extra time to learn it really pays off.</p><p>The key difference that sets n8n apart is its open architecture. You're not limited to pre-built integrations - you can connect to virtually any API, write custom code snippets when needed, and even create your own nodes. This means you can automate processes that would be impossible with other tools, especially when you need to handle complex business logic or unusual data transformations.</p><p>To make things even easier, n8n recently really enhanced their support for <a href="https://blog.n8n.io/community-nodes-available-on-n8n-cloud/">Community Nodes</a>.  These are wrappers for various APIs and services that members of the n8n community have put together to make it super easy to connect to services like <a href="https://community.n8n.io/t/n8n-community-node-firecrawl/55546">Firecrawl</a> even thought there isn&#8217;t an official integration.  </p><p>You can install them in one click and everything is set up and ready to go for you.</p><p>The interface itself is pretty intuitive - you drag and drop nodes onto a canvas and connect them visually. But don't let the simplicity fool you. Under the hood, you're actually building with the super powerful AI framework <a href="https://www.langchain.com/">Langchain</a>. </p><p>As a result you can build some absolutely mindblowing automations that can rival custom coded solutions, all without touching a single line of code.</p><h2>Why n8n is Exploding Right Now</h2><p>I think one of the biggest reasons for n8n's explosive growth is actually their approach to hosting. </p><p>Unlike most SaaS tools that lock you into their pricing tiers, n8n gives you genuine choice - and that's been critical to their success.</p><p>You can start with <strong><a href="https://docs.n8n.io/manage-cloud/overview/">n8n Cloud</a></strong> if you want the simplest setup. It's hosted, managed, and you don't need to worry about any technical stuff. But here's where it gets interesting - you're not trapped there.</p><p>The <strong>self-hosting option</strong> is what really sets n8n apart. We actually host our internal Create With n8n instance on <a href="https://elest.io">Elest.io</a> for just $10/month, and it completes thousands of tasks without a problem.   </p><p>Elest.io even handles automatically updating the n8n software for us every week, and keeps backups.  So even though it&#8217;s self hosted it feels a lot like a SaaS type experience.</p><p>Think about that for a second - we're running complex AI workflows, handling massive volumes of automation, and our monthly hosting cost is less than most people spend on coffee.</p><p>This flexibility means you can start small with the cloud version, then as you scale up and understand your usage patterns, you can move to self-hosting and dramatically reduce your costs. <br><br>This chart caught my attention this week, showing the breakdown in n8n&#8217;s growth between self hosted (purple) and cloud (yellow) - there&#8217;s actually a fairly even split between them.  So not everyone is self hosting, many are also just using n8n&#8217;s own cloud hosted version!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CM7C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4631d81b-ed05-4896-87f2-0eb4d87f9562_1982x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CM7C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4631d81b-ed05-4896-87f2-0eb4d87f9562_1982x1486.png 424w, https://substackcdn.com/image/fetch/$s_!CM7C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4631d81b-ed05-4896-87f2-0eb4d87f9562_1982x1486.png 848w, https://substackcdn.com/image/fetch/$s_!CM7C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4631d81b-ed05-4896-87f2-0eb4d87f9562_1982x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!CM7C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4631d81b-ed05-4896-87f2-0eb4d87f9562_1982x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CM7C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4631d81b-ed05-4896-87f2-0eb4d87f9562_1982x1486.png" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4631d81b-ed05-4896-87f2-0eb4d87f9562_1982x1486.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:830082,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/167514873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4631d81b-ed05-4896-87f2-0eb4d87f9562_1982x1486.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_!CM7C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4631d81b-ed05-4896-87f2-0eb4d87f9562_1982x1486.png 424w, https://substackcdn.com/image/fetch/$s_!CM7C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4631d81b-ed05-4896-87f2-0eb4d87f9562_1982x1486.png 848w, https://substackcdn.com/image/fetch/$s_!CM7C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4631d81b-ed05-4896-87f2-0eb4d87f9562_1982x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!CM7C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4631d81b-ed05-4896-87f2-0eb4d87f9562_1982x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The one major downside of self hosting n8n is that it requires a little more setup when it comes to connecting external services.  Whereas the cloud version takes care of most of this for you with simple one click integrations, the self hosted version requires you to do more manual setup for each tool you want to connect to.</p><p>However, the n8n docs are incredible and guide you step by step through hooking everything up, plus there are endless amazing tutorials on YouTube for everything you could want to connect.</p><p><em><a href="https://youtu.be/wa-Sna3r9eU?si=4hzlE1e1sSz1JVj3">Small plug: I  just posted my tutorial for building a custom AI database system using n8n and Supabase to the Create With YouTube channel.</a></em></p><p>So that&#8217;s a bit of context around why I&#8217;ve been getting so excited about n8n.  The combination of AI agents, self hosting and tons of integrations makes it an indespensbible tool in every nocoder&#8217;s back pocket.</p><p>And what&#8217;s more, it integrates super easily with my all time favourite nocode tool - Bubble!<br><br>Let&#8217;s dive into building your first n8n AI agent and hooking it up to Bubble.</p><h2>Connecting Bubble to an AI Agent in n8n </h2><p>Bubble doesn&#8217;t have any built in AI Agent functionality right now, but thankfully it&#8217;s super easy to hook it up to n8n and start building custom agents.<br><br>For this mini tutorial I&#8217;m going to assume you already have an n8n account set up and running, and have added your OpenAI API key as a credential.</p><p>If you&#8217;re totally new to n8n and are interested in self hosting it <a href="https://youtu.be/uSoFpKDbv_0?si=7SgrMWZoyABZHV2Q">I recommend checking out this YouTube video which guides you through deploying n8n self hosted on elest.io</a></p><p>We&#8217;re going to be connecting to n8n via the API Connector in Bubble, and optionally accepting a response back via a backend workflow to deliver the result of our agent back into Bubble.<br><br>For the tutorial I&#8217;m going to build a simple AI Agent which will help us onboard new users to a SaaS app.</p><p>Here&#8217;s what it will do&#8230;</p><ol><li><p>Bubble will send a POST request to n8n using the API Connector whenever a new user signs up. </p></li><li><p>The POST request will include some basic info about the user who signed up like their name, email, company name, domain name and the plan they selected.</p></li><li><p>When this lands in n8n it will trigger our Webhook trigger and start our workflow running.</p></li><li><p>We will then go straight into an AI Agent node which we will give some instuctions to telling it to write a personalised welcome email to the user.</p></li><li><p>It will have access to a couple of tools&#8230;</p><ol><li><p>Firecrawl to crawl the user&#8217;s website (we will get the domain passed to us from Bubble). This will return us a block of markdown which we can feed into the agent to help it personalise it&#8217;s email to the user.</p></li><li><p>Gmail to send a email to the user from my Gmail account.</p></li></ol></li><li><p>We can then optionally also return that data back to Bubble via another HTTP request which hits a backend workflow in Bubble.</p></li></ol><h2>Step 1: Setting Up Your n8n Workflow</h2><p>First things first - we need to create our n8n workflow. I'm going to assume you've already got n8n set up (either cloud or self-hosted) and have added your OpenAI API key as a credential.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9VFk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F181aa22f-0a36-4cdc-8e7f-8694985eaa62_3598x2006.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9VFk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F181aa22f-0a36-4cdc-8e7f-8694985eaa62_3598x2006.png 424w, https://substackcdn.com/image/fetch/$s_!9VFk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F181aa22f-0a36-4cdc-8e7f-8694985eaa62_3598x2006.png 848w, https://substackcdn.com/image/fetch/$s_!9VFk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F181aa22f-0a36-4cdc-8e7f-8694985eaa62_3598x2006.png 1272w, https://substackcdn.com/image/fetch/$s_!9VFk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F181aa22f-0a36-4cdc-8e7f-8694985eaa62_3598x2006.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9VFk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F181aa22f-0a36-4cdc-8e7f-8694985eaa62_3598x2006.png" width="1456" height="812" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/181aa22f-0a36-4cdc-8e7f-8694985eaa62_3598x2006.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:812,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:515148,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/167514873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F181aa22f-0a36-4cdc-8e7f-8694985eaa62_3598x2006.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_!9VFk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F181aa22f-0a36-4cdc-8e7f-8694985eaa62_3598x2006.png 424w, https://substackcdn.com/image/fetch/$s_!9VFk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F181aa22f-0a36-4cdc-8e7f-8694985eaa62_3598x2006.png 848w, https://substackcdn.com/image/fetch/$s_!9VFk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F181aa22f-0a36-4cdc-8e7f-8694985eaa62_3598x2006.png 1272w, https://substackcdn.com/image/fetch/$s_!9VFk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F181aa22f-0a36-4cdc-8e7f-8694985eaa62_3598x2006.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The workflow is pretty straightforward - we've got 4 main nodes:</p><ol><li><p><strong>Webhook</strong> - This receives the POST request from Bubble</p></li><li><p><strong>AI Agent</strong> - The brain of our operation that writes the welcome email</p></li><li><p><strong>Three tools</strong> connected to the AI Agent - OpenAI Chat Model, HTTP Request (for Firecrawl), and Gmail</p></li><li><p><strong>Post to Bubble</strong> - Sends the result back to Bubble (optional)</p></li></ol><p>Let's build this step by step.</p><h2>Step 2: Creating the Webhook Trigger</h2><p>Start by adding a Webhook node to your canvas. This is what will receive the data from Bubble.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PkpD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dd6179-70cf-4c28-8f84-9a0dcda15d37_3578x1994.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PkpD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dd6179-70cf-4c28-8f84-9a0dcda15d37_3578x1994.png 424w, https://substackcdn.com/image/fetch/$s_!PkpD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dd6179-70cf-4c28-8f84-9a0dcda15d37_3578x1994.png 848w, https://substackcdn.com/image/fetch/$s_!PkpD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dd6179-70cf-4c28-8f84-9a0dcda15d37_3578x1994.png 1272w, https://substackcdn.com/image/fetch/$s_!PkpD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dd6179-70cf-4c28-8f84-9a0dcda15d37_3578x1994.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PkpD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dd6179-70cf-4c28-8f84-9a0dcda15d37_3578x1994.png" width="1456" height="811" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0dd6179-70cf-4c28-8f84-9a0dcda15d37_3578x1994.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:811,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:607009,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/167514873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dd6179-70cf-4c28-8f84-9a0dcda15d37_3578x1994.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_!PkpD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dd6179-70cf-4c28-8f84-9a0dcda15d37_3578x1994.png 424w, https://substackcdn.com/image/fetch/$s_!PkpD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dd6179-70cf-4c28-8f84-9a0dcda15d37_3578x1994.png 848w, https://substackcdn.com/image/fetch/$s_!PkpD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dd6179-70cf-4c28-8f84-9a0dcda15d37_3578x1994.png 1272w, https://substackcdn.com/image/fetch/$s_!PkpD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0dd6179-70cf-4c28-8f84-9a0dcda15d37_3578x1994.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This is what our webhook trigger config looks like in n8n, this picks up a post request from Bubble.</figcaption></figure></div><p>Click on the Webhook node and you'll see all the configuration options. The key things to note:</p><ul><li><p><strong>HTTP Method</strong>: Set this to POST</p></li><li><p><strong>Path</strong>: You can leave this blank or add a custom path like <code>/new-user</code></p></li><li><p><strong>Authentication</strong>: For testing, you can set this to "None", but for production I'd recommend setting up Bearer Token authentication</p></li></ul><p>The webhook will automatically generate a URL that looks something like: <br><br><code>https://n8n.yourdomain.com/webhook-test/yourwebhookid</code></p><p>Copy this URL - you'll need it for the Bubble API call later.</p><h2>Step 3: Setting Up the Bubble API Call</h2><p>Now let's switch over to Bubble and set up the API call that will trigger our n8n workflow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s9ut!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac0c9fe9-97cf-4983-8344-9c507aa4dcc9_1878x1738.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s9ut!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac0c9fe9-97cf-4983-8344-9c507aa4dcc9_1878x1738.png 424w, https://substackcdn.com/image/fetch/$s_!s9ut!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac0c9fe9-97cf-4983-8344-9c507aa4dcc9_1878x1738.png 848w, https://substackcdn.com/image/fetch/$s_!s9ut!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac0c9fe9-97cf-4983-8344-9c507aa4dcc9_1878x1738.png 1272w, https://substackcdn.com/image/fetch/$s_!s9ut!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac0c9fe9-97cf-4983-8344-9c507aa4dcc9_1878x1738.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s9ut!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac0c9fe9-97cf-4983-8344-9c507aa4dcc9_1878x1738.png" width="1456" height="1347" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac0c9fe9-97cf-4983-8344-9c507aa4dcc9_1878x1738.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1347,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:308527,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/167514873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac0c9fe9-97cf-4983-8344-9c507aa4dcc9_1878x1738.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_!s9ut!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac0c9fe9-97cf-4983-8344-9c507aa4dcc9_1878x1738.png 424w, https://substackcdn.com/image/fetch/$s_!s9ut!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac0c9fe9-97cf-4983-8344-9c507aa4dcc9_1878x1738.png 848w, https://substackcdn.com/image/fetch/$s_!s9ut!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac0c9fe9-97cf-4983-8344-9c507aa4dcc9_1878x1738.png 1272w, https://substackcdn.com/image/fetch/$s_!s9ut!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac0c9fe9-97cf-4983-8344-9c507aa4dcc9_1878x1738.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The API Connector in Bubble - this triggers our workflow in n8n to run!</figcaption></figure></div><p>In Bubble, go to your API Connector and create a new API:</p><ul><li><p><strong>Name</strong>: "New Signup" (or whatever makes sense for you)</p></li><li><p><strong>Authentication</strong>: If you set up Bearer Token auth in n8n, add that here. Otherwise leave as "None"</p></li><li><p><strong>Shared headers</strong>: Leave blank for now</p></li></ul><p>Create a new call:</p><ul><li><p><strong>Use as</strong>: Data</p></li><li><p><strong>Data type</strong>: JSON</p></li><li><p><strong>Method</strong>: POST</p></li><li><p><strong>URL</strong>: Paste that webhook URL you copied from n8n</p></li><li><p><strong>Headers</strong>: Add <code>Authorization: Bearer YOUR_TOKEN</code> if you're using auth</p></li><li><p><strong>Body type</strong>: JSON</p></li></ul><p>In the body, you'll want to send all the user data that the agent might need:</p><pre><code><code>{
  "first_name": "&lt;first_name&gt;",
  "email_address": "&lt;email&gt;",
  "last_name": "&lt;last_name&gt;",
  "source": "&lt;source&gt;",
  "company": "&lt;company&gt;",
  "website": "&lt;website&gt;",
  "plan": "&lt;plan&gt;"
}</code></code></pre><p>Replace the <code>&lt;&gt;</code> values with dynamic data from your Bubble app.  </p><p>This is just some example data from my app that I want the agent to have to complete it&#8217;s task, so you should just inject whatever you want to send to n8n from Bubble here.</p><h2>Step 4: Setting Up the AI Agent</h2><p>Now for the exciting part - the AI Agent! Add an AI Agent node and connect it to your webhook.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5AcT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5726cc55-8ad0-4265-9ba5-5911b08c09e6_3590x1998.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5AcT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5726cc55-8ad0-4265-9ba5-5911b08c09e6_3590x1998.png 424w, https://substackcdn.com/image/fetch/$s_!5AcT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5726cc55-8ad0-4265-9ba5-5911b08c09e6_3590x1998.png 848w, https://substackcdn.com/image/fetch/$s_!5AcT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5726cc55-8ad0-4265-9ba5-5911b08c09e6_3590x1998.png 1272w, https://substackcdn.com/image/fetch/$s_!5AcT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5726cc55-8ad0-4265-9ba5-5911b08c09e6_3590x1998.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5AcT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5726cc55-8ad0-4265-9ba5-5911b08c09e6_3590x1998.png" width="1456" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5726cc55-8ad0-4265-9ba5-5911b08c09e6_3590x1998.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:866274,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/167514873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5726cc55-8ad0-4265-9ba5-5911b08c09e6_3590x1998.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_!5AcT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5726cc55-8ad0-4265-9ba5-5911b08c09e6_3590x1998.png 424w, https://substackcdn.com/image/fetch/$s_!5AcT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5726cc55-8ad0-4265-9ba5-5911b08c09e6_3590x1998.png 848w, https://substackcdn.com/image/fetch/$s_!5AcT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5726cc55-8ad0-4265-9ba5-5911b08c09e6_3590x1998.png 1272w, https://substackcdn.com/image/fetch/$s_!5AcT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5726cc55-8ad0-4265-9ba5-5911b08c09e6_3590x1998.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Our AI Agent Settings in n8n</figcaption></figure></div><p>Here's where the magic happens. In the <strong>System Message</strong> field, you want to give your agent clear instructions about what it should do. </p><p>Here's what I used:</p><pre><code><code>Your job is to write a personal welcome email to new users signing up to the UserLoop survey app.

Use the website GET tool to get the user's website to help customise your welcome message and make it more personal.

Keep the email friendly, professional, and around 150-200 words.</code></code></pre><p>The key here is being specific about what you want the agent to do, but not being too prescriptive about how it should do it. </p><p>You want to give it enough flexibility to be creative while staying on task.</p><p>Give it instructions on when it should use tools, and what it should use them for.</p><h2>Step 5: Adding Tools to Your Agent</h2><p>This is where n8n really shines. We're going to give our agent access to three tools:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KlBm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57e281d4-7337-4ab8-b624-aa2158502b0b_2230x1298.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KlBm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57e281d4-7337-4ab8-b624-aa2158502b0b_2230x1298.png 424w, https://substackcdn.com/image/fetch/$s_!KlBm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57e281d4-7337-4ab8-b624-aa2158502b0b_2230x1298.png 848w, https://substackcdn.com/image/fetch/$s_!KlBm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57e281d4-7337-4ab8-b624-aa2158502b0b_2230x1298.png 1272w, https://substackcdn.com/image/fetch/$s_!KlBm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57e281d4-7337-4ab8-b624-aa2158502b0b_2230x1298.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KlBm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57e281d4-7337-4ab8-b624-aa2158502b0b_2230x1298.png" width="1456" height="847" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57e281d4-7337-4ab8-b624-aa2158502b0b_2230x1298.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:847,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:752864,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/167514873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57e281d4-7337-4ab8-b624-aa2158502b0b_2230x1298.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_!KlBm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57e281d4-7337-4ab8-b624-aa2158502b0b_2230x1298.png 424w, https://substackcdn.com/image/fetch/$s_!KlBm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57e281d4-7337-4ab8-b624-aa2158502b0b_2230x1298.png 848w, https://substackcdn.com/image/fetch/$s_!KlBm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57e281d4-7337-4ab8-b624-aa2158502b0b_2230x1298.png 1272w, https://substackcdn.com/image/fetch/$s_!KlBm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57e281d4-7337-4ab8-b624-aa2158502b0b_2230x1298.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Tool 1: OpenAI Chat Model</h3><p>This is the "brain" that will actually write the email content. Connect an OpenAI Chat Model node to your AI Agent.<br><br>I recommend using either the 4.1 model or o3 for more complex tasks.</p><h3>Tool 2: HTTP Request (Firecrawl)</h3><p>This tool will crawl the user's website to get content that the agent can use to personalise the email. Add an HTTP Request node and configure it to call the <a href="https://docs.firecrawl.dev/introduction">Firecrawl API</a>.</p><p>You'll need to sign up for a Firecrawl account and get an API key. The HTTP Request should be set up like this:</p><ul><li><p><strong>Method</strong>: POST</p></li><li><p><strong>URL</strong>: <code>https://api.firecrawl.dev/v0/scrape</code></p></li><li><p><strong>Headers</strong>: <code>Authorization: Bearer YOUR_FIRECRAWL_API_KEY</code></p></li><li><p><strong>Body</strong>: <code>{"url": "{{website_url_from_bubble}}"}</code></p></li></ul><h3>Tool 3: Gmail</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KfYQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ba260d6-4edc-4cd9-b0b1-153582879a78_3598x1998.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KfYQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ba260d6-4edc-4cd9-b0b1-153582879a78_3598x1998.png 424w, https://substackcdn.com/image/fetch/$s_!KfYQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ba260d6-4edc-4cd9-b0b1-153582879a78_3598x1998.png 848w, https://substackcdn.com/image/fetch/$s_!KfYQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ba260d6-4edc-4cd9-b0b1-153582879a78_3598x1998.png 1272w, https://substackcdn.com/image/fetch/$s_!KfYQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ba260d6-4edc-4cd9-b0b1-153582879a78_3598x1998.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KfYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ba260d6-4edc-4cd9-b0b1-153582879a78_3598x1998.png" width="1456" height="809" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ba260d6-4edc-4cd9-b0b1-153582879a78_3598x1998.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:809,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:543374,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/167514873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ba260d6-4edc-4cd9-b0b1-153582879a78_3598x1998.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_!KfYQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ba260d6-4edc-4cd9-b0b1-153582879a78_3598x1998.png 424w, https://substackcdn.com/image/fetch/$s_!KfYQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ba260d6-4edc-4cd9-b0b1-153582879a78_3598x1998.png 848w, https://substackcdn.com/image/fetch/$s_!KfYQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ba260d6-4edc-4cd9-b0b1-153582879a78_3598x1998.png 1272w, https://substackcdn.com/image/fetch/$s_!KfYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ba260d6-4edc-4cd9-b0b1-153582879a78_3598x1998.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Our Gmail tool lets the agent send emails from my personal Gmail account</figcaption></figure></div><p>Add a Gmail node and connect it to your AI Agent. You'll need to authenticate with your Gmail account <a href="https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/?utm_source=n8n_app&amp;utm_medium=node_settings_modal-credential_link&amp;utm_campaign=n8n-nodes-base.gmailTool">(n8n will walk you through this process).</a></p><p>The cool thing here is that you can set most of the fields to be "Defined automatically by the model" - this means the AI Agent will decide what to put in the subject line, email body, etc based on the data it has.</p><p>No fiddling around with annoying parameters, just click the magic icon and the agent will populate the field with the required data.  <em>This feature has made setting up agents in n8n so much easier!</em></p><h2></h2><h2>Step 6: Optional - Setting Up the Response Handler</h2><p>If you want to get the AI-generated email content back into Bubble (maybe to save it to your database or show it to the user), you can set up a response handler.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I47T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11be1066-fea8-459a-9422-1dd63963d083_3600x2024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I47T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11be1066-fea8-459a-9422-1dd63963d083_3600x2024.png 424w, https://substackcdn.com/image/fetch/$s_!I47T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11be1066-fea8-459a-9422-1dd63963d083_3600x2024.png 848w, https://substackcdn.com/image/fetch/$s_!I47T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11be1066-fea8-459a-9422-1dd63963d083_3600x2024.png 1272w, https://substackcdn.com/image/fetch/$s_!I47T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11be1066-fea8-459a-9422-1dd63963d083_3600x2024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I47T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11be1066-fea8-459a-9422-1dd63963d083_3600x2024.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/11be1066-fea8-459a-9422-1dd63963d083_3600x2024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:435865,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/167514873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11be1066-fea8-459a-9422-1dd63963d083_3600x2024.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_!I47T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11be1066-fea8-459a-9422-1dd63963d083_3600x2024.png 424w, https://substackcdn.com/image/fetch/$s_!I47T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11be1066-fea8-459a-9422-1dd63963d083_3600x2024.png 848w, https://substackcdn.com/image/fetch/$s_!I47T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11be1066-fea8-459a-9422-1dd63963d083_3600x2024.png 1272w, https://substackcdn.com/image/fetch/$s_!I47T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11be1066-fea8-459a-9422-1dd63963d083_3600x2024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">n8n can post data back to this backend workflow in our Bubble app</figcaption></figure></div><p></p><p>In your n8n workflow, add a final HTTP Request node that posts back to a Bubble backend workflow:</p><ul><li><p><strong>Method</strong>: POST</p></li><li><p><strong>URL</strong>: Your Bubble backend workflow endpoint</p></li><li><p><strong>Body</strong>: The generated email content from the AI Agent</p></li></ul><p>Then in Bubble, create a backend workflow that accepts this data and does whatever you want with it.</p><p>Don&#8217;t forget to make this workflow public, and if it&#8217;s not a secure endpoint allow it to be run without authentication.  If it needs to be a secure endpoint leave this unchecked and add an&#8230; </p><p><em>Authrozation: Bearer &lt;Get this key from your Bubble API settings tab&gt;</em></p><p>This will allow n8n to connect to Bubble securely.</p><h2>Step 7: Testing Your Integration</h2><p>Here's the fun part - let's test it!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P_1_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fbc9c6-c8e4-4a17-9dca-8ba9cee018c0_800x424.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P_1_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fbc9c6-c8e4-4a17-9dca-8ba9cee018c0_800x424.gif 424w, https://substackcdn.com/image/fetch/$s_!P_1_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fbc9c6-c8e4-4a17-9dca-8ba9cee018c0_800x424.gif 848w, https://substackcdn.com/image/fetch/$s_!P_1_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fbc9c6-c8e4-4a17-9dca-8ba9cee018c0_800x424.gif 1272w, https://substackcdn.com/image/fetch/$s_!P_1_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fbc9c6-c8e4-4a17-9dca-8ba9cee018c0_800x424.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P_1_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fbc9c6-c8e4-4a17-9dca-8ba9cee018c0_800x424.gif" width="800" height="424" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fbc9c6-c8e4-4a17-9dca-8ba9cee018c0_800x424.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:424,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:755573,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/167514873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fbc9c6-c8e4-4a17-9dca-8ba9cee018c0_800x424.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!P_1_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fbc9c6-c8e4-4a17-9dca-8ba9cee018c0_800x424.gif 424w, https://substackcdn.com/image/fetch/$s_!P_1_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fbc9c6-c8e4-4a17-9dca-8ba9cee018c0_800x424.gif 848w, https://substackcdn.com/image/fetch/$s_!P_1_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fbc9c6-c8e4-4a17-9dca-8ba9cee018c0_800x424.gif 1272w, https://substackcdn.com/image/fetch/$s_!P_1_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fbc9c6-c8e4-4a17-9dca-8ba9cee018c0_800x424.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The way n8n visualises agents running is so cool!</figcaption></figure></div><p></p><p><strong>Test the n8n workflow first</strong>: Use the "Execute workflow" button in n8n with some sample data</p><ol><li><p><strong>Test the Bubble API call</strong>: Use the "Initialize call" button in Bubble's API Connector</p></li><li><p><strong>Test the full integration</strong>: Trigger the API call from a workflow in your Bubble app</p></li></ol><p>When this agent ran, it scraped this demo website, wrote an email tailored to the user and then sent it via my Gmail account from me in my persona, here&#8217;s what that looked like&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zzdo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d65734-f166-46a7-af26-502f1a6705af_1179x2556.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zzdo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d65734-f166-46a7-af26-502f1a6705af_1179x2556.png 424w, https://substackcdn.com/image/fetch/$s_!Zzdo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d65734-f166-46a7-af26-502f1a6705af_1179x2556.png 848w, https://substackcdn.com/image/fetch/$s_!Zzdo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d65734-f166-46a7-af26-502f1a6705af_1179x2556.png 1272w, https://substackcdn.com/image/fetch/$s_!Zzdo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d65734-f166-46a7-af26-502f1a6705af_1179x2556.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zzdo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d65734-f166-46a7-af26-502f1a6705af_1179x2556.png" width="222" height="481.2824427480916" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/03d65734-f166-46a7-af26-502f1a6705af_1179x2556.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2556,&quot;width&quot;:1179,&quot;resizeWidth&quot;:222,&quot;bytes&quot;:288235,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/167514873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d65734-f166-46a7-af26-502f1a6705af_1179x2556.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_!Zzdo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d65734-f166-46a7-af26-502f1a6705af_1179x2556.png 424w, https://substackcdn.com/image/fetch/$s_!Zzdo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d65734-f166-46a7-af26-502f1a6705af_1179x2556.png 848w, https://substackcdn.com/image/fetch/$s_!Zzdo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d65734-f166-46a7-af26-502f1a6705af_1179x2556.png 1272w, https://substackcdn.com/image/fetch/$s_!Zzdo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03d65734-f166-46a7-af26-502f1a6705af_1179x2556.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2></h2><p>The quality of your AI Agent's output is heavily dependent on the instructions you give it. </p><p>Don't be afraid to iterate and refine your prompts based on the results you're getting. n8n also <a href="https://docs.n8n.io/advanced-ai/evaluations/overview/">recently added evaluations</a> which can let you see how changes you make to your prompting makes to the end result.</p><p>The beauty of this setup is that once it's working, you can easily extend it. Want to add more tools? Just connect them to your AI Agent. Want to change the email template? Just update the system message. Want to add more data from Bubble? Just update the API call.</p><p>Honestly once you build your first of these you&#8217;ll be totally hooked.  I can&#8217;t beliveve some of the things I&#8217;ve been able to build over the last few weeks (espescially when you hook your agent up to a RAG database).</p><p>This is just scratching the surface of what's possible when you combine Bubble's frontend power with n8n's AI capabilities. </p><p>In my next newsletter, I&#8217;m going to cover how to give your agents even more superpowers by using MCP servers in n8n - this is honestly so cool I can&#8217;t wait to write it up!</p><p>Let me know how you get on with this setup, I'd love to hear about the creative ways you're using AI agents in your apps!</p><p>As always if you have any feedback or questions drop me a reply to this issue, I really love hearing from you.<br><br>Happy building!!<br><br>James.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading NoCode SaaS! Subscribe for free!</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Build Your Own AI-Powered Database with n8n and Supabase]]></title><description><![CDATA[Learn how to setup Supabase to store documents with n8n and query them using a chat interface - or even an AI agent. It's easier than you think, I've made a complete guide and video!]]></description><link>https://www.nocodesaas.io/p/build-your-own-ai-powered-database</link><guid isPermaLink="false">https://www.nocodesaas.io/p/build-your-own-ai-powered-database</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 20 Jun 2025 13:27:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_sv-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba1cac-7b99-45c3-b42f-e116c5f0cd97_2168x1212.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to this week&#8217;s NoCode SaaS newsletter.</p><p>I wrote a while back about how I loved the idea of the "<a href="https://x.com/jonas/status/1876394297454711015">Self-Driving Startup</a>," which <a href="https://x.com/jonas">Jonas</a> spoke about at the recent <a href="https://createwith.com">Create With</a> conference (<a href="https://youtube.com/@createwithhq">videos coming this week on YouTube</a>)</p><p>I already automate tons of the operations for my own SaaS UserLoop and it has helped make it possible for me to grow and run it as a solo founder, it&#8217;s truly amazing what is possible now.</p><p>I'm going shift the focus of this newsletter to cover more of the tech that makes it possible for a startup to operate autonomously using AI, rather than just how to use nocode tools to build a SaaS</p><p>This is the first issue where I am primarily going to be looking at <a href="https://n8n.io">n8n</a> and <a href="https://supabase.io">Supabase</a> instead of <a href="https://bubble.io">Bubble</a>. </p><p>n8n is one of the key tools that I believe is going to make the self-driving startup possible for many. It&#8217;s a powerful and cost-effective tool, and I&#8217;ve built tons of automations that save me hours every day using it.</p><p>Today's tutorial is all about building your own custom AI-powered database, often called a Retrieval-Augmented Generation (RAG) system.  We recently made our own internal RAG system and it&#8217;s been a real eye opener for me, so I wanted to share how you can make your own step by step from scratch.</p><p>I&#8217;ve covered everything from building the workflow in n8n to creating the vectors in Supabase. I highly recommend watching the video, it starts with a demo of what it can do and then goes step by step with a guide you can follow along.<br><br>I&#8217;ve recorded the whole process in this YouTube video, from creating your Supabase account and setting up your database, to building your n8n workflow to automatically ingest documents from Google Drive and store them to your Supabase Vector Store.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://youtu.be/wa-Sna3r9eU" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_sv-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba1cac-7b99-45c3-b42f-e116c5f0cd97_2168x1212.png 424w, https://substackcdn.com/image/fetch/$s_!_sv-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba1cac-7b99-45c3-b42f-e116c5f0cd97_2168x1212.png 848w, https://substackcdn.com/image/fetch/$s_!_sv-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba1cac-7b99-45c3-b42f-e116c5f0cd97_2168x1212.png 1272w, https://substackcdn.com/image/fetch/$s_!_sv-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba1cac-7b99-45c3-b42f-e116c5f0cd97_2168x1212.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_sv-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba1cac-7b99-45c3-b42f-e116c5f0cd97_2168x1212.png" width="1456" height="814" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cba1cac-7b99-45c3-b42f-e116c5f0cd97_2168x1212.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:814,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1758133,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://youtu.be/wa-Sna3r9eU&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/166092164?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba1cac-7b99-45c3-b42f-e116c5f0cd97_2168x1212.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_!_sv-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba1cac-7b99-45c3-b42f-e116c5f0cd97_2168x1212.png 424w, https://substackcdn.com/image/fetch/$s_!_sv-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba1cac-7b99-45c3-b42f-e116c5f0cd97_2168x1212.png 848w, https://substackcdn.com/image/fetch/$s_!_sv-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba1cac-7b99-45c3-b42f-e116c5f0cd97_2168x1212.png 1272w, https://substackcdn.com/image/fetch/$s_!_sv-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba1cac-7b99-45c3-b42f-e116c5f0cd97_2168x1212.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://youtu.be/wa-Sna3r9eU&quot;,&quot;text&quot;:&quot;Watch the Tutorial&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youtu.be/wa-Sna3r9eU"><span>Watch the Tutorial</span></a></p><p><br>What this lets you do is train a custom AI on your own private data, like documents from your Google Drive, and then ask it questions about that information. </p><p>This is interesting because it allows you to create AI tools that can provide specific, contextual answers from your own knowledge base. </p><p>For this tutorial, we'll set up a simple chat interface to ask questions. However, the real potential here, which we can explore in future lessons, is extending this with the AI Agent node in n8n. </p><p>An agent could use this knowledge to perform more complex tasks, like pulling structured data out of your documents to use in other workflows.</p><p>It&#8217;s a lot easier to set up than you might first think, and you can build the entire thing without writing any code. We&#8217;ll start from a blank slate and build the n8n workflows to get data in and then query it back out.</p><p><a href="https://youtu.be/wa-Sna3r9eU">You can watch the entire tutorial on YouTube here.</a></p><h3>What are n8n and Supabase?</h3><p><strong>n8n</strong> is a workflow automation tool that lets you connect different applications and services together to create automated processes. Think of it like Zapier, but open-source and with more flexibility. </p><p>You can use their cloud-hosted version, or you can self-host it, which is incredibly cheap to operate and what we'll be assuming for this tutorial.  I personally host mine with <a href="http://elest.io">Elest.io</a> for $10/month, and it even handles updating the n8n software automatically.</p><p><strong>Supabase</strong> is an open-source hosted database. It gives you a suite of tools to build backends quickly, including a Postgres database, authentication, and storage. </p><p>For our purposes, we'll be using its Postgres database to create a "vector store," which is a specialized database for storing the numerical representations of our text data. </p><p>Supabase has a very generous free tier which is more than enough to get started and build this entire project.</p><h3>Part 1: Ingesting Your Data</h3><p>First, we need to get our custom information into a database that our AI can use. I'll show you a workflow that takes a file from Google Drive, processes it, and stores it in Supabase. </p><p>Before the data is stored, it goes through a crucial step: it's converted into a numerical format called a 'vector embedding' using OpenAI. </p><p>This process is what allows an AI to understand the semantic meaning and context of your text, so it can find the most relevant information later when you ask it a question. Think of it as creating a special map of your data that the AI can read.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XobU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6552124a-1a16-4f72-a8d8-cf3852ca4e44_3600x2074.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XobU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6552124a-1a16-4f72-a8d8-cf3852ca4e44_3600x2074.png 424w, https://substackcdn.com/image/fetch/$s_!XobU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6552124a-1a16-4f72-a8d8-cf3852ca4e44_3600x2074.png 848w, https://substackcdn.com/image/fetch/$s_!XobU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6552124a-1a16-4f72-a8d8-cf3852ca4e44_3600x2074.png 1272w, https://substackcdn.com/image/fetch/$s_!XobU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6552124a-1a16-4f72-a8d8-cf3852ca4e44_3600x2074.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XobU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6552124a-1a16-4f72-a8d8-cf3852ca4e44_3600x2074.png" width="1456" height="839" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6552124a-1a16-4f72-a8d8-cf3852ca4e44_3600x2074.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:839,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:475965,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/166092164?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6552124a-1a16-4f72-a8d8-cf3852ca4e44_3600x2074.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_!XobU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6552124a-1a16-4f72-a8d8-cf3852ca4e44_3600x2074.png 424w, https://substackcdn.com/image/fetch/$s_!XobU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6552124a-1a16-4f72-a8d8-cf3852ca4e44_3600x2074.png 848w, https://substackcdn.com/image/fetch/$s_!XobU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6552124a-1a16-4f72-a8d8-cf3852ca4e44_3600x2074.png 1272w, https://substackcdn.com/image/fetch/$s_!XobU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6552124a-1a16-4f72-a8d8-cf3852ca4e44_3600x2074.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Our RAG ingestion workflow in n8n for Google Drive to Supabase</figcaption></figure></div><p></p><p>The basic workflow looks like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NuSu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dcd6a77-2008-46b4-b25d-363473a79d4b_2222x732.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NuSu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dcd6a77-2008-46b4-b25d-363473a79d4b_2222x732.png 424w, https://substackcdn.com/image/fetch/$s_!NuSu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dcd6a77-2008-46b4-b25d-363473a79d4b_2222x732.png 848w, https://substackcdn.com/image/fetch/$s_!NuSu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dcd6a77-2008-46b4-b25d-363473a79d4b_2222x732.png 1272w, https://substackcdn.com/image/fetch/$s_!NuSu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dcd6a77-2008-46b4-b25d-363473a79d4b_2222x732.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NuSu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dcd6a77-2008-46b4-b25d-363473a79d4b_2222x732.png" width="1456" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2dcd6a77-2008-46b4-b25d-363473a79d4b_2222x732.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:132565,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/166092164?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dcd6a77-2008-46b4-b25d-363473a79d4b_2222x732.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_!NuSu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dcd6a77-2008-46b4-b25d-363473a79d4b_2222x732.png 424w, https://substackcdn.com/image/fetch/$s_!NuSu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dcd6a77-2008-46b4-b25d-363473a79d4b_2222x732.png 848w, https://substackcdn.com/image/fetch/$s_!NuSu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dcd6a77-2008-46b4-b25d-363473a79d4b_2222x732.png 1272w, https://substackcdn.com/image/fetch/$s_!NuSu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dcd6a77-2008-46b4-b25d-363473a79d4b_2222x732.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol><li><p><strong>Trigger</strong> when a new file is added to a Google Drive folder.</p></li><li><p><strong>Download</strong> the file and extract its text.</p></li><li><p><strong>Encode</strong> the text into a numerical format (called an "embedding") using OpenAI.</p></li><li><p><strong>Save</strong> the encoded data into our RAG database in Supabase.</p></li></ol><h4><strong>Step 1: Setting Up Your Supabase Project</strong></h4><ul><li><p>Head to Supabase and select "New Project." Give it a name (e.g., "n8n-rag-tutorial") and a strong password. Make sure to save this password, as you'll need it later.</p></li><li><p>Once the project is ready, you need your API credentials. <br><br>Go to <strong>Project Settings &gt; API</strong>. Copy the <strong>URL (Host)</strong> from the Project URL field and the <strong>service_role secret key</strong> from the Project API Keys section. These will let n8n connect to your database.</p></li></ul><h4><strong>Step 2: Preparing the Database in Supabase</strong></h4><p>Our AI needs a specific type of table to store the data and its embeddings. The n8n documentation makes this straightforward.</p><ul><li><p>In the Supabase Vector Store node documentation within n8n, there is a "Quick Start" section with a ready-made SQL script.</p></li><li><p>Copy this script.</p></li><li><p>In your Supabase project, go to the <strong>SQL Editor</strong>, paste the script into a new query, and run it.</p></li><li><p>This creates a new table called <code>documents</code> with all the necessary columns (<code>content</code>, <code>metadata</code>, and <code>embeddings</code>) already set up. Your database is now ready to receive data.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KemI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f1d4fef-131f-4879-8f84-d9193e3ba301_3600x2076.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KemI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f1d4fef-131f-4879-8f84-d9193e3ba301_3600x2076.png 424w, https://substackcdn.com/image/fetch/$s_!KemI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f1d4fef-131f-4879-8f84-d9193e3ba301_3600x2076.png 848w, https://substackcdn.com/image/fetch/$s_!KemI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f1d4fef-131f-4879-8f84-d9193e3ba301_3600x2076.png 1272w, https://substackcdn.com/image/fetch/$s_!KemI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f1d4fef-131f-4879-8f84-d9193e3ba301_3600x2076.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KemI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f1d4fef-131f-4879-8f84-d9193e3ba301_3600x2076.png" width="1456" height="840" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f1d4fef-131f-4879-8f84-d9193e3ba301_3600x2076.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:840,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:453768,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/166092164?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f1d4fef-131f-4879-8f84-d9193e3ba301_3600x2076.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_!KemI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f1d4fef-131f-4879-8f84-d9193e3ba301_3600x2076.png 424w, https://substackcdn.com/image/fetch/$s_!KemI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f1d4fef-131f-4879-8f84-d9193e3ba301_3600x2076.png 848w, https://substackcdn.com/image/fetch/$s_!KemI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f1d4fef-131f-4879-8f84-d9193e3ba301_3600x2076.png 1272w, https://substackcdn.com/image/fetch/$s_!KemI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f1d4fef-131f-4879-8f84-d9193e3ba301_3600x2076.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This is what the documents table looks like in Supabase, you can see the embeddings column with the encoded data.</figcaption></figure></div><h4><strong>Step 3: Building the Ingestion Workflow in n8n</strong></h4><p>Now, let's build the n8n workflow to populate this database.</p><ol><li><p><strong>Get the Data:</strong> Start with a <strong>Google Drive node</strong> set to "Download File." Point it to a specific Google Doc you want to use. Make sure to set the Google File Conversion to download the doc as plain text.</p></li><li><p><strong>Extract Text:</strong> Add an <strong>Extract from File</strong> node to get the raw text from the downloaded binary file.</p></li><li><p><strong>Upsert to Vector Store:</strong> This is the main step. Add the <strong>Supabase Vector Store</strong> node.</p><ul><li><p><strong>Action:</strong> Set the action to <code>Upsert</code>.</p></li><li><p><strong>Credentials:</strong> Connect it to the Supabase account using the Host and Service Role Key you saved earlier.</p></li><li><p><strong>Embeddings:</strong> You need to tell n8n how to encode the text. Select <code>OpenAI</code> as the embedding tool and choose an embedding model like <code>text-embedding-small</code>.</p></li><li><p><strong>Metadata:</strong> This is useful for filtering later. Add a metadata field, for instance, <code>type</code> with the value <code>doc</code>. This way, you can have the AI query only documents if you add other data sources like tweets in the future.</p></li></ul></li></ol><p>When you run this workflow, n8n will download the file, extract the text, convert it into embeddings, and load it into your Supabase table. If the document is long, the text splitter will break it into smaller chunks, creating multiple rows in your database.</p><h3>Part 2: Querying Your Data with an AI Agent</h3><p>With data in our database, we can now set up an AI agent to chat with it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LrUv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62c81f3-be20-46df-8b51-2e8c25bb6021_800x459.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LrUv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62c81f3-be20-46df-8b51-2e8c25bb6021_800x459.gif 424w, https://substackcdn.com/image/fetch/$s_!LrUv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62c81f3-be20-46df-8b51-2e8c25bb6021_800x459.gif 848w, https://substackcdn.com/image/fetch/$s_!LrUv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62c81f3-be20-46df-8b51-2e8c25bb6021_800x459.gif 1272w, https://substackcdn.com/image/fetch/$s_!LrUv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62c81f3-be20-46df-8b51-2e8c25bb6021_800x459.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LrUv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62c81f3-be20-46df-8b51-2e8c25bb6021_800x459.gif" width="800" height="459" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c62c81f3-be20-46df-8b51-2e8c25bb6021_800x459.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:459,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:707693,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/166092164?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62c81f3-be20-46df-8b51-2e8c25bb6021_800x459.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LrUv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62c81f3-be20-46df-8b51-2e8c25bb6021_800x459.gif 424w, https://substackcdn.com/image/fetch/$s_!LrUv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62c81f3-be20-46df-8b51-2e8c25bb6021_800x459.gif 848w, https://substackcdn.com/image/fetch/$s_!LrUv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62c81f3-be20-46df-8b51-2e8c25bb6021_800x459.gif 1272w, https://substackcdn.com/image/fetch/$s_!LrUv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62c81f3-be20-46df-8b51-2e8c25bb6021_800x459.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Chatting with our vector store in n8n</figcaption></figure></div><h4><strong>Step 4: Creating the Chat Workflow in n8n</strong></h4><ol><li><p><strong>Chat Trigger:</strong> Start with a trigger node, <strong>On Chat Message</strong>, which provides a simple chat interface for testing.</p></li><li><p><strong>AI Agent:</strong> Add an <strong>AI Agent</strong> node. Here, you'll configure the main AI model, for example, <code>OpenAI GPT-4.1</code>.</p></li><li><p><strong>Memory:</strong> To remember the conversation history, the agent needs memory. For this, we'll use our Supabase database. Select the <strong>Postgres</strong> memory option. You'll need to create a new credential for this.</p><ul><li><p>Go to your Supabase project's <strong>Database settings</strong> and find the <strong>Connection string</strong>. Copy the Host, Database name, User, and Port details into the n8n Postgres credential configuration. For the password, use the main project password you set up in Step 1.</p></li></ul></li></ol><h4><strong>Step 5: Giving Your Agent the Right Tool</strong></h4><p>An AI agent needs tools to perform actions. We need to give it a tool to access our custom knowledge.</p><ul><li><p>In the AI Agent node, go to <strong>Tools</strong> and add the <strong>Supabase Vector Store</strong>.</p></li><li><p><strong>Name &amp; Description:</strong> This is important. Give the tool a descriptive name like <code>Company Documents</code> and a clear description like <code>Contains documents about the Create With conference</code>. The AI uses this description to decide when to use this tool.</p></li><li><p><strong>Configuration:</strong> Connect it to your Supabase credentials, select the <code>documents</code> table, and point it to your OpenAI embeddings model, just as you did in the ingestion workflow.</p></li></ul><h4><strong>Step 6: Asking Your First Question</strong></h4><p>Now you're ready to test it. Activate the workflow, open the chat panel, and ask a question related to the document you uploaded, like, "What do you know about the Create with conference?"</p><p>The AI agent will:</p><ol><li><p>Receive your question.</p></li><li><p>Analyze it and determine the "Company Documents" tool is the best way to find the answer.</p></li><li><p>Use the tool to query your Supabase vector database.</p></li><li><p>Receive the relevant text from your original document.</p></li><li><p>Use that text to form an answer and display it in the chat.</p></li></ol><p>That&#8217;s it for this week!</p><p>You've just seen how to take text content, load it into a vector database, and build a custom AI agent to query it, all without writing any code!<br><br>You can expand this by adding data from websites, Twitter, LinkedIn, and more. The setup is also quite inexpensive to run, using the free tiers of the tools.  I&#8217;m using it for all sorts of things now and it&#8217;s amazingly powerful.</p><p>In the next edition I&#8217;ll dive a bit more into loading in data from other sources like Twitter, and building an AI agent which can complete tasks using intelligence it can get from your vector store.</p><p>I hope you found this helpful. Let me know if you end up trying this method!!</p><p>Until next time, happy building! </p><p>James</p>]]></content:encoded></item><item><title><![CDATA[Inside Our Conference iOS App (Built with Bubble & AI)]]></title><description><![CDATA[I'm back from Create With! Learn how we leveraged Bubble for Native Mobile to build our conference apps for iOS and Android, and integrated AI agents (all in under a month!)]]></description><link>https://www.nocodesaas.io/p/inside-our-conference-ios-app-built</link><guid isPermaLink="false">https://www.nocodesaas.io/p/inside-our-conference-ios-app-built</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 30 May 2025 15:33:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GmoH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca74e57-9ef9-4c23-9613-7013791dfc96_1600x1067.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there!<br><br>Welcome to the first edition of the NoCode SaaS newsletter in a while! This is the newsletter where I take you along on the journey of building a profitable software business using NoCode and AI tools.</p><p>This is the week after the <a href="https://createwith.com">Create With Conference</a> which I help organise in London with <a href="https://x.com/nocodelife">Kieran</a> and <a href="https://x.com/ashamplifies">Ash</a>.  This was our second year of running the conference and we managed to double the event in size and run it across 3 days.  There were tons of workshops, speaking sessions and fireside chats, all revolving helping people to create with AI and visual development tools.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GmoH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca74e57-9ef9-4c23-9613-7013791dfc96_1600x1067.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GmoH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca74e57-9ef9-4c23-9613-7013791dfc96_1600x1067.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GmoH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca74e57-9ef9-4c23-9613-7013791dfc96_1600x1067.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GmoH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca74e57-9ef9-4c23-9613-7013791dfc96_1600x1067.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GmoH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca74e57-9ef9-4c23-9613-7013791dfc96_1600x1067.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GmoH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca74e57-9ef9-4c23-9613-7013791dfc96_1600x1067.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ca74e57-9ef9-4c23-9613-7013791dfc96_1600x1067.jpeg&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;:473845,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/164805870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca74e57-9ef9-4c23-9613-7013791dfc96_1600x1067.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GmoH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca74e57-9ef9-4c23-9613-7013791dfc96_1600x1067.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GmoH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca74e57-9ef9-4c23-9613-7013791dfc96_1600x1067.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GmoH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca74e57-9ef9-4c23-9613-7013791dfc96_1600x1067.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GmoH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca74e57-9ef9-4c23-9613-7013791dfc96_1600x1067.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The amazing volunteers who made the conference happen!</figcaption></figure></div><p>I appologise for the slight gap with newsletter issues - a huge amount of work goes into running the conference so my focus has been on that for a few months. </p><p>We actually built a ton of custom software to run and operate the conference, and I&#8217;m going to dive into a few of the things we built in today&#8217;s issue.</p><p>One of my favourite sessions at the conference this year was a fireside chat Monzo cofounder <a href="https://x.com/jonas">Jonas Templestein</a> and <a href="https://x.com/charlierward">Charlie Ward</a>.  </p><p>I&#8217;ve covered Jonas&#8217; writing in the newsletter previously, particularly around the concept of &#8216;<a href="https://www.nocodesaas.io/p/ai-agents-building-the-self-driving">Self Driving Startups</a>&#8217; which can build and operate autonomously.</p><p></p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/w_200,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6deaac0a-889f-414e-8cd7-94f4d51ad442.heic&quot;},{&quot;type&quot;:&quot;image/heic&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6287ccb-8528-4427-9ccd-999e71b34f03.heic&quot;},{&quot;type&quot;:&quot;image/heic&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3fb864de-6586-42d7-8c5c-8744dbd20885.heic&quot;},{&quot;type&quot;:&quot;image/heic&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bc4193e0-011a-4578-968b-873f4cdb9572.heic&quot;},{&quot;type&quot;:&quot;image/heic&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9e5d9ac-3acd-45e8-8da9-476dc0ab5697.heic&quot;},{&quot;type&quot;:&quot;image/heic&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee564820-b10a-41a7-a921-c67f4bc48aad.heic&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e2e2cbe-4942-4605-a4d9-cffeb484e4d0_1456x964.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p></p><p>The session was super inspirational and really brought home for me just how close we are to startups being able to build and operate themselves.  Not only building new features and writing code - but also handling support, finances, operations and much more.  Pretty much everything required to run a startup.</p><p>Indeed - I&#8217;m aiming to make my startup <a href="https://userloop.io">UserLoop</a> as much of a self driving startup as possible.  The app is currently written in <a href="https://bubble.io">Bubble</a> with a lot of <a href="https://workers.cloudflare.com/">Cloudflare Workers</a> as I&#8217;ve covered in the past, but recently I&#8217;ve also been extending it with n8n AI Agents to complete tasks and take over entire functions of running the company.</p><p>Some of the most popular sessions at the conference were about AI agents, and I&#8217;m going to be covering them a lot more in this newsletter over the coming weeks.</p><p>Back to this issue though!  This week I want to share with you some of the custom software we built to help us run the <a href="https://createwith.com">Create With Conference</a>.</p><p>I&#8217;m going to focus on our Native Mobile Apps for iOS and Android, and AI Agents we built to support the app.</p><h2>Building a native app with Bubble</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w4j9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa567be11-8939-417b-9e6f-379634641e6f_1489x838.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w4j9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa567be11-8939-417b-9e6f-379634641e6f_1489x838.jpeg 424w, https://substackcdn.com/image/fetch/$s_!w4j9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa567be11-8939-417b-9e6f-379634641e6f_1489x838.jpeg 848w, https://substackcdn.com/image/fetch/$s_!w4j9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa567be11-8939-417b-9e6f-379634641e6f_1489x838.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!w4j9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa567be11-8939-417b-9e6f-379634641e6f_1489x838.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w4j9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa567be11-8939-417b-9e6f-379634641e6f_1489x838.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a567be11-8939-417b-9e6f-379634641e6f_1489x838.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:194707,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/164805870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa567be11-8939-417b-9e6f-379634641e6f_1489x838.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!w4j9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa567be11-8939-417b-9e6f-379634641e6f_1489x838.jpeg 424w, https://substackcdn.com/image/fetch/$s_!w4j9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa567be11-8939-417b-9e6f-379634641e6f_1489x838.jpeg 848w, https://substackcdn.com/image/fetch/$s_!w4j9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa567be11-8939-417b-9e6f-379634641e6f_1489x838.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!w4j9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa567be11-8939-417b-9e6f-379634641e6f_1489x838.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>After getting access to the beta for <a href="https://bubble.io/mobile">Bubble for Native Mobile Apps</a> we decided to play around with it and see if we could put together an app for the conference that showed the schedule, venue map and let attendees network with each other through public profiles.</p><p>The only issue was - this was with a month left to go until the conference.  So I wasn&#8217;t sure we&#8217;d be able to put the app together ourselves and get it launched on the iOS and Android App Stores in time!</p><p>Thankfully the marketing site for <a href="https://createwith.com">Create With</a> was already running on Bubble which gave us a head start and made putting the app togehter much quicker.  <a href="https://x.com/nocodelife">Kieran</a> did an amazing job of designing a schedule view for the web which showed all the sessions happening on every stage. We already had most of the data types we needed - like speakers, conference sessions etc.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RQmm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd8b09a-7735-4711-adc5-3723cee3e294_3520x1926.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RQmm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd8b09a-7735-4711-adc5-3723cee3e294_3520x1926.png 424w, https://substackcdn.com/image/fetch/$s_!RQmm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd8b09a-7735-4711-adc5-3723cee3e294_3520x1926.png 848w, https://substackcdn.com/image/fetch/$s_!RQmm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd8b09a-7735-4711-adc5-3723cee3e294_3520x1926.png 1272w, https://substackcdn.com/image/fetch/$s_!RQmm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd8b09a-7735-4711-adc5-3723cee3e294_3520x1926.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RQmm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd8b09a-7735-4711-adc5-3723cee3e294_3520x1926.png" width="1456" height="797" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5cd8b09a-7735-4711-adc5-3723cee3e294_3520x1926.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:797,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:562878,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/164805870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd8b09a-7735-4711-adc5-3723cee3e294_3520x1926.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_!RQmm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd8b09a-7735-4711-adc5-3723cee3e294_3520x1926.png 424w, https://substackcdn.com/image/fetch/$s_!RQmm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd8b09a-7735-4711-adc5-3723cee3e294_3520x1926.png 848w, https://substackcdn.com/image/fetch/$s_!RQmm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd8b09a-7735-4711-adc5-3723cee3e294_3520x1926.png 1272w, https://substackcdn.com/image/fetch/$s_!RQmm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cd8b09a-7735-4711-adc5-3723cee3e294_3520x1926.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Kieran built a brilliant web view for the conference sessions all in Bubble</figcaption></figure></div><p>After spending a day or two with the new Bubble Native Mobile editor I was confident we would be able to put something together.  It works very similarly to the web version with the visual editor and workflows. <br><br>The primary difference for me was how navigation works.  With the fixed tab bar at the bottom and top of app sheets, navigating between views etc but this didn&#8217;t take long to get the hang of.</p><p>The other huge benefit of running the main website and native apps on Bubble was that they all ran off the same database.  So as we updated speakers, sessions and other data it was synced immediately everywhere.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kAD2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6d58e5-47a8-4a7a-a0cb-09d32e89d891_1179x2556.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kAD2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6d58e5-47a8-4a7a-a0cb-09d32e89d891_1179x2556.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kAD2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6d58e5-47a8-4a7a-a0cb-09d32e89d891_1179x2556.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kAD2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6d58e5-47a8-4a7a-a0cb-09d32e89d891_1179x2556.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kAD2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6d58e5-47a8-4a7a-a0cb-09d32e89d891_1179x2556.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kAD2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6d58e5-47a8-4a7a-a0cb-09d32e89d891_1179x2556.jpeg" width="282" height="611.3587786259542" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b6d58e5-47a8-4a7a-a0cb-09d32e89d891_1179x2556.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2556,&quot;width&quot;:1179,&quot;resizeWidth&quot;:282,&quot;bytes&quot;:836222,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/164805870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6d58e5-47a8-4a7a-a0cb-09d32e89d891_1179x2556.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kAD2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6d58e5-47a8-4a7a-a0cb-09d32e89d891_1179x2556.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kAD2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6d58e5-47a8-4a7a-a0cb-09d32e89d891_1179x2556.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kAD2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6d58e5-47a8-4a7a-a0cb-09d32e89d891_1179x2556.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kAD2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6d58e5-47a8-4a7a-a0cb-09d32e89d891_1179x2556.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Bringing the schedule into the native app using the same database and elements</figcaption></figure></div><p>The main concern I had was whether we&#8217;d be able to get through the App Store Review processes on Apple and Google&#8217;s app stores.  We didn&#8217;t have any accounts on either of them so we&#8217;d need to sign up and get everything approved in under a month, I wasn&#8217;t sure if it could be done but we decided to give it a go anyway!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GkvU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda5daf-ac17-453f-84fa-f75fcc4c38a2_3596x1994.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GkvU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda5daf-ac17-453f-84fa-f75fcc4c38a2_3596x1994.png 424w, https://substackcdn.com/image/fetch/$s_!GkvU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda5daf-ac17-453f-84fa-f75fcc4c38a2_3596x1994.png 848w, https://substackcdn.com/image/fetch/$s_!GkvU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda5daf-ac17-453f-84fa-f75fcc4c38a2_3596x1994.png 1272w, https://substackcdn.com/image/fetch/$s_!GkvU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda5daf-ac17-453f-84fa-f75fcc4c38a2_3596x1994.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GkvU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda5daf-ac17-453f-84fa-f75fcc4c38a2_3596x1994.png" width="1456" height="807" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9eda5daf-ac17-453f-84fa-f75fcc4c38a2_3596x1994.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:807,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1098044,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/164805870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda5daf-ac17-453f-84fa-f75fcc4c38a2_3596x1994.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_!GkvU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda5daf-ac17-453f-84fa-f75fcc4c38a2_3596x1994.png 424w, https://substackcdn.com/image/fetch/$s_!GkvU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda5daf-ac17-453f-84fa-f75fcc4c38a2_3596x1994.png 848w, https://substackcdn.com/image/fetch/$s_!GkvU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda5daf-ac17-453f-84fa-f75fcc4c38a2_3596x1994.png 1272w, https://substackcdn.com/image/fetch/$s_!GkvU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda5daf-ac17-453f-84fa-f75fcc4c38a2_3596x1994.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>After about a week of putting the core screens together we had a basic version of the app ready to go and tested in the BubbleGo app simulator (this is an app in the app store which lets you test out your Bubble app without it having to go via Testflight or the App Store)</p><p>The next step was signing up for developer accounts on Apple and Google.</p><p>This whole process took about a 4 days to get all the accounts up and running, there is a ton of KYC and admin to go through to verify your identity.</p><p>I was quite suprised that the process for signing up and deploying on the Apple App Stores was way easier than on Android! I was able to get our first test flight built released within another day or two.</p><p>Then we were able to get a few people to help us out with testing the app on their own phones and added a few more features.</p><p>Then about 2 weeks before the conference we went ahead and submitted the apps to both app stores and waited for the response.</p><p>Apple came back within a matter of hours with a list of changes we had to make to the app, thankfully these were all quite straight forward things like allowing users to delete their account, and giving more detailed explanations for the permissions we were asking for when accessing the user&#8217;s camera rolls.</p><p>Android was accepted on the first attempt without any changes required - however I didn&#8217;t get any notification it had been approved.  The first thing I knew was when I next logged in and found the app was live on the Google Play Store &#129315;</p><p>Bubble for Native Mobile is releasing their public beta very soon on June 10th! <a href="https://www.producthunt.com/products/bubble">Check out their ProductHunt page to keep updated on the release.</a></p><p>I can&#8217;t wait to start building more native apps with Bubble - making the conference app has gotten me very excited about being able to build native mobile apps for the first time!</p><p><strong>AI Agents in the App</strong></p><p>We wanted to push things a bit further with the app - adding a few AI features to help people connect with others at the conference and also find the sessions that might be most relevent for them.</p><p>To do this I used the Cloudflare Workers method I&#8217;ve discussed previously in this newsletter and made 3 simple workers which we could then call from the Bubble API Connector.</p><p>Here are the three AI agents we made to help within the app&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q-by!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d27984f-4661-4f4b-9630-3cb26e6cd698_3526x1914.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q-by!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d27984f-4661-4f4b-9630-3cb26e6cd698_3526x1914.png 424w, https://substackcdn.com/image/fetch/$s_!Q-by!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d27984f-4661-4f4b-9630-3cb26e6cd698_3526x1914.png 848w, https://substackcdn.com/image/fetch/$s_!Q-by!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d27984f-4661-4f4b-9630-3cb26e6cd698_3526x1914.png 1272w, https://substackcdn.com/image/fetch/$s_!Q-by!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d27984f-4661-4f4b-9630-3cb26e6cd698_3526x1914.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q-by!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d27984f-4661-4f4b-9630-3cb26e6cd698_3526x1914.png" width="1456" height="790" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d27984f-4661-4f4b-9630-3cb26e6cd698_3526x1914.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:790,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:601365,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/164805870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d27984f-4661-4f4b-9630-3cb26e6cd698_3526x1914.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_!Q-by!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d27984f-4661-4f4b-9630-3cb26e6cd698_3526x1914.png 424w, https://substackcdn.com/image/fetch/$s_!Q-by!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d27984f-4661-4f4b-9630-3cb26e6cd698_3526x1914.png 848w, https://substackcdn.com/image/fetch/$s_!Q-by!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d27984f-4661-4f4b-9630-3cb26e6cd698_3526x1914.png 1272w, https://substackcdn.com/image/fetch/$s_!Q-by!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d27984f-4661-4f4b-9630-3cb26e6cd698_3526x1914.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Attendee Moderator.</strong>  This is a simple worker which moderated user profiles using Google Gemini - mostly to protect against pranksters putting inappropriate photos on their profile or in their profile text.  </p><p>It was fairly simple in how it worked, we sent through the user&#8217;s profile text and their profile photo then asked Gemini to return a yes/no for whether it was a spam profile.  </p><p>If it was yes we updated the user&#8217;s profile to be hidden in Bubble so users wouldn&#8217;t see it in the list of attendees in our app.</p><p><strong>Session Matcher.  </strong>This worker was designed to help match attendees with sessions they were interested in.  Again it was made using Google Gemini, and we passed in a user&#8217;s profile information along with a list of all the sessions happening at the conference from the database.</p><p>Then we asked Gemini to suggest around 5 sessions the user might be interested in based on their profile - and a short explanation of why we think they&#8217;d like the session.</p><p>This is how recommendations were shown in the app&#8230; </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rhnr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bf13ced-2e63-4da1-b437-6de709916f96_1179x2556.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rhnr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bf13ced-2e63-4da1-b437-6de709916f96_1179x2556.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rhnr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bf13ced-2e63-4da1-b437-6de709916f96_1179x2556.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rhnr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bf13ced-2e63-4da1-b437-6de709916f96_1179x2556.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rhnr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bf13ced-2e63-4da1-b437-6de709916f96_1179x2556.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rhnr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bf13ced-2e63-4da1-b437-6de709916f96_1179x2556.jpeg" width="300" height="650.3816793893129" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1bf13ced-2e63-4da1-b437-6de709916f96_1179x2556.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2556,&quot;width&quot;:1179,&quot;resizeWidth&quot;:300,&quot;bytes&quot;:1078042,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/164805870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bf13ced-2e63-4da1-b437-6de709916f96_1179x2556.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rhnr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bf13ced-2e63-4da1-b437-6de709916f96_1179x2556.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rhnr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bf13ced-2e63-4da1-b437-6de709916f96_1179x2556.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rhnr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bf13ced-2e63-4da1-b437-6de709916f96_1179x2556.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rhnr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bf13ced-2e63-4da1-b437-6de709916f96_1179x2556.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We had some really good feedback about this feature, it helped a lot of people pick which sessions they went to on the day!</p><p><strong>Attendee Matchmaker. </strong></p><p>It was also important to us to help attendees connect in person on the day of the conference so we made a final AI agent which was a matchmaker.  We sent through the current user&#8217;s profile and a list of all other attendee bios, and then asked for a short list of attendees that would be a good connection.</p><p>Thanks to Google Gemini&#8217;s large context windows this worked really well, even when sending in hundreds of attendees for a potnential match.</p><p>We got lots of feedback that people loved their recommendations and had met up with each other - next time we want to take this even further and make it more of a game experience.</p><p></p><p><strong>That&#8217;s it for this week!</strong></p><p><br>If you&#8217;re interested in hearing more about building with Bubble Native Mobile or AI Agents in Bubble drop me a reply - I&#8217;d be more than happy to do a more in depth dive into how they work and how to get start with building apps and agents!</p><p>Thanks again for reading and I hope you found this interesting - I&#8217;ll be getting back to a more regular schedule with the newsletter now that the conference is finished!</p><p>Happy building!<br><br>James</p><div><hr></div><p>The next Create With meetup is happening very soon, and we&#8217;re going international! <a href="https://lu.ma/l8tryivb?&amp;utm_campaign=NoCodeSaaS">The next event is in Madrid next week on June 2nd - check it out here!</a></p><p>If you&#8217;d like a weekly email about everything in AI &amp; Visual Development checkout the Create With Newsletter below - you&#8217;ll also be first to hear about future meetups and events :)</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://createwith.com/ai-newsletter&quot;,&quot;text&quot;:&quot;Subscribe to the Create With Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://createwith.com/ai-newsletter"><span>Subscribe to the Create With Newsletter</span></a></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading NoCode SaaS! Subscribe for free to receive new posts</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[How to make your Bubble content rank on Google by integrating Ghost]]></title><description><![CDATA[Discover how to boost your Bubble app's Google rankings by integrating Ghost as your blog backend. This practical guide covers essential SEO optimization techniques for Bubble, including proper page titles, meta descriptions, header tags, and image optimization. Learn our proven method for serving Ghost-powered blog content directly on your Bubble app's root domain for maximum SEO impact. Perfect for NoCode SaaS builders looking to increase organic traffic without compromising on content quality or publishing experience.]]></description><link>https://www.nocodesaas.io/p/how-to-make-your-bubble-content-rank</link><guid isPermaLink="false">https://www.nocodesaas.io/p/how-to-make-your-bubble-content-rank</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 14 Mar 2025 16:10:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ec9057c9-a51a-4646-8f0f-5ca9a073bd1a_800x419.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there!<br><br>Welcome to this week&#8217;s NoCode SaaS newsletter, where I take you along on the ride of building a profitable SaaS business without code using AI and <a href="https://bubble.io">Bubble</a>.</p><p>This week I wanted to take a look at a topic which is often discussed - how to get your content ranking highly on Bubble and optimising your SEO.</p><p>I&#8217;m going to touch on a few of the basics of getting Bubble optimised for SEO as well as another technique I use for running my own blog on the <a href="https://userloop.io">UserLoop</a> site using <a href="https://ghost.io">Ghost</a> as a backend.</p><h2>Deciding whether to use Bubble for your blog.</h2><p>If you&#8217;re early on in your project it&#8217;s worth spending a bit of time thinking through how you&#8217;re going to host your app and marketing content.</p><p>This is one of those decisions which can be a bit tricky to unpack later so it&#8217;s worth spending some time to get it right at the start.</p><p>When I launched UserLoop (which started out as a weekend side project) I decided to host both the app and the marketing site on the same Bubble app on the same domain.</p><p>While this does have some benefits like being able to build a slick integrated signup flow there&#8217;s also a bunch of tradeoffs.</p><p>For example, if you want to run a blog and attract traffic from search you&#8217;ll need to think how to host your blog.</p><p>It&#8217;s not really an option to host your blog content on a subdomain like blog.yourdomain.com, I tried this in the early days and it didn&#8217;t rank in Google at all.</p><p>It&#8217;s super important that however you decide to host your marketing content that is lives on the root domain of your app.</p><p>As such, now looking back it would have been much better to host the UserLoop app on a subdomain like app.userloop.io, that would have given me the choice to use whatever I wanted to run the marketing site.</p><p>However, I&#8217;ve managed to make everything work with having everything on the root domain and rank well for my key target search terms.</p><p>In this issue I&#8217;m going to cover 2 of the main things I learned from optimising Bubble for SEO and getting it to rank highly.</p><ul><li><p>The basics of configuring Bubble to be indexable by search engines</p></li><li><p>How to use Ghost to serve as the backend for your blog and serve content via Bubble</p></li></ul><p>By following a few simple steps you can easily get your Bubble based pages to start ranking in Google.</p><h3>Bubble Basic SEO: Getting Started with Search-Friendly Pages</h3><p>Let&#8217;s dig into making your Bubble content actually show up on Google. </p><p>It&#8217;s defiantly possible to rank well with Bubble based content despite what you might think.  Even though Bubble&#8217;s page speed load times arent the best, if you follow some simple basics you can still rank well.  (I believe Bubble are also still working on improving page load speeds further by pre-rendering content server side) </p><p>So let&#8217;s get into some of the basics&#8230;</p><h4>1. Sort Out Your Page Titles and Meta Descriptions</h4><p>You&#8217;ve got to tell Google what your blog post is about, and Bubble makes it pretty simple. Open up the property editor for your blog page&#8212;that&#8217;s the panel on the right when you&#8217;re tinkering with a page. Look under &#8220;SEO/metatags&#8221; for &#8220;Title&#8221; and &#8220;Description.&#8221;</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MLfS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35936ff-8d12-458a-89b0-a5591fb56a93_2354x1946.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MLfS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35936ff-8d12-458a-89b0-a5591fb56a93_2354x1946.png 424w, https://substackcdn.com/image/fetch/$s_!MLfS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35936ff-8d12-458a-89b0-a5591fb56a93_2354x1946.png 848w, https://substackcdn.com/image/fetch/$s_!MLfS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35936ff-8d12-458a-89b0-a5591fb56a93_2354x1946.png 1272w, https://substackcdn.com/image/fetch/$s_!MLfS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35936ff-8d12-458a-89b0-a5591fb56a93_2354x1946.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MLfS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35936ff-8d12-458a-89b0-a5591fb56a93_2354x1946.png" width="1456" height="1204" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a35936ff-8d12-458a-89b0-a5591fb56a93_2354x1946.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1204,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:664959,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/159066477?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35936ff-8d12-458a-89b0-a5591fb56a93_2354x1946.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_!MLfS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35936ff-8d12-458a-89b0-a5591fb56a93_2354x1946.png 424w, https://substackcdn.com/image/fetch/$s_!MLfS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35936ff-8d12-458a-89b0-a5591fb56a93_2354x1946.png 848w, https://substackcdn.com/image/fetch/$s_!MLfS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35936ff-8d12-458a-89b0-a5591fb56a93_2354x1946.png 1272w, https://substackcdn.com/image/fetch/$s_!MLfS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35936ff-8d12-458a-89b0-a5591fb56a93_2354x1946.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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><ul><li><p><strong>Page Title:</strong> Keep it short and shove your main keyword in there. Stick to under 60 characters so Google doesn&#8217;t chop it. <br><br>You can set it static or pull it from your database if your titles are dynamic. Bubble&#8217;s got more on this <a href="https://manual.bubble.io/help-guides/maintaining-an-application/seo/introduction-to-seo">here</a>.<br><br>In the above example you can see how I&#8217;m injecting this content from my database (though it&#8217;s actually coming via Ghost, I&#8217;ll cover that in more detail later)<br></p></li><li><p><strong>Meta Description:</strong> This is your quick pitch&#8212;280 characters max&#8212;that pops up in search results. Again I&#8217;m pulling this content from the database, I actually have a workflow set up which writes this text using OpenAI whenever I publish a blog post (more on that later)</p></li></ul><p></p><h4>2. Chuck in Some Headers for Structure</h4><p>Headers aren&#8217;t just pretty&#8212;they help Google figure out your post and keep readers from bouncing. Bubble&#8217;s got a switch to flip for this.</p><ul><li><p><strong>Turn On Header Tags:</strong> Pop into the &#8220;Settings&#8221; tab in your app, scroll to &#8220;SEO,&#8221; and tick &#8220;Enable header tags in text elements.&#8221; That unlocks H1, H2, and so on in your text options&#8212;check Bubble&#8217;s guide <a href="https://manual.bubble.io/help-guides/building-an-app/text-elements#header-tags">here</a>.</p></li><li><p><strong>Set Them Up:</strong> For your main blog title&#8212;like &#8220;Master Bubble Workflows in 5 Steps&#8221;&#8212;add a text element, set it to H1 in the style dropdown, and link it to your post&#8217;s title field if it&#8217;s dynamic. </p><p></p><p>Then, for bits like &#8220;Step 1: Plan Your Workflow,&#8221; use H2s. Just pick &#8220;Heading 2&#8221; in the appearance settings. It&#8217;s a no-brainer way to keep things tidy for Bubble users and Google.<br><br>Depending on how you&#8217;re hosting your Bubble blog content you can either add these H tags manually, or if you use the same Ghost method as me it will take care of this formatting for you.<br><br></p></li></ul><h4>3. Trim Down Images So It Loads Quick</h4><p>Big images can tank your Bubble site&#8217;s speed.  Thankfully Bubble has some built in tools to help optimise images.</p><p>Wherever you use images in your blog content templates, ideally use the <em>:processed with Imigx </em>function.  This means Bubble will automatically optimise the image and serve the smallest version possible.<br><br>I use quality at 75% with resize to fit dimensions by cropping enabled.  You could even lower this quality setting down if you&#8217;re just showing thumbnail images.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LiUe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b271c5b-4e07-4afd-b1d3-afd8e907a102_1888x1530.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LiUe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b271c5b-4e07-4afd-b1d3-afd8e907a102_1888x1530.png 424w, https://substackcdn.com/image/fetch/$s_!LiUe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b271c5b-4e07-4afd-b1d3-afd8e907a102_1888x1530.png 848w, https://substackcdn.com/image/fetch/$s_!LiUe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b271c5b-4e07-4afd-b1d3-afd8e907a102_1888x1530.png 1272w, https://substackcdn.com/image/fetch/$s_!LiUe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b271c5b-4e07-4afd-b1d3-afd8e907a102_1888x1530.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LiUe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b271c5b-4e07-4afd-b1d3-afd8e907a102_1888x1530.png" width="1456" height="1180" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b271c5b-4e07-4afd-b1d3-afd8e907a102_1888x1530.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1180,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:512499,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/159066477?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b271c5b-4e07-4afd-b1d3-afd8e907a102_1888x1530.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_!LiUe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b271c5b-4e07-4afd-b1d3-afd8e907a102_1888x1530.png 424w, https://substackcdn.com/image/fetch/$s_!LiUe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b271c5b-4e07-4afd-b1d3-afd8e907a102_1888x1530.png 848w, https://substackcdn.com/image/fetch/$s_!LiUe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b271c5b-4e07-4afd-b1d3-afd8e907a102_1888x1530.png 1272w, https://substackcdn.com/image/fetch/$s_!LiUe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b271c5b-4e07-4afd-b1d3-afd8e907a102_1888x1530.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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><h4>4. Link Up Your Pages to Keep Folks Around</h4><p>It&#8217;s really important to make sure you&#8217;re linking content in Bubble correctly to make sure Google can index it correctly.</p><p>Most importantly - don&#8217;t use Buttons or Workflow based links for your content - Google can&#8217;t see them!</p><p>You need to use the built in Bubble &#8216;Link&#8217; element type.  This formats the link in a way that it&#8217;s indexable by Google.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UXv1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e15b32b-dcae-4561-b7f7-ac3be6e50fc8_3062x1726.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UXv1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e15b32b-dcae-4561-b7f7-ac3be6e50fc8_3062x1726.png 424w, https://substackcdn.com/image/fetch/$s_!UXv1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e15b32b-dcae-4561-b7f7-ac3be6e50fc8_3062x1726.png 848w, https://substackcdn.com/image/fetch/$s_!UXv1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e15b32b-dcae-4561-b7f7-ac3be6e50fc8_3062x1726.png 1272w, https://substackcdn.com/image/fetch/$s_!UXv1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e15b32b-dcae-4561-b7f7-ac3be6e50fc8_3062x1726.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UXv1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e15b32b-dcae-4561-b7f7-ac3be6e50fc8_3062x1726.png" width="1456" height="821" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e15b32b-dcae-4561-b7f7-ac3be6e50fc8_3062x1726.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:821,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1807012,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/159066477?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e15b32b-dcae-4561-b7f7-ac3be6e50fc8_3062x1726.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_!UXv1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e15b32b-dcae-4561-b7f7-ac3be6e50fc8_3062x1726.png 424w, https://substackcdn.com/image/fetch/$s_!UXv1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e15b32b-dcae-4561-b7f7-ac3be6e50fc8_3062x1726.png 848w, https://substackcdn.com/image/fetch/$s_!UXv1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e15b32b-dcae-4561-b7f7-ac3be6e50fc8_3062x1726.png 1272w, https://substackcdn.com/image/fetch/$s_!UXv1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e15b32b-dcae-4561-b7f7-ac3be6e50fc8_3062x1726.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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><h4>5. Hand Your Sitemap to Google</h4><p>It&#8217;s also important to make sure you&#8217;ve enabled Bubble&#8217;s sitemaps in your app&#8217;s SEO/Metatags settings page.  By default Bubble creates  a sitemap for you at &#8220;yourapp.com/sitemap.xml&#8221; with all your public pages, and also a sitemap for each page linked to a database type.</p><p>I recommend enabling these three options in your SEO settings.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wjsj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5240da2-942e-4dc3-9a64-824abf4466ce_2850x424.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wjsj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5240da2-942e-4dc3-9a64-824abf4466ce_2850x424.png 424w, https://substackcdn.com/image/fetch/$s_!wjsj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5240da2-942e-4dc3-9a64-824abf4466ce_2850x424.png 848w, https://substackcdn.com/image/fetch/$s_!wjsj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5240da2-942e-4dc3-9a64-824abf4466ce_2850x424.png 1272w, https://substackcdn.com/image/fetch/$s_!wjsj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5240da2-942e-4dc3-9a64-824abf4466ce_2850x424.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wjsj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5240da2-942e-4dc3-9a64-824abf4466ce_2850x424.png" width="1456" height="217" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5240da2-942e-4dc3-9a64-824abf4466ce_2850x424.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:217,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:86868,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/159066477?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5240da2-942e-4dc3-9a64-824abf4466ce_2850x424.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_!wjsj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5240da2-942e-4dc3-9a64-824abf4466ce_2850x424.png 424w, https://substackcdn.com/image/fetch/$s_!wjsj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5240da2-942e-4dc3-9a64-824abf4466ce_2850x424.png 848w, https://substackcdn.com/image/fetch/$s_!wjsj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5240da2-942e-4dc3-9a64-824abf4466ce_2850x424.png 1272w, https://substackcdn.com/image/fetch/$s_!wjsj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5240da2-942e-4dc3-9a64-824abf4466ce_2850x424.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This means the H tags will be correctly exposed for the content on your pages.</p><h1>Connecting Ghost &amp; Bubble to serve your site&#8217;s blog content.</h1><p>I searched for a long time for a solution which would let me host a blog on the main root domain of my Bubble app at /blog.  I tried out several different methods without great results.</p><p>I tried building the blog fully within Bubble, saving the blog content to the Bubble database and serving it from there too.  </p><p>Unfortunately this had a few drawbacks, firstly all the WYSIWYG editors for actually writing and editing the blog content were pretty poor.  And then I also found that serving the blog content from the Bubble DB made pages load far too slowly, and images embedded in posts weren&#8217;t optimised.</p><p>It was important for me to not only have content served quickly, but to also have a nice writing environment in the editor for creating posts.</p><p>This is when I started exploring Ghost more, to see whether I could use it with Bubble to host my blog content.</p><p>Ghost not only has a gorgeous post editor and wide support amongst other tools like Zapier, it&#8217;s super easy to use and affordable.</p><p>At first my plan was to try and point my /blog page directly to Ghost using some URL / DNS tricks with Cloudflare.  Unfortunately this didn&#8217;t prove to be possible to I started considering other approaches.</p><p>This led to me investigating the APIs that Ghost offered.  I wondered if there would be a way to host all my blog content in Ghost then dynamically pull it into Bubble and render it on Bubble.</p><p>I discovered that <a href="https://ghost.org/docs/content-api/#posts">Ghost had a Content API</a> which you could use to pull entire post content, including the full HTML of the post.</p><p>This returns the following object, including things like the slug, title, post html and a lot more.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iAs0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2a37e5-8f1e-47f2-a79c-249cf2a9016a_1716x874.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iAs0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2a37e5-8f1e-47f2-a79c-249cf2a9016a_1716x874.png 424w, https://substackcdn.com/image/fetch/$s_!iAs0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2a37e5-8f1e-47f2-a79c-249cf2a9016a_1716x874.png 848w, https://substackcdn.com/image/fetch/$s_!iAs0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2a37e5-8f1e-47f2-a79c-249cf2a9016a_1716x874.png 1272w, https://substackcdn.com/image/fetch/$s_!iAs0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2a37e5-8f1e-47f2-a79c-249cf2a9016a_1716x874.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iAs0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2a37e5-8f1e-47f2-a79c-249cf2a9016a_1716x874.png" width="1456" height="742" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a2a37e5-8f1e-47f2-a79c-249cf2a9016a_1716x874.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:179504,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/159066477?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2a37e5-8f1e-47f2-a79c-249cf2a9016a_1716x874.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_!iAs0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2a37e5-8f1e-47f2-a79c-249cf2a9016a_1716x874.png 424w, https://substackcdn.com/image/fetch/$s_!iAs0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2a37e5-8f1e-47f2-a79c-249cf2a9016a_1716x874.png 848w, https://substackcdn.com/image/fetch/$s_!iAs0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2a37e5-8f1e-47f2-a79c-249cf2a9016a_1716x874.png 1272w, https://substackcdn.com/image/fetch/$s_!iAs0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2a37e5-8f1e-47f2-a79c-249cf2a9016a_1716x874.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>My next step was to experiment with setting this up in Bubble via the API connector.<br><br>The plan was to pull in the content for a specific blog post using the content API and render it on a page in Bubble.</p><p>Thankfully, given that the key that Ghost generates is just for reading content I was able to use the feature in Bubble to &#8216;attempt to make the call from the browser&#8217; which calls the API directly from the user&#8217;s browser making it super fast.</p><p>This is how it looks set up in the API connector in Bubble&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NptI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd74d861d-f213-4445-b421-ff74cc76e814_1832x1136.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NptI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd74d861d-f213-4445-b421-ff74cc76e814_1832x1136.png 424w, https://substackcdn.com/image/fetch/$s_!NptI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd74d861d-f213-4445-b421-ff74cc76e814_1832x1136.png 848w, https://substackcdn.com/image/fetch/$s_!NptI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd74d861d-f213-4445-b421-ff74cc76e814_1832x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!NptI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd74d861d-f213-4445-b421-ff74cc76e814_1832x1136.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NptI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd74d861d-f213-4445-b421-ff74cc76e814_1832x1136.png" width="1456" height="903" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d74d861d-f213-4445-b421-ff74cc76e814_1832x1136.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:903,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:222156,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/159066477?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd74d861d-f213-4445-b421-ff74cc76e814_1832x1136.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_!NptI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd74d861d-f213-4445-b421-ff74cc76e814_1832x1136.png 424w, https://substackcdn.com/image/fetch/$s_!NptI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd74d861d-f213-4445-b421-ff74cc76e814_1832x1136.png 848w, https://substackcdn.com/image/fetch/$s_!NptI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd74d861d-f213-4445-b421-ff74cc76e814_1832x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!NptI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd74d861d-f213-4445-b421-ff74cc76e814_1832x1136.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>So to test this out, we just need to create a post in Ghost, and get it&#8217;s ID and past it in to this call to pull the content into Bubble to initialise the API Connector.</p><p>We want to set this up as a data type of &#8216;Data&#8217; as we&#8217;re eventually going to pull this in when a page is loaded and render the content inside a HTML element.</p><p>Next, I created a page in Bubble, placed a simple HTML on it and made a group on the page which called the Ghost Content API and pulled in the post data.</p><p>Then I just render the &#8216;html&#8217; value from the post and render it in an HTML element.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z4lv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a52ffe6-93d5-4a1f-ab72-c19e338382c6_2736x1954.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z4lv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a52ffe6-93d5-4a1f-ab72-c19e338382c6_2736x1954.png 424w, https://substackcdn.com/image/fetch/$s_!Z4lv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a52ffe6-93d5-4a1f-ab72-c19e338382c6_2736x1954.png 848w, https://substackcdn.com/image/fetch/$s_!Z4lv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a52ffe6-93d5-4a1f-ab72-c19e338382c6_2736x1954.png 1272w, https://substackcdn.com/image/fetch/$s_!Z4lv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a52ffe6-93d5-4a1f-ab72-c19e338382c6_2736x1954.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z4lv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a52ffe6-93d5-4a1f-ab72-c19e338382c6_2736x1954.png" width="1456" height="1040" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a52ffe6-93d5-4a1f-ab72-c19e338382c6_2736x1954.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1040,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:874729,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/159066477?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a52ffe6-93d5-4a1f-ab72-c19e338382c6_2736x1954.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_!Z4lv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a52ffe6-93d5-4a1f-ab72-c19e338382c6_2736x1954.png 424w, https://substackcdn.com/image/fetch/$s_!Z4lv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a52ffe6-93d5-4a1f-ab72-c19e338382c6_2736x1954.png 848w, https://substackcdn.com/image/fetch/$s_!Z4lv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a52ffe6-93d5-4a1f-ab72-c19e338382c6_2736x1954.png 1272w, https://substackcdn.com/image/fetch/$s_!Z4lv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a52ffe6-93d5-4a1f-ab72-c19e338382c6_2736x1954.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I tested this out and it worked really well! The page loaded instantly (the Ghost content API seems to be lightning fast).  Even really long posts containing tons of content loaded instantly.</p><p>Once I realised this could work well I started looking into the next step, how to sync the content between Ghost and Bubble automatically.</p><p>One thing to note is you need to apply a bit of a &lt;style&gt; element in Bubble for everything to style correctly from Ghost with all the proper formatting.  <em>If you&#8217;d like a copy of the style tag I used to make this work just drop me a reply to this post and I&#8217;ll send it over.</em></p><h2>Connecting Bubble &amp; Ghost using Webhooks</h2><p>The first thing I realised is that I would need a simple table in Bubble which stored a few key fields in order to render the pages.</p><p>So I created a new data type in Bubble called &#8216;Post&#8217; with the fields</p><p>Ghost Post ID - the ID of the given post from Ghost in order to pull the content over the content API</p><p><strong>Post Title</strong> - The title of the blog post</p><p><strong>Featured Image</strong> - The featured image of the post</p><p><strong>Snippet</strong> - A short 280 Char snippet of the article content for SEO purposes</p><p><strong>Author</strong> - Optional extra field containing the authour of the post.</p><p>You could also add a few other fields, but I just wanted this data type to be very lean and fast loading, after all we&#8217;re pulling the bulk of the content from Ghost.</p><p><br>The next step was to keep Ghost in Sync with Bubble.</p><p>I decided to do this using Ghost&#8217;s webhooks feature.</p><p>So heading into Ghost, I created a new integration. <br><br>Then I selected custom and &#8216;Add custom integration.&#8217;</p><p>Then I gave the integration the name <em>Bubble</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BQVf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f105a-4bc0-41b7-8af5-21ee7d1a0d17_2742x2060.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BQVf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f105a-4bc0-41b7-8af5-21ee7d1a0d17_2742x2060.png 424w, https://substackcdn.com/image/fetch/$s_!BQVf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f105a-4bc0-41b7-8af5-21ee7d1a0d17_2742x2060.png 848w, https://substackcdn.com/image/fetch/$s_!BQVf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f105a-4bc0-41b7-8af5-21ee7d1a0d17_2742x2060.png 1272w, https://substackcdn.com/image/fetch/$s_!BQVf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f105a-4bc0-41b7-8af5-21ee7d1a0d17_2742x2060.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BQVf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f105a-4bc0-41b7-8af5-21ee7d1a0d17_2742x2060.png" width="1456" height="1094" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c1f105a-4bc0-41b7-8af5-21ee7d1a0d17_2742x2060.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1094,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:629247,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/159066477?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f105a-4bc0-41b7-8af5-21ee7d1a0d17_2742x2060.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_!BQVf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f105a-4bc0-41b7-8af5-21ee7d1a0d17_2742x2060.png 424w, https://substackcdn.com/image/fetch/$s_!BQVf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f105a-4bc0-41b7-8af5-21ee7d1a0d17_2742x2060.png 848w, https://substackcdn.com/image/fetch/$s_!BQVf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f105a-4bc0-41b7-8af5-21ee7d1a0d17_2742x2060.png 1272w, https://substackcdn.com/image/fetch/$s_!BQVf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c1f105a-4bc0-41b7-8af5-21ee7d1a0d17_2742x2060.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Then I needed to set up 2 new webhooks which call backend workflows in Bubble.</p><ul><li><p><strong>One when a new post is published.</strong>  This creates a new record in the Bubble posts table with the Ghost ID of the new post.</p></li><li><p>One when a post is updated.  <strong>If a post is edited in Ghost we want to update Bubble</strong> with the new title, image etc.  We need another backend workflow to run to make that update.</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_!GwRW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F861771fa-83a0-418b-87fd-ab25cb6da9a5_2128x1980.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GwRW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F861771fa-83a0-418b-87fd-ab25cb6da9a5_2128x1980.png 424w, https://substackcdn.com/image/fetch/$s_!GwRW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F861771fa-83a0-418b-87fd-ab25cb6da9a5_2128x1980.png 848w, https://substackcdn.com/image/fetch/$s_!GwRW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F861771fa-83a0-418b-87fd-ab25cb6da9a5_2128x1980.png 1272w, https://substackcdn.com/image/fetch/$s_!GwRW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F861771fa-83a0-418b-87fd-ab25cb6da9a5_2128x1980.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GwRW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F861771fa-83a0-418b-87fd-ab25cb6da9a5_2128x1980.png" width="1456" height="1355" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/861771fa-83a0-418b-87fd-ab25cb6da9a5_2128x1980.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1355,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:511790,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/159066477?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F861771fa-83a0-418b-87fd-ab25cb6da9a5_2128x1980.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_!GwRW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F861771fa-83a0-418b-87fd-ab25cb6da9a5_2128x1980.png 424w, https://substackcdn.com/image/fetch/$s_!GwRW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F861771fa-83a0-418b-87fd-ab25cb6da9a5_2128x1980.png 848w, https://substackcdn.com/image/fetch/$s_!GwRW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F861771fa-83a0-418b-87fd-ab25cb6da9a5_2128x1980.png 1272w, https://substackcdn.com/image/fetch/$s_!GwRW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F861771fa-83a0-418b-87fd-ab25cb6da9a5_2128x1980.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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 what the Webhook setup looks like in Ghost.  You can see the 2 webhooks I set up to keep data in sync.</p><p>Back in Bubble I set up 2 new backend workflows using the &#8216;Detect data&#8217; method which picks up the API request structure from Ghost.</p><p>For the create a post workflow these are the steps I use&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EDe8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36b56b88-8f03-43b4-84c0-159dd543d202_2214x1378.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EDe8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36b56b88-8f03-43b4-84c0-159dd543d202_2214x1378.png 424w, https://substackcdn.com/image/fetch/$s_!EDe8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36b56b88-8f03-43b4-84c0-159dd543d202_2214x1378.png 848w, https://substackcdn.com/image/fetch/$s_!EDe8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36b56b88-8f03-43b4-84c0-159dd543d202_2214x1378.png 1272w, https://substackcdn.com/image/fetch/$s_!EDe8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36b56b88-8f03-43b4-84c0-159dd543d202_2214x1378.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EDe8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36b56b88-8f03-43b4-84c0-159dd543d202_2214x1378.png" width="1456" height="906" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36b56b88-8f03-43b4-84c0-159dd543d202_2214x1378.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:906,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:191117,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/159066477?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36b56b88-8f03-43b4-84c0-159dd543d202_2214x1378.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_!EDe8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36b56b88-8f03-43b4-84c0-159dd543d202_2214x1378.png 424w, https://substackcdn.com/image/fetch/$s_!EDe8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36b56b88-8f03-43b4-84c0-159dd543d202_2214x1378.png 848w, https://substackcdn.com/image/fetch/$s_!EDe8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36b56b88-8f03-43b4-84c0-159dd543d202_2214x1378.png 1272w, https://substackcdn.com/image/fetch/$s_!EDe8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36b56b88-8f03-43b4-84c0-159dd543d202_2214x1378.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Then we want to create a new &#8216;Post&#8217; in our Bubble database using the data we receive from Ghost.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CJsg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a54aed-29f0-41b7-86b0-e527a94cfbab_1798x1256.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CJsg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a54aed-29f0-41b7-86b0-e527a94cfbab_1798x1256.png 424w, https://substackcdn.com/image/fetch/$s_!CJsg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a54aed-29f0-41b7-86b0-e527a94cfbab_1798x1256.png 848w, https://substackcdn.com/image/fetch/$s_!CJsg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a54aed-29f0-41b7-86b0-e527a94cfbab_1798x1256.png 1272w, https://substackcdn.com/image/fetch/$s_!CJsg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a54aed-29f0-41b7-86b0-e527a94cfbab_1798x1256.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CJsg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a54aed-29f0-41b7-86b0-e527a94cfbab_1798x1256.png" width="1456" height="1017" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67a54aed-29f0-41b7-86b0-e527a94cfbab_1798x1256.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1017,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:176338,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/159066477?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a54aed-29f0-41b7-86b0-e527a94cfbab_1798x1256.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_!CJsg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a54aed-29f0-41b7-86b0-e527a94cfbab_1798x1256.png 424w, https://substackcdn.com/image/fetch/$s_!CJsg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a54aed-29f0-41b7-86b0-e527a94cfbab_1798x1256.png 848w, https://substackcdn.com/image/fetch/$s_!CJsg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a54aed-29f0-41b7-86b0-e527a94cfbab_1798x1256.png 1272w, https://substackcdn.com/image/fetch/$s_!CJsg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a54aed-29f0-41b7-86b0-e527a94cfbab_1798x1256.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We also get a field called &#8216;slug&#8217; from Ghost which we want to use to set the slug for the Post in our Bubble database.  This means the URL we set in Ghost will be the same in Ghost.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fxrU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e675f7e-50b4-4a7d-a584-b6c90c27ea79_1642x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fxrU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e675f7e-50b4-4a7d-a584-b6c90c27ea79_1642x742.png 424w, https://substackcdn.com/image/fetch/$s_!fxrU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e675f7e-50b4-4a7d-a584-b6c90c27ea79_1642x742.png 848w, https://substackcdn.com/image/fetch/$s_!fxrU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e675f7e-50b4-4a7d-a584-b6c90c27ea79_1642x742.png 1272w, https://substackcdn.com/image/fetch/$s_!fxrU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e675f7e-50b4-4a7d-a584-b6c90c27ea79_1642x742.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fxrU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e675f7e-50b4-4a7d-a584-b6c90c27ea79_1642x742.png" width="1456" height="658" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e675f7e-50b4-4a7d-a584-b6c90c27ea79_1642x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:658,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:95130,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/159066477?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e675f7e-50b4-4a7d-a584-b6c90c27ea79_1642x742.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_!fxrU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e675f7e-50b4-4a7d-a584-b6c90c27ea79_1642x742.png 424w, https://substackcdn.com/image/fetch/$s_!fxrU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e675f7e-50b4-4a7d-a584-b6c90c27ea79_1642x742.png 848w, https://substackcdn.com/image/fetch/$s_!fxrU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e675f7e-50b4-4a7d-a584-b6c90c27ea79_1642x742.png 1272w, https://substackcdn.com/image/fetch/$s_!fxrU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e675f7e-50b4-4a7d-a584-b6c90c27ea79_1642x742.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Then we also set up a similar workflow for the update action which basically is doing the same thing but instead of creating a new record it&#8217;s searching for existing records matching the given Ghost Post ID.</p><p>With all that in place we have everything we need to start publishing content to Bubble from Ghost using the beautiful Ghost post editor.</p><div><hr></div><p><strong>That&#8217;s it for this week!</strong><br><br>Hope you find it helpful, let me know if you end up trying this method.  I&#8217;ve used it across two Bubble apps I work on and it&#8217;s been great for helping us rank and made it really easy to publish more content with Bubble.<br><br>Don&#8217;t forget, the <a href="https://createwith.com/">Create With AI Conference</a> I help organise is coming to London on 22nd May.  <a href="https://createwith.com/">&#163;99 Advance tickets are still available</a> if you&#8217;re interested in coming along - we&#8217;re going to be talking everything AI and NoCode.  It would be great to see you there.</p><p>Until next time, happy building!</p><p>James</p><p></p><div><hr></div><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading NoCode SaaS! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[AI-Powered Decision Making: Using DeepSeek with Cloudflare AI and Bubble]]></title><description><![CDATA[How to add AI-powered decision-making to your Bubble app using DeepSeek on Cloudflare AI. It's easier thank you think!]]></description><link>https://www.nocodesaas.io/p/deepseek-bubble-cloudflare-ai-nocode</link><guid isPermaLink="false">https://www.nocodesaas.io/p/deepseek-bubble-cloudflare-ai-nocode</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 21 Feb 2025 16:31:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!An5M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fa54ddd-2440-4785-ab30-9cd120d9f241_2288x1272.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there!</p><p>Welcome to this week&#8217;s NoCode SaaS newsletter, where I take you along on the journey of building profitable businesses without code using <a href="https://bubble.io">Bubble</a> and AI.</p><p>This week, I&#8217;m excited to share how you can add AI-driven decision-making to your app without code. <br><br>We&#8217;ll be using <strong><a href="https://deepseek.com">DeepSeek</a></strong>, a reasoning model on <strong><a href="https://ai.cloudflare.com">Cloudflare Workers AI</a></strong> to analyse data and make decisions&#8212;all without even needing an API key!<br><br>I&#8217;ve put together a simple demo where we&#8217;ll build an &#8220;agent&#8221; that analyzes a supermarket stock report and provides key insights, like identifying items at risk of spoilage and recommending actions to minimize losses. <br><br>It&#8217;s easy to set up, and I&#8217;ll walk you through every step. It&#8217;s not as hard as you&#8217;re probably thinking!<br><br>I&#8217;ve recently switched some of the logic in my own app <a href="https://userloop.io">UserLoop</a> over to using this method and it&#8217;s an amazing tool to have in your pocket, while working alongside the other LLMs <a href="https://www.nocodesaas.io/p/cloudflare-workers-nocode-bubble">we&#8217;ve covered previously like GPT-4o.</a><br><br>I&#8217;ve recorded a short video showing exactly how to set everything up, I <a href="https://www.tella.tv/video/reasoning-models-and-bubble-68mp">highly recommend watching it</a>, though I&#8217;ve also put together a step by step guide below too.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.tella.tv/video/reasoning-models-and-bubble-68mp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!An5M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fa54ddd-2440-4785-ab30-9cd120d9f241_2288x1272.png 424w, https://substackcdn.com/image/fetch/$s_!An5M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fa54ddd-2440-4785-ab30-9cd120d9f241_2288x1272.png 848w, https://substackcdn.com/image/fetch/$s_!An5M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fa54ddd-2440-4785-ab30-9cd120d9f241_2288x1272.png 1272w, https://substackcdn.com/image/fetch/$s_!An5M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fa54ddd-2440-4785-ab30-9cd120d9f241_2288x1272.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!An5M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fa54ddd-2440-4785-ab30-9cd120d9f241_2288x1272.png" width="1456" height="809" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fa54ddd-2440-4785-ab30-9cd120d9f241_2288x1272.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:809,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3697319,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.tella.tv/video/reasoning-models-and-bubble-68mp&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/157625901?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fa54ddd-2440-4785-ab30-9cd120d9f241_2288x1272.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_!An5M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fa54ddd-2440-4785-ab30-9cd120d9f241_2288x1272.png 424w, https://substackcdn.com/image/fetch/$s_!An5M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fa54ddd-2440-4785-ab30-9cd120d9f241_2288x1272.png 848w, https://substackcdn.com/image/fetch/$s_!An5M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fa54ddd-2440-4785-ab30-9cd120d9f241_2288x1272.png 1272w, https://substackcdn.com/image/fetch/$s_!An5M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fa54ddd-2440-4785-ab30-9cd120d9f241_2288x1272.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://www.tella.tv/video/reasoning-models-and-bubble-68mp&quot;,&quot;text&quot;:&quot;Watch the tutorial&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.tella.tv/video/reasoning-models-and-bubble-68mp"><span>Watch the tutorial</span></a></p><div><hr></div><h3><strong>Why Use DeepSeek on Cloudflare Workers with Your NoCode App?</strong></h3><p>So why exactly do I think you should consider Deepseek for your app? And how does it work with Bubble?</p><h4><strong>1. No API Key Needed</strong></h4><p>With Cloudflare Workers AI, you can run DeepSeek directly on Cloudflare&#8217;s infrastructure without needing an API key. <br><br>It&#8217;s all handled seamlessly within your Cloudflare account.  <br><br>Plus that means no sending data outside the US/EU, it all runs inside Cloudflare&#8217;s network.</p><h4><strong>2. Incredibly Cost-Effective</strong></h4><p>Running AI models can get expensive, but Cloudflare Workers AI is budget-friendly. For DeepSeek, it&#8217;s just $0.50 per million input tokens and $0.488 per million output tokens. <br><br>That&#8217;s a steal for the power you&#8217;re getting, especially when compared to other AI services.</p><h4><strong>3. No Code Required</strong></h4><p>You don&#8217;t need to be a developer to set this up. We&#8217;ll use AI (specifically, <a href="https://grok.com">Grok3</a>) to generate the entire Cloudflare Worker code for us. <br><br>From there, it&#8217;s just a matter of copying, pasting, and deploying. <br><br>If you can follow a tutorial, you can do this.</p><h4><strong>4. Easy Integration with NoCode Tools</strong></h4><p>Once your Cloudflare Worker is set up, you can easily call it from Bubble, Zapier, or any other platform that supports API requests. <br><br>In this demo, I&#8217;ll show you how to integrate it with Bubble using the API Connector - it&#8217;s super easy.</p><h4><strong>5. Powerful Reasoning Capabilities</strong></h4><p>DeepSeek is a reasoning model, meaning it can analyse data, make decisions, and provide structured outputs based on complex criteria. <br><br>In my example, it will analyse a stock report, identify at-risk items, calculate potential financial losses, and recommend actions&#8212;all in seconds.</p><h4></h4><div><hr></div><h3><strong>What We&#8217;re Building: A Supermarket Stock Analyzer</strong></h3><p>To demonstrate the power of DeepSeek on Cloudflare Workers, we&#8217;re going to build a simple &#8220;agent&#8221; that:</p><ul><li><p><strong>Analyses a supermarket stock report</strong> (provided as JSON) <a href="https://docs.google.com/document/d/1utG13If9tB8dEUGm2pTEx77UzGJf8MAdncSsuytv5Gg/edit?usp=sharing">here&#8217;s a link to the dummy report I used if you want to try it for yourself.</a></p></li><li><p><strong>Identifies the top two items at greatest risk of spoilage</strong> based on sell-by dates and stock levels.</p></li><li><p><strong>Estimates the potential financial impact</strong> if those items aren&#8217;t sold in time.</p></li><li><p><strong>Recommends two actions</strong> to minimise the risk of loss (e.g., discounting items or promoting them).</p><p></p><p></p><p>This is just a starting point&#8212;once you see how it works, you can adapt it to analyse any kind of data relevant to your app.</p></li></ul><div><hr></div><h3><strong>Step-by-Step Tutorial: Setting Up Your AI-Powered Agent</strong></h3><p>Here&#8217;s how to build this in under 10 minutes:</p><h4><strong>Step 1: Understand the Data</strong></h4><p>We&#8217;ll be working with a <a href="https://docs.google.com/document/d/1utG13If9tB8dEUGm2pTEx77UzGJf8MAdncSsuytv5Gg/edit?usp=sharing">sample supermarket stock report</a> that includes:</p><ul><li><p>Item names</p></li><li><p>Sell-by dates</p></li><li><p>Cost per unit</p></li><li><p>Weekly sales rates</p></li><li><p>Stockroom details</p><p></p><p>This data will be sent to our Cloudflare Worker as JSON, and DeepSeek will analyse it to provide insights.</p></li></ul><h4><strong>Step 2: Choose the Right Model</strong></h4><p>Cloudflare Workers AI offers several models, but for reasoning tasks, <strong>DeepSeek R1</strong> is a great choice. </p><p>It&#8217;s affordable and powerful enough for our needs. You can find it in the <a href="https://developers.cloudflare.com/workers-ai/models/">Cloudflare AI Models documentation</a>.</p><p>Copy the model name: @cf/deepseek-ai/deepseek-r1-distill-qwen-32b.</p><h4><strong>Step 3: Generate the Cloudflare Worker Code with AI</strong></h4><p>We&#8217;ll use <strong>Grok3</strong> (or any AI code generator) to create the Cloudflare Worker code. Here&#8217;s the prompt I used:</p><blockquote><p><code>I want to make a Cloudflare Worker that uses Cloudflare AI. I want to use the model `@cf/deepseek-ai/deepseek-coder-v2-lite` to analyze my store's stocktake report. Here is an example stocktake report: [paste your JSON stocktake data here]. <br>I want DeepSeek to return a JSON object with: <br>- The top two items at greatest risk of spoilage. <br>- The estimated financial impact if those items are not sold. <br>- Two recommended actions to minimize the risk. <br>Generate the code for the worker and provide an example input request.</code></p></blockquote><p>Grok will generate the worker code and an example POST request. Copy the code&#8212;it&#8217;s ready to use!</p><h4><strong>Step 4: Set Up Your Cloudflare Worker</strong></h4><ol><li><p>Log in to your Cloudflare account and go to <strong>Workers</strong>.</p></li><li><p>Click <strong>Create a Worker</strong> and give it a name (e.g., nocode-stocktake-agent).</p></li><li><p>In the worker settings, go to <strong>Bindings</strong> and add a new binding for <strong>Workers AI</strong>. Name it AI</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vxIU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaf56f82-80a0-43ed-a24a-55e7989f8a97_2526x1992.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vxIU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaf56f82-80a0-43ed-a24a-55e7989f8a97_2526x1992.png 424w, https://substackcdn.com/image/fetch/$s_!vxIU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaf56f82-80a0-43ed-a24a-55e7989f8a97_2526x1992.png 848w, https://substackcdn.com/image/fetch/$s_!vxIU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaf56f82-80a0-43ed-a24a-55e7989f8a97_2526x1992.png 1272w, https://substackcdn.com/image/fetch/$s_!vxIU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaf56f82-80a0-43ed-a24a-55e7989f8a97_2526x1992.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vxIU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaf56f82-80a0-43ed-a24a-55e7989f8a97_2526x1992.png" width="1456" height="1148" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/caf56f82-80a0-43ed-a24a-55e7989f8a97_2526x1992.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1148,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:402505,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/157625901?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaf56f82-80a0-43ed-a24a-55e7989f8a97_2526x1992.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_!vxIU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaf56f82-80a0-43ed-a24a-55e7989f8a97_2526x1992.png 424w, https://substackcdn.com/image/fetch/$s_!vxIU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaf56f82-80a0-43ed-a24a-55e7989f8a97_2526x1992.png 848w, https://substackcdn.com/image/fetch/$s_!vxIU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaf56f82-80a0-43ed-a24a-55e7989f8a97_2526x1992.png 1272w, https://substackcdn.com/image/fetch/$s_!vxIU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaf56f82-80a0-43ed-a24a-55e7989f8a97_2526x1992.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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></li><li><p>Paste the AI-generated code into the worker&#8217;s code editor.</p></li><li><p>Deploy the worker.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PxiM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faac34358-63c5-425b-b832-77507e45d056_3088x2136.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PxiM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faac34358-63c5-425b-b832-77507e45d056_3088x2136.png 424w, https://substackcdn.com/image/fetch/$s_!PxiM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faac34358-63c5-425b-b832-77507e45d056_3088x2136.png 848w, https://substackcdn.com/image/fetch/$s_!PxiM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faac34358-63c5-425b-b832-77507e45d056_3088x2136.png 1272w, https://substackcdn.com/image/fetch/$s_!PxiM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faac34358-63c5-425b-b832-77507e45d056_3088x2136.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PxiM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faac34358-63c5-425b-b832-77507e45d056_3088x2136.png" width="1456" height="1007" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aac34358-63c5-425b-b832-77507e45d056_3088x2136.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1007,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:853773,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/157625901?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faac34358-63c5-425b-b832-77507e45d056_3088x2136.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_!PxiM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faac34358-63c5-425b-b832-77507e45d056_3088x2136.png 424w, https://substackcdn.com/image/fetch/$s_!PxiM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faac34358-63c5-425b-b832-77507e45d056_3088x2136.png 848w, https://substackcdn.com/image/fetch/$s_!PxiM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faac34358-63c5-425b-b832-77507e45d056_3088x2136.png 1272w, https://substackcdn.com/image/fetch/$s_!PxiM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faac34358-63c5-425b-b832-77507e45d056_3088x2136.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That&#8217;s it! Your worker is now live and ready to analyse stock data.</p><h4><strong>Step 5: Test the Worker</strong></h4><p>Use the example POST request provided by Grok to test your worker. You can do this directly in Cloudflare&#8217;s test console or using a tool like Postman.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-bPe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabe6c7d4-e1fe-43d1-96c7-e4d0fc94cc8f_3066x2140.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-bPe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabe6c7d4-e1fe-43d1-96c7-e4d0fc94cc8f_3066x2140.png 424w, https://substackcdn.com/image/fetch/$s_!-bPe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabe6c7d4-e1fe-43d1-96c7-e4d0fc94cc8f_3066x2140.png 848w, https://substackcdn.com/image/fetch/$s_!-bPe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabe6c7d4-e1fe-43d1-96c7-e4d0fc94cc8f_3066x2140.png 1272w, https://substackcdn.com/image/fetch/$s_!-bPe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabe6c7d4-e1fe-43d1-96c7-e4d0fc94cc8f_3066x2140.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-bPe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabe6c7d4-e1fe-43d1-96c7-e4d0fc94cc8f_3066x2140.png" width="1456" height="1016" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/abe6c7d4-e1fe-43d1-96c7-e4d0fc94cc8f_3066x2140.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1016,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:975688,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/157625901?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabe6c7d4-e1fe-43d1-96c7-e4d0fc94cc8f_3066x2140.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_!-bPe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabe6c7d4-e1fe-43d1-96c7-e4d0fc94cc8f_3066x2140.png 424w, https://substackcdn.com/image/fetch/$s_!-bPe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabe6c7d4-e1fe-43d1-96c7-e4d0fc94cc8f_3066x2140.png 848w, https://substackcdn.com/image/fetch/$s_!-bPe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabe6c7d4-e1fe-43d1-96c7-e4d0fc94cc8f_3066x2140.png 1272w, https://substackcdn.com/image/fetch/$s_!-bPe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabe6c7d4-e1fe-43d1-96c7-e4d0fc94cc8f_3066x2140.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Here&#8217;s what the response might look like:</p><p>json</p><blockquote><p><code>{"top_two_at_risk":[{"item":"Bread (White Loaf)","sell_by":"February 23, 2025","reason":"Expires February 23, 2025"},{"item":"Bananas","sell_by":"February 24, 2025","reason":"Expires February 24, 2025"}],"potential_financial_loss":{"items":[{"item":"Bread (White Loaf)","quantity_at_risk":58.57142857142857,"cost_per_unit":1.2,"total_loss":70.28571428571428},{"item":"Bananas","quantity_at_risk":148.57142857142856,"cost_per_unit":0.8,"total_loss":118.85714285714285}],"total":189.1428571428571},"recommended_actions":["Discount Bread (White Loaf) this weekend","Promote Bananas to clear stock"]}</code></p></blockquote><p>DeepSeek analysed the data, identified risks, calculated losses, and suggested action, all in seconds.</p><h4><strong>Step 6: Integrate with Bubble (or Any NoCode Tool)</strong></h4><p>Now, let&#8217;s bring this into Bubble:</p><ol><li><p>In Bubble, go to the <strong>API Connector</strong> and add a new API.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_IzU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf6bef3e-b5ce-4874-a5da-387306b75c7e_1894x1686.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_IzU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf6bef3e-b5ce-4874-a5da-387306b75c7e_1894x1686.png 424w, https://substackcdn.com/image/fetch/$s_!_IzU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf6bef3e-b5ce-4874-a5da-387306b75c7e_1894x1686.png 848w, https://substackcdn.com/image/fetch/$s_!_IzU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf6bef3e-b5ce-4874-a5da-387306b75c7e_1894x1686.png 1272w, https://substackcdn.com/image/fetch/$s_!_IzU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf6bef3e-b5ce-4874-a5da-387306b75c7e_1894x1686.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_IzU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf6bef3e-b5ce-4874-a5da-387306b75c7e_1894x1686.png" width="1456" height="1296" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df6bef3e-b5ce-4874-a5da-387306b75c7e_1894x1686.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1296,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:337237,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/157625901?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf6bef3e-b5ce-4874-a5da-387306b75c7e_1894x1686.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_!_IzU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf6bef3e-b5ce-4874-a5da-387306b75c7e_1894x1686.png 424w, https://substackcdn.com/image/fetch/$s_!_IzU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf6bef3e-b5ce-4874-a5da-387306b75c7e_1894x1686.png 848w, https://substackcdn.com/image/fetch/$s_!_IzU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf6bef3e-b5ce-4874-a5da-387306b75c7e_1894x1686.png 1272w, https://substackcdn.com/image/fetch/$s_!_IzU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf6bef3e-b5ce-4874-a5da-387306b75c7e_1894x1686.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li><li><p>Set it as a <strong>POST</strong> request and paste your Cloudflare Worker URL.</p></li><li><p>Use the example JSON body from Groq to initialise the API call.</p></li><li><p>Save and test the API connection.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ulrb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b6f47a-a38d-41e1-b27c-de22a377cc40_4152x2336.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ulrb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b6f47a-a38d-41e1-b27c-de22a377cc40_4152x2336.png 424w, https://substackcdn.com/image/fetch/$s_!ulrb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b6f47a-a38d-41e1-b27c-de22a377cc40_4152x2336.png 848w, https://substackcdn.com/image/fetch/$s_!ulrb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b6f47a-a38d-41e1-b27c-de22a377cc40_4152x2336.png 1272w, https://substackcdn.com/image/fetch/$s_!ulrb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b6f47a-a38d-41e1-b27c-de22a377cc40_4152x2336.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ulrb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b6f47a-a38d-41e1-b27c-de22a377cc40_4152x2336.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/30b6f47a-a38d-41e1-b27c-de22a377cc40_4152x2336.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5564160,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.nocodesaas.io/i/157625901?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b6f47a-a38d-41e1-b27c-de22a377cc40_4152x2336.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_!ulrb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b6f47a-a38d-41e1-b27c-de22a377cc40_4152x2336.png 424w, https://substackcdn.com/image/fetch/$s_!ulrb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b6f47a-a38d-41e1-b27c-de22a377cc40_4152x2336.png 848w, https://substackcdn.com/image/fetch/$s_!ulrb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b6f47a-a38d-41e1-b27c-de22a377cc40_4152x2336.png 1272w, https://substackcdn.com/image/fetch/$s_!ulrb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b6f47a-a38d-41e1-b27c-de22a377cc40_4152x2336.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Once set up, you can trigger this API call from any workflow in Bubble, passing in stock data and getting back structured JSON with decisions you can display or act on.</p></li></ol><div><hr></div><h3><strong>That&#8217;s it for this week!</strong></h3><p>This is just the beginning. In future issues, I&#8217;ll dive deeper into reasoning models, explore more AI tools, and share how to build even more advanced features without code. If there&#8217;s something specific you&#8217;d like to see, let me know by hitting reply!</p><p>And if you&#8217;re inspired to try this yourself, I&#8217;d love to hear how it goes. Feel free to reply to this email with your experiences or questions.</p><p>Thanks for reading, and happy building!</p><p>James</p><p>P.S. Don&#8217;t forget&#8212;early bird tickets for the <strong>Create With Conference</strong> in London on May 22nd are still available! Join us for a day of talks, tutorials, and networking with top NoCode and AI builders. <a href="https://createwith.com">Get your ticket here</a>.</p><div><hr></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading NoCode SaaS! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[AI Agents: Building the Self-Driving Startup]]></title><description><![CDATA[NoCode legend JJ Englert breaks down the AI agent revolution, plus my hands-on experiment building agents with n8n.]]></description><link>https://www.nocodesaas.io/p/ai-agents-building-the-self-driving</link><guid isPermaLink="false">https://www.nocodesaas.io/p/ai-agents-building-the-self-driving</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 07 Feb 2025 16:13:45 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5b61281d-95a1-4426-95b7-87f6eaa26e3b_800x419.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there! <br><br>Welcome to this week's NoCode SaaS newsletter, where I take you along on the ride of building a SaaS business without code on Bubble.</p><p><em>What if you could build a startup that practically runs itself?</em> <br><br>Not just the product development, but everything from customer onboarding to marketing. </p><p>This week, I'm diving into AI Agents and how they might finally help us realize the dream of the '<a href="https://x.com/jonas/status/1876394297454711015">self-driving startup</a>.'</p><p>I've been thinking about this a lot lately. </p><p>As an indie founder running <a href="https://userloop.io">UserLoop</a> without VC funding or a large team, I've already embraced AI and NoCode for all my product development. </p><p>But I kept wondering - could we push this automation even further? That's when AI Agents caught my attention.</p><p>Instead of just theorizing, I decided to spin up my own self hosted instance of <a href="https://n8n.io/">n8n</a>.</p><p>After watching a few tutorials I was able to put a new onboarding agent for UserLoop which helps me out with a few tasks</p><ul><li><p>When a new user signs up to UserLoop it scrapes their website using Perplexity Sonar</p></li><li><p>I then get back a detailed report of who the customer is, their market etc</p></li><li><p>I then use Anthropic to compose a personalised series of welcome emails to the specific customer</p></li><li><p>The emails then automatically get sent from my personal Gmail account</p></li></ul><p>To really understand where this technology is headed, I reached out to my long-time friend (and NoCode industry legend) <a href="https://x.com/JJEnglert">JJ Englert</a>. </p><p>We had a fascinating conversation about everything from getting started with AI Agents to their potential to revolutionize how we build and run businesses. </p><p>Let&#8217;s dive in now, it&#8217;s a truly fascinating topic.</p><h1>The Rise of AI Agents: A Conversation with JJ Englert<br></h1><p><strong>JD: There's a lot of buzz around AI agents right now. How would you define them for someone new to the concept?</strong></p><p>JJ: Let me first explain what a true AI agent is, and then address some of the confusion in the market. At its core, an AI agent is a system that can think, reason, and take autonomous actions on your behalf. </p><p>What sets it apart from traditional automation is its ability to make independent decisions based on context and reasoning, rather than following predefined paths.</p><p>Think of it this way: traditional automation is like following a detailed recipe &#8211; if X happens, do Y. </p><p>An AI agent is more like having an assistant who understands your goals and can figure out how to achieve them, making decisions along the way based on changing circumstances.</p><p>That said, there's currently some confusion in the market because many tools being labeled as "AI agents" are really just AI-enhanced workflows or automations. While the terminology might not be perfect, it's what the world knows right now. Rather than fight against this terminology, it's better to meet people where they are and then help them understand the spectrum from simple AI automation to truly autonomous agents.</p><p>The key distinction is independence and reasoning capability. A true AI agent can:</p><ul><li><p>Understand and interpret complex instructions</p></li><li><p>Make independent decisions based on multiple factors</p></li><li><p>Adapt its approach based on new information</p></li><li><p>Take appropriate actions without needing step-by-step guidance</p></li><li><p>Learn from previous interactions and outcomes</p></li></ul><p>What's particularly interesting is that despite No-Code being around for 5+ years, AI Agents have achieved far greater market visibility and interest. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MWB4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd249eeba-39cd-48c1-b12e-f22eb06737b9_2338x1315.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MWB4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd249eeba-39cd-48c1-b12e-f22eb06737b9_2338x1315.png 424w, https://substackcdn.com/image/fetch/$s_!MWB4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd249eeba-39cd-48c1-b12e-f22eb06737b9_2338x1315.png 848w, https://substackcdn.com/image/fetch/$s_!MWB4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd249eeba-39cd-48c1-b12e-f22eb06737b9_2338x1315.png 1272w, https://substackcdn.com/image/fetch/$s_!MWB4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd249eeba-39cd-48c1-b12e-f22eb06737b9_2338x1315.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MWB4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd249eeba-39cd-48c1-b12e-f22eb06737b9_2338x1315.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d249eeba-39cd-48c1-b12e-f22eb06737b9_2338x1315.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2195369,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MWB4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd249eeba-39cd-48c1-b12e-f22eb06737b9_2338x1315.png 424w, https://substackcdn.com/image/fetch/$s_!MWB4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd249eeba-39cd-48c1-b12e-f22eb06737b9_2338x1315.png 848w, https://substackcdn.com/image/fetch/$s_!MWB4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd249eeba-39cd-48c1-b12e-f22eb06737b9_2338x1315.png 1272w, https://substackcdn.com/image/fetch/$s_!MWB4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd249eeba-39cd-48c1-b12e-f22eb06737b9_2338x1315.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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><br><a href="https://trends.google.com/trends/explore?q=Nocode,Ai%20Agents&amp;hl=en">Looking at Google Trends data</a> we can see that AI Agents have rapidly surpassed No-Code in terms of search interest and industry attention. </p><p>This suggests that AI Agents are resonating with a broader audience and addressing more immediate business needs than previous waves of automation technology.</p><p><strong>JD: What platforms are leading the way in the AI agent space?</strong></p><p>JJ: There's a fascinating range of platforms emerging, each with their own unique approach to AI agents:</p><p>N8N has really capitalized on the AI agent wave through their visual editor and direct integration of AI agent functionality. They've made it particularly accessible for non-technical users while maintaining the power for complex workflows.</p><p>Lindy.ai has taken a very business-focused approach - think of it as the "Softr version" of AI agents. </p><p>They're very user-friendly and have recently secured $50 million in funding, which speaks to the market's confidence in their approach.</p><p><a href="https://lutra.ai">Lutra.ai</a> offers an interesting ChatGPT-like interface where you can create agents through natural language conversation. What's particularly powerful is that these agents can be scheduled to run automatically, making it very intuitive for users who are comfortable with chat interfaces.</p><p><a href="https://Lyzr.ai">Lyzr.ai</a> has carved out a niche by focusing on security and privacy - they provide a way to build AI agents that can safely connect to your business data. This is particularly important for enterprises and businesses handling sensitive information.</p><p><a href="https://mindstudio.ai">Mindstudio.ai</a> is emerging as a more advanced platform, similar to N8N in power but with deeper AI integration. While it's still early in its development, it shows a lot of promise for users who need more sophisticated agent capabilities.</p><p><a href="https://make.com">Make</a> (formerly Integromat) can build agent-like capabilities, though they've been somewhat quiet about it from a marketing perspective. I expect them to make a bigger push in this direction soon - they have the technical foundation to be a major player.</p><p><a href="https://zapier.com">Zapier</a> has recently entered the space as well. True to their reputation for simplicity, they've made it exceptionally easy to add tools to an agent and create basic agentic workflows. While it might not be as powerful as some other platforms, it's perfect for simple use cases and users who want to get started quickly.</p><p>The interesting thing about this space is that we're seeing platforms approach it from different angles - some focusing on ease of use, others on power and flexibility, and others on security and privacy. This diversity means users can choose a platform that best matches their specific needs and technical capabilities.</p><p><strong>JD: Can you share a practical example of how businesses are using AI agents?</strong></p><p>JJ: Let me share several real-world examples that showcase the versatility of AI agents: The first is social media engagement automation. You can create an agent that monitors platforms like Reddit for brand mentions. <br><br>Here's how it works:</p><ul><li><p>The agent continuously scans Reddit for your company name.</p></li></ul><ul><li><p>When a mention is found, it uses AI to analyze whether the post is valuable or just promotional <br>- If it's a meaningful post, the agent automatically drafts a response using content from your help center</p></li><li><p>The draft is sent to your team via Slack for review</p></li><li><p>Once approved, the response is automatically posted</p></li></ul><p>This moves your team from constant monitoring to just reviewing and approving thoughtful, pre-written responses. <br><br>It's a perfect example of keeping humans in the loop while automating the time-consuming parts of the process. <br><br>Another powerful use case is SEO and backlink automation. Traditional backlink management tools can be replaced with specialized AI agents that:</p><p>Monitor your backlink profile Analyze the quality and relevance of incoming links Identify opportunities for new backlinks Generate appropriate outreach messages Track and report on backlink performance</p><p>What's particularly exciting is that we're seeing new use cases emerge almost weekly as platforms add capabilities and users discover novel ways to implement them.</p><p><strong>JD: How are these platforms making AI agents accessible to non-technical users?</strong></p><p>JJ: Platforms are taking different approaches. Lindy.ai, for instance, uses plain text for conditions and logic - you can simply type what you want to happen, and it will define the logic for you.</p><p>Other platforms like <a href="http://lutra.ai">Lutra.ai</a> use a playbook mechanism where you can configure your account and then use chat-GPT style interactions to set up automations.</p><p>The key is making it visual and intuitive rather than code-heavy.</p><p><strong>JD: What's your perspective on the future of this technology?</strong></p><p>JJ: The space is evolving so rapidly that the eventual market leader might not even exist yet. What's clear is that we're moving toward a future where everyone will have their own suite of AI agents working for them, fundamentally changing how we interact with technology and manage our work.</p><p>I envision a transition where our role will shift from doing tasks to supervising agents who do them for us. Initially, we'll see a lot of "human in the loop" systems where agents handle the heavy lifting but still require human oversight and approval for key decisions.</p><p>This is a necessary trust-building phase.</p><p>As these systems prove themselves reliable and we become more comfortable with their decision-making, we'll gradually allow them to operate more autonomously.</p><p>The key here isn't just technological capability - it's about building trust and understanding where human judgment remains crucial.</p><p>Think of it like training a new employee: at first, you review everything they do, but over time, as they prove themselves capable and reliable, you give them more independence.</p><p>The difference is that once an AI agent masters a task, it can be replicated infinitely.</p><p><strong>JD: For someone looking to get started with AI agents, what would you recommend?</strong></p><p>JJ: Start with a real problem you want to solve. Having a specific challenge in mind makes the learning process much more focused and meaningful than just experimenting randomly. Begin with simpler platforms like Zapier for basic implementations, then progress to more sophisticated tools like Lindy.ai and <a href="https://n8n.io">n8n</a> as your needs grow.</p><p>A great shortcut is to explore the template galleries on platforms like N8N. These templates show you how experienced builders have structured their agents and can give you practical insights into best practices. Plus, you can often modify these templates to fit your specific needs rather than starting from scratch.</p><p><strong>JD: How do you see AI agents impacting the traditional SaaS business model?</strong> <br><br>JJ: We're witnessing the emergence of entirely new business models. The most significant is what I call "Agents as a Service" - instead of subscribing to traditional SaaS products, companies will rent specialized AI agents for specific tasks. We're already seeing early signs of this transition.</p><p>I expect we'll soon see dedicated agencies focusing solely on building and maintaining custom AI agents for businesses.</p><p>Alongside this, agent marketplaces will emerge where you can "hire" pre-built agents on a monthly basis, similar to how we subscribe to software today.</p><p>What's particularly exciting is the potential for highly specialized agents. Imagine agents specifically trained to edit videos in Premiere Pro, design your app in Figma. As agents mature, the more domain access to specific tools, will grow too.</p><p>In fact, Hubspot&#8217;s CTO, even thinks websites and SaaS's will alter to allow for very Agent ready documentation for each site / app, making it very easy for external agents to tap into the platform, similar to how we might be using APIs today.</p><p>Instead of paying monthly subscriptions for various SaaS tools, companies might redirect those budgets toward renting these specialized agents that can actually execute the work.</p><p>This shift could fundamentally change how businesses allocate their resources. Rather than purchasing software licenses and training employees to use them, you might simply rent an agent that's already an expert at that specific task. It's like having access to a skilled workforce that operates at machine scale and speed.</p><p><strong>JD: What's the relationship between no-code tools and AI agents?</strong> <br>JJ: I think no-code tools will increasingly be discovered through AI, rather than the other way around. <br><br>Our no-code knowledge becomes particularly valuable when deploying AI solutions - understanding visual builders, workflow automation, and system integration are all crucial skills in the AI agent space.</p><div><hr></div><p><em>JJ Englert is currently developing a<a href="https://nocodealliance.org/course-details/intro-to-ai-agents"> comprehensive course on AI agents</a>, teaching everything from basic automations to complex multi-agent systems. His approach focuses on practical, real-world applications that businesses can implement today. You can get $50 off with the code NOCODESAAS. <strong><a href="https://nocodealliance.org/course-details/intro-to-ai-agents">Intro to AI Agents Course.</a></strong></em></p><div><hr></div><p>That&#8217;s it for this week!  Thanks for reading I hope you found this interesting.</p><p>Would you like me to cover more on AI Agents in the future? Drop me a reply.</p><p>If you have a moment I&#8217;d really appreciate you <a href="https://forms.gle/z69tfhqayEQnWAmq5">taking my reader&#8217;s survey</a> (thank you to everyone who has so far!) this is helping me work out the future format of the newsletter.</p><p>If you&#8217;re in the UK don&#8217;t forget that <a href="https://lu.ma/createwith2025">earlybird tickets to the Create With Conference 2025 end at midnight tonight, so don&#8217;t miss out on attending the UK&#8217;s first AI and NoCode conference!</a></p><p></p><div><hr></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading NoCode SaaS! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Supercharge your Bubble app with Supabase ]]></title><description><![CDATA[This we take a look at 10 reasons you should think about using Supbase and Bubble together. The new Supabase AI assistant means you don't need to know SQL!]]></description><link>https://www.nocodesaas.io/p/supercharge-your-bubble-app-with</link><guid isPermaLink="false">https://www.nocodesaas.io/p/supercharge-your-bubble-app-with</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 31 Jan 2025 17:03:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/86da77fe-d530-4b06-9678-4e606c847440_706x399.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there!<br><br>Welcome to this week&#8217;s NoCode SaaS newsletter, where I take you along on the journey of building a profitable business without code using Bubble and AI.</p><p>This week I want to take a look at <a href="https://supabase.com/">Supabase</a> - and why I think it&#8217;s such a great tool to have in your back pocket when building with Bubble - and any other platform for that matter.</p><p>I&#8217;ve been reading about Supabase for years but had never checked out in depth, but over the last few months I decided to finally dive into it.</p><p>After getting to grips with it, I moved my app <a href="https://userloop.io">UserLoop&#8217;s</a> core database to Supabase and it&#8217;s really helped me realise what a great platform it is, and how even non technical people can now use it to build apps thanks to AI.</p><p>We actually discussed it a bit on <a href="https://open.spotify.com/episode/0j8g3OQEnqxZ9H40OJ0oJq?si=e81b22ca752a40ba">this week&#8217;s edition of the Create With podcast here.</a></p><p>So for this issue I&#8217;m going to cover my top 10 reasons it&#8217;s worth considering using Supabase for your next project - even if you&#8217;re not a coder.</p><p></p><h4>One quick thing - reader survey</h4><p>Could you take a moment to answer some questions in my quick <a href="https://forms.gle/sA6KqdaTwrrYHNDH9">reader survey</a>.  I am planning the content for the newsletter for the rest of the year and would love to hear your feedback! </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://forms.gle/sA6KqdaTwrrYHNDH9&quot;,&quot;text&quot;:&quot;Take The Reader Survey&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://forms.gle/sA6KqdaTwrrYHNDH9"><span>Take The Reader Survey</span></a></p><p><br>Now let&#8217;s dive into Supabase!</p><h1>10 Reasons to use Supabase with Bubble</h1><p>I&#8217;m going to cover why I think Supabase is a great companion to Bubble here, but most of these points really apply to using it with other NoCode / AI tools as well.</p><p>To give some context on my own journey with Supabase, my app UserLoop is a survey app built primarily for Shopify merchants.</p><p>Let me know if you find this interesting - and if you would be interested in a video tutorial of how to get everything set up and running.</p><h2>There are excellent well documented Bubble plugins for Supabase</h2><p><br>One of the best things about building with Bubble is the extensive plugin ecosystem.  As of this week there are over <a href="https://x.com/the_AlexC/status/1884692994651206032">6,500 plugins made for Bubble</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/the_AlexC/status/1884692994651206032" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dMca!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbdc9720-3bb5-47dd-b30c-be0130730f34_1400x714.png 424w, https://substackcdn.com/image/fetch/$s_!dMca!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbdc9720-3bb5-47dd-b30c-be0130730f34_1400x714.png 848w, https://substackcdn.com/image/fetch/$s_!dMca!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbdc9720-3bb5-47dd-b30c-be0130730f34_1400x714.png 1272w, https://substackcdn.com/image/fetch/$s_!dMca!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbdc9720-3bb5-47dd-b30c-be0130730f34_1400x714.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dMca!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbdc9720-3bb5-47dd-b30c-be0130730f34_1400x714.png" width="1400" height="714" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fbdc9720-3bb5-47dd-b30c-be0130730f34_1400x714.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:714,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:602542,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/the_AlexC/status/1884692994651206032&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dMca!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbdc9720-3bb5-47dd-b30c-be0130730f34_1400x714.png 424w, https://substackcdn.com/image/fetch/$s_!dMca!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbdc9720-3bb5-47dd-b30c-be0130730f34_1400x714.png 848w, https://substackcdn.com/image/fetch/$s_!dMca!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbdc9720-3bb5-47dd-b30c-be0130730f34_1400x714.png 1272w, https://substackcdn.com/image/fetch/$s_!dMca!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbdc9720-3bb5-47dd-b30c-be0130730f34_1400x714.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now whilst not all of them are of high quality this is generally a great thing as there are plugins to do anything you could imagine.<br><br>I spent some time going through all the different Supabase plugins and eventually landed on <strong><a href="https://bubble.io/plugin/supabase-by-nocodegarden-1687446439843x865924681433350100">Supabase by Nocodegarden</a>.</strong><br><br>The plugin  has <a href="https://nocodegarden.io/docs/supabase/getting-started">excellent documentation</a>, making setting everything up in Bubble super easy,  I even requested a feature and the developer responded in a day or two adding it!</p><h2>You don&#8217;t need to be able to write SQL </h2><p>One of the most common misconceptions about Supabase is that you need to be a SQL expert or programmer to use it, and this was probably true a year ago.  </p><p>When I first looked at Supabase a few years ago, I was intimidated by the amount of SQL knowledge that seemed to be required. But trying it again recently, I was amazed at how much easier it's become to use, especially for non-technical people.</p><p>Here's what makes it so accessible now, and why I think it&#8217;s a good time to take another look at it&#8230;</p><h4>The AI SQL Editor</h4><p>Supabase has built an incredible AI assistant right into their platform. Instead of writing SQL queries, you can simply describe what you want to do in plain English, and it will write the SQL for you. For example, you could write:</p><p><em>"Show me all customers who signed up in the last 30 days and have made more than 2 purchases"</em></p><p>The AI will then write the correct SQL query for you. This means you can build complex database queries without knowing SQL syntax.<br><br>I&#8217;ve actually found this to be much easier to use to query data than manually using the database tab inside Bubble. </p><p>The assistant can also help you with setting up tables, security rules, populating tables with demo data and just about anything else you can think of.</p><h4>Visual Table Editor</h4><p>For basic database operations, Supabase provides a spreadsheet-like interface that should feel familiar to anyone who's used tools like Airtable or Excel. It&#8217;s even pretty similar to the Bubble database tab in a lot of ways<br></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JhRq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31193591-b717-482a-b1a6-161fd8a3437b_3102x2158.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JhRq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31193591-b717-482a-b1a6-161fd8a3437b_3102x2158.png 424w, https://substackcdn.com/image/fetch/$s_!JhRq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31193591-b717-482a-b1a6-161fd8a3437b_3102x2158.png 848w, https://substackcdn.com/image/fetch/$s_!JhRq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31193591-b717-482a-b1a6-161fd8a3437b_3102x2158.png 1272w, https://substackcdn.com/image/fetch/$s_!JhRq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31193591-b717-482a-b1a6-161fd8a3437b_3102x2158.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JhRq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31193591-b717-482a-b1a6-161fd8a3437b_3102x2158.png" width="1456" height="1013" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/31193591-b717-482a-b1a6-161fd8a3437b_3102x2158.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1013,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:746454,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JhRq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31193591-b717-482a-b1a6-161fd8a3437b_3102x2158.png 424w, https://substackcdn.com/image/fetch/$s_!JhRq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31193591-b717-482a-b1a6-161fd8a3437b_3102x2158.png 848w, https://substackcdn.com/image/fetch/$s_!JhRq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31193591-b717-482a-b1a6-161fd8a3437b_3102x2158.png 1272w, https://substackcdn.com/image/fetch/$s_!JhRq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31193591-b717-482a-b1a6-161fd8a3437b_3102x2158.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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><br>You can:</p><ul><li><p>Create new tables by clicking buttons</p></li><li><p>Add columns by selecting from dropdown menus</p></li><li><p>Edit data directly in cells</p></li><li><p>Import data from CSV files</p></li></ul><h2>You can still stream results into Bubble in realtime</h2><p>One of the most powerful features of Supabase is its real-time features, and thanks to plugins like NoCodeGarden's Supabase connector, you can easily bring this functionality into your Bubble app, without any coding.<br><br>Simply drop an element on your page, add your connection settings and you can stream realtime changes to any table or repeating group - it works really nicely and was a lot easier to set up than I anticipated</p><p>In my own app UserLoop, I use this for displaying live survey responses. When a customer submits feedback through a survey, store owners see the response appear instantly in their dashboard without needing to refresh the page. </p><p>Using Supabase's real-time features through the plugin also helps with performance since you're not constantly polling the database for changes. Instead, updates are pushed to your app only when they actually occur, making it both more responsive and more efficient.<br></p><h2>You can do complex queries on data it would be difficult to do in Bubble</h2><p>One of the biggest game-changers I've discovered since moving UserLoop's data to Supabase is the ability to perform complex data analysis that would be challenging or impossible to do efficiently in Bubble alone. Let me share some real examples from my own experience.</p><p>Recently, I completely revamped UserLoop's analytics capabilities by leveraging Supabase's powerful querying abilities. Here's what this enabled:</p><ul><li><p>Time-series charts showing survey response trends over custom date ranges</p></li><li><p>Revenue impact analysis comparing customer feedback to purchase behavior</p></li><li><p>Cohort analysis of customer satisfaction scores</p></li><li><p>Complex aggregations of customer sentiment across different store locations</p></li></ul><p>What's particularly exciting is how I built these features without being a SQL expert, thanks to AI assistance. I used Claude to help me write the SQL queries, which I could then test and implement in Supabase.</p><ol><li><p><strong>Design Your Query</strong>: I describe what I want to analyze in plain English to Claude (you need to give it the basic structure of your table as context, you can just copy and paste this from Supabase)</p></li><li><p><strong>Generate SQL</strong>: Claude helps write the SQL query</p></li><li><p><strong>Test in Supabase</strong>: Run and refine the query in Supabase's interface</p></li><li><p><strong>Connect to Bubble</strong>: Use the API connector to pull the results into Bubble's UI</p></li></ol><h4></h4><p><em>In Bubble alone, complex calculations across large datasets can be challenging because:</em></p><ul><li><p>They can consume lots of capacity</p></li><li><p>They might time out on large datasets</p></li><li><p>They're often slower than native database queries</p></li><li><p>Some types of calculations are hard to express in Bubble's workflow language</p></li></ul><p><em>But with Supabase handling the heavy lifting, we can:</em></p><ul><li><p>Process millions of records in milliseconds</p></li><li><p>Perform complex mathematical operations</p></li><li><p>Create sophisticated data groupings and aggregations</p></li><li><p>Generate reports in real-time</p></li></ul><p><em><br>Here's a glimpse of the kind of analysis that's now possible by using Supabase in my app.</em></p><p>This query aggregates customer feedback by answer, works out the count, percentage, revenue and average order value.<br><br>Then in Bubble I can chart that over time and put it into a repeating group.  This is all called via the API Connector directly to Supbabase using a JWT generated for the specific user.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KeL2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735f015a-af0a-4e24-a504-52ee890fa8cc_3348x2382.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KeL2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735f015a-af0a-4e24-a504-52ee890fa8cc_3348x2382.png 424w, https://substackcdn.com/image/fetch/$s_!KeL2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735f015a-af0a-4e24-a504-52ee890fa8cc_3348x2382.png 848w, https://substackcdn.com/image/fetch/$s_!KeL2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735f015a-af0a-4e24-a504-52ee890fa8cc_3348x2382.png 1272w, https://substackcdn.com/image/fetch/$s_!KeL2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735f015a-af0a-4e24-a504-52ee890fa8cc_3348x2382.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KeL2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735f015a-af0a-4e24-a504-52ee890fa8cc_3348x2382.png" width="1456" height="1036" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/735f015a-af0a-4e24-a504-52ee890fa8cc_3348x2382.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1036,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1501220,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KeL2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735f015a-af0a-4e24-a504-52ee890fa8cc_3348x2382.png 424w, https://substackcdn.com/image/fetch/$s_!KeL2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735f015a-af0a-4e24-a504-52ee890fa8cc_3348x2382.png 848w, https://substackcdn.com/image/fetch/$s_!KeL2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735f015a-af0a-4e24-a504-52ee890fa8cc_3348x2382.png 1272w, https://substackcdn.com/image/fetch/$s_!KeL2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735f015a-af0a-4e24-a504-52ee890fa8cc_3348x2382.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In another report I&#8217;m able to take it a step further with a whole host of new calculated metrics all powered by Supabase and based on querying a single table.<br><br>Here I&#8217;m working out all sorts of things like the total number of orders per response, order frequency, repeat rates etc.  This would have been impossible to make using the built in Bubble database so this is a good example of why if you have any analytics capability in your app it&#8217;s worth considering Supabase.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bsax!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f09fc-c1c0-4842-888d-68db594b6499_3308x2358.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bsax!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f09fc-c1c0-4842-888d-68db594b6499_3308x2358.png 424w, https://substackcdn.com/image/fetch/$s_!bsax!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f09fc-c1c0-4842-888d-68db594b6499_3308x2358.png 848w, https://substackcdn.com/image/fetch/$s_!bsax!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f09fc-c1c0-4842-888d-68db594b6499_3308x2358.png 1272w, https://substackcdn.com/image/fetch/$s_!bsax!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f09fc-c1c0-4842-888d-68db594b6499_3308x2358.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bsax!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f09fc-c1c0-4842-888d-68db594b6499_3308x2358.png" width="1456" height="1038" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/107f09fc-c1c0-4842-888d-68db594b6499_3308x2358.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1038,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1413197,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bsax!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f09fc-c1c0-4842-888d-68db594b6499_3308x2358.png 424w, https://substackcdn.com/image/fetch/$s_!bsax!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f09fc-c1c0-4842-888d-68db594b6499_3308x2358.png 848w, https://substackcdn.com/image/fetch/$s_!bsax!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f09fc-c1c0-4842-888d-68db594b6499_3308x2358.png 1272w, https://substackcdn.com/image/fetch/$s_!bsax!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107f09fc-c1c0-4842-888d-68db594b6499_3308x2358.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>It&#8217;s cost effective when reading and updating many records</h2><p>One of the most compelling reasons to consider Supabase is its pricing model, especially when dealing with large volumes of data operations. While Bubble's wokflow unit-based pricing can get expensive when doing lots of database operations, Supabase remains incredibly cost-effective even at scale.</p><p>For example, in UserLoop, we process hundreds of thousands of survey responses per month. On Supabase's free tier, you get:</p><ul><li><p>500MB database space</p></li><li><p>50,000 monthly active users</p></li><li><p>Unlimited API requests</p></li><li><p>Real-time subscriptions</p></li><li><p>Database backups</p></li></ul><p>Even when you outgrow the free tier, the pricing remains very reasonable. I'm currently on their Pro tier ($25/month) which handles all my app's database operations with plenty of headroom to spare. </p><p>What's particularly great is that you can use Supabase just for the data-intensive parts of your app while keeping everything else in Bubble, giving you the best of both worlds.<br><br>I still use the built in Bubble database for data types with low volume like billing, user preferences etc.  But the ability to have Supabase as an option for very high volume tables / frequent read write operations is great to have in your pocket!</p><h2><br>You don&#8217;t have to use Supabase&#8217;s built in auth if you don&#8217;t want to</h2><p>Supabase does have a built in auth system, but if you&#8217;re already using Bubble&#8217;s built in auth you don&#8217;t need to switch.  You can generate a JWT for each user in your database (basically an API key for each user) which lets them read only their own data from Supabase.</p><p>The Nocodegarden plugin handles this really simply, and you can just run it from a backend workflow to generate a token easily.  Supabase&#8217;s AI assistant can also set up your RLS (Supabase equivalent of Bubble privacy rules)</p><p>I've found this particularly helpful when setting up row-level security policies, which can be tricky to get right without the AI's help.</p><p>One thing I love about Supabase's JWT authentication system is how it lets you be strategic about what data you keep where. In UserLoop, I use this flexibility to keep sensitive survey response data in Supabase while storing user preferences and billing info in Bubble. The JWT system makes it easy to maintain secure data access patterns without writing complex code. This hybrid approach gives you the best of both worlds - you can use Supabase where it makes sense while keeping the rest of your app in Bubble.</p><p>It also works great with the API connector, you can pull data into Bubble just like any other API.  You can choose whether to use the plugin to pull data (maybe if you need the realtime updates) or to just use the regular old API connector.</p><p>The integration between Supabase and Bubble's API Connector feels completely natural. When I first set it up in UserLoop, I was pleased to find that making calls to Supabase felt just like working with any other API in Bubble. The difference is that you have the full power of a PostgreSQL database behind those API calls. </p><p>This makes it perfect for handling large datasets and complex operations that might be challenging in Bubble alone.</p><h2>It works great with Cloudflare Workers if you want to do more of your processing on the edge at a low cost</h2><p>I've recently started exploring the combination of Supabase with Cloudflare Workers, and it's opened up some exciting possibilities. </p><p>I&#8217;ve <a href="https://www.nocodesaas.io/p/tutorial-ai-data-extraction-in-bubble">covered Cloudflare Workers a lot in the past</a>, and how I love using them for backend processing tasks.  The good news is they work amazingly well with Supabase too!</p><p>For example I have recently made a Cloudflare Worker which pulls data from Supabase and runs it through OpenAI to extract key themes from customer feedback, it then responds with a nicely formatted JSON object.</p><p>I&#8217;m going to touch a bit on combining Cloudflare Workers and Supabase in future issues - I think this is going to be a great combination for building AI Agents.</p><p><strong>If you&#8217;re interested in learning more about building agents</strong> I really recommend checking out JJ Englert&#8217;s <a href="https://nocodealliance.org/course-details/intro-to-ai-agents">new course on the topic.</a>  He&#8217;s one of the OG Bubble and NoCode experts - and this new course on agents covers everything on how to build them, the tools to use and what they can do.</p><div><hr></div><p>That&#8217;s it for this week&#8217;s edition!<br><br>Let me know if you would find a video tutorial of getting started with Supabase and Bubble useful and I&#8217;ll put one together.  I really do encourage you to give it a try!</p><p><a href="https://forms.gle/sA6KqdaTwrrYHNDH9">Don't forget to fill out my reader survey to help shape future content if you have a spare moment!</a></p><p>Thanks again for reading, and happy building!<br><br>James</p><p><strong>PS: There is only 1 week left to get your early bird to the <a href="https://createwith.com">Create With Conference</a> in London on Thursday May 22nd.</strong>  It&#8217;s going to be a day of talks, tutorials and of course drinks with some of the best NoCode and AI builders from around the world.  <a href="https://content.createwith.com/products/2025-earlybird-ticket">Tickets here.</a></p><div><hr></div><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading NoCode SaaS! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[My NoCode App Stack for 2025 + How to translate your entire Bubble app for free]]></title><description><![CDATA[Build your AI-powered apps faster: The ultimate 2025 tech stack combining Bubble, Supabase & Cloudflare Workers + A free guide to making your Bubble app multilingual in 30+ languages.]]></description><link>https://www.nocodesaas.io/p/my-nocode-app-stack-for-2025-how</link><guid isPermaLink="false">https://www.nocodesaas.io/p/my-nocode-app-stack-for-2025-how</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 10 Jan 2025 16:25:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xPvD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14ebc59e-e29c-4ac9-8396-b4a5d4253b84_1596x1094.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there!<br><br>Welcome to the first edition of the NoCode SaaS Newsletter of 2025 - and the first edition after I am back from my travels around Vietnam and Thailand.</p><p>I was lucky enough to spend the end of last year exploring on motorbikes, trains, planes and boats and it was an incredible experience.  <br><br>It also renewed my thanks for tools like Bubble which have allowed me to build my own SaaS and to be able to take trips like that.  Even though I continued working throughout the trip of course, there&#8217;s no true break for us solo founders!  <br><br>I filmed a ton which I&#8217;m currently editing together for YouTube - which is a lot more work than I originally anticipated &#129315;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xPvD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14ebc59e-e29c-4ac9-8396-b4a5d4253b84_1596x1094.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xPvD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14ebc59e-e29c-4ac9-8396-b4a5d4253b84_1596x1094.png 424w, https://substackcdn.com/image/fetch/$s_!xPvD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14ebc59e-e29c-4ac9-8396-b4a5d4253b84_1596x1094.png 848w, https://substackcdn.com/image/fetch/$s_!xPvD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14ebc59e-e29c-4ac9-8396-b4a5d4253b84_1596x1094.png 1272w, https://substackcdn.com/image/fetch/$s_!xPvD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14ebc59e-e29c-4ac9-8396-b4a5d4253b84_1596x1094.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xPvD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14ebc59e-e29c-4ac9-8396-b4a5d4253b84_1596x1094.png" width="542" height="371.50824175824175" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/14ebc59e-e29c-4ac9-8396-b4a5d4253b84_1596x1094.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:998,&quot;width&quot;:1456,&quot;resizeWidth&quot;:542,&quot;bytes&quot;:3563013,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xPvD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14ebc59e-e29c-4ac9-8396-b4a5d4253b84_1596x1094.png 424w, https://substackcdn.com/image/fetch/$s_!xPvD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14ebc59e-e29c-4ac9-8396-b4a5d4253b84_1596x1094.png 848w, https://substackcdn.com/image/fetch/$s_!xPvD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14ebc59e-e29c-4ac9-8396-b4a5d4253b84_1596x1094.png 1272w, https://substackcdn.com/image/fetch/$s_!xPvD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14ebc59e-e29c-4ac9-8396-b4a5d4253b84_1596x1094.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>As we look into 2025 I&#8217;m really excited to share some of the things I&#8217;ve been working on that I&#8217;ve learnt over the last few months when building with AI and <a href="https://bubble.io">Bubble</a>.</p><p>I&#8217;ve been working on the first major technical reorganisation of my app <a href="https://userloop.io">UserLoop</a> since it launched, simplifying the feature set and switching out much of the core backend logic.<br><br>I&#8217;ve been doing all of this with AI generated code, and the results have been really breathtaking for me.  Some of the core changes including moving my core database to <a href="https://supabase.io">Supabase</a>, and much of the most common processing to <a href="https://developers.cloudflare.com/workers/">Cloudflare Workers</a>.</p><p><a href="https://www.nocodesaas.io/p/tutorial-ai-data-extraction-in-bubble?r=slci1&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">I&#8217;ve covered Cloudflare Workers a bit in this newsletter in the past</a>, and I&#8217;m going to be covering them a lot more over the next few months, along with more content on how to use Supabase with Bubble.</p><p>My app dev stack has changed quite a bit.</p><p>It&#8217;s worth mentioning that the entire stack is still effectively &#8216;nocode&#8217; - although I am using AI to generate a lot of the code that is getting deployed to Cloudflare and queries for Supabase.</p><p><strong>Bubble</strong> - frontend app logic, simple database for storing user preferences and account management, billing.</p><p><strong>Cloudflare Workers</strong> - complex backend logic, AI data processing, high throughput processing.  Super fast and insanely cheap way to complete processing tasks.</p><p><strong>Supabase</strong> - high scale database with complex querying capability, fast speed. No need to know how to code or use SQL.  Low cost, powerful, fast.</p><p><strong><a href="https://hookdeck.com">Hookdeck</a></strong> - managing inbound webhooks, allowing me to route them either to Bubble, directly to Supabase or Cloudflare, along with super easy monitoring and ability to replay.</p><p><strong>OpenAI &amp; Anthropic</strong> - powering all the AI features in my app, now largely called via Cloudflare Workers than through backend workflows in Bubble itself.</p><p>We&#8217;re really starting to blur the lines between traditional coding and nocode tools now, even a year or two ago I would never have thought I&#8217;d be able to use developer platforms like Cloudflare Workers and Supabase so effectively, but they&#8217;re now core parts of my workflow when building with Bubble - and the features I&#8217;ve been able to make are way beyond anything that would have been possible previously without being a fairly advanced developer.<br><br>It&#8217;s an incredibly exciting time to be building apps - and as the technology continues to improve this year with more autonomous agents we&#8217;ll see more and more solo founders finding success without huge teams or giving away equity.<br><br>We&#8217;re entering the world of the &#8216;Self Driving Startup&#8217; - where you can put all the systems in place to build and grow a SaaS business using AI autonomously.<br><br><a href="https://x.com/jonas/status/1876394297454711015">This fantastic post from Monzo co-founder Jonas Templestein</a> outlines the concept, and the neat way of breaking down the different levels of autonomy from Level 1 to Level 5.  There&#8217;s also a more detailed blog post on the subject here which is well worth reading.<br><br>I&#8217;m going to aim to cover building a startup using AI and NoCode in this way more in this newsletter in 2025, and try to automate as much of the day to day running of UserLoop as I can using agents.<br><br>On to this week&#8217;s topic though - how to translate your Bubble app into multiple languages!</p><h2>How to translate your Bubble App into 30+ languages for free</h2><p>For the last year or so I&#8217;ve offered UserLoop in 5 different langauges.  Users are able to select from a dropdown when they sign up, and then the entire app&#8217;s UI switches to that language.</p><p>Like many others I signed up to a fairly expensive service which took care of the translation.  All I needed to do was drop a javascript snippet on the page and then trigger some Javascript to switch languages.</p><p>While this worked great, it was also crazy expensive!<br><br>You get charged per word translated, at a very steep rate.</p><p>So <a href="https://x.com/bresslertweets/status/1868725014981493012">when I saw this tweet</a> from <a href="https://x.com/bresslertweets">David Bressler</a> of <a href="https://www.formulabot.com/">FormulaBot</a> on how he used some custom code on top of Google Translate to translate his app into multiple langauages <em>for free</em> it really caught my attention!</p><p>The translation works in exactly the same way as for the paid services, you drop a code snippet onto every page you translate then call some custom Javascript to translate the page content.<br><br>The only difference is it&#8217;s totally free.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0o7M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fe322ae-410c-4f0b-a91c-8b262ddd44c0_480x360.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0o7M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fe322ae-410c-4f0b-a91c-8b262ddd44c0_480x360.gif 424w, https://substackcdn.com/image/fetch/$s_!0o7M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fe322ae-410c-4f0b-a91c-8b262ddd44c0_480x360.gif 848w, https://substackcdn.com/image/fetch/$s_!0o7M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fe322ae-410c-4f0b-a91c-8b262ddd44c0_480x360.gif 1272w, https://substackcdn.com/image/fetch/$s_!0o7M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fe322ae-410c-4f0b-a91c-8b262ddd44c0_480x360.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0o7M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fe322ae-410c-4f0b-a91c-8b262ddd44c0_480x360.gif" width="480" height="360" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7fe322ae-410c-4f0b-a91c-8b262ddd44c0_480x360.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:360,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:228243,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0o7M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fe322ae-410c-4f0b-a91c-8b262ddd44c0_480x360.gif 424w, https://substackcdn.com/image/fetch/$s_!0o7M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fe322ae-410c-4f0b-a91c-8b262ddd44c0_480x360.gif 848w, https://substackcdn.com/image/fetch/$s_!0o7M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fe322ae-410c-4f0b-a91c-8b262ddd44c0_480x360.gif 1272w, https://substackcdn.com/image/fetch/$s_!0o7M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fe322ae-410c-4f0b-a91c-8b262ddd44c0_480x360.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>After a very long conversation with ChatGPT I was able to add the same functionality to my own app, and I was shocked how simple it is!<br><br>The only caveat worth mentioning is that this is a slightly unofficial way of using the Google Translate website embed widget, so there is no guarantee it will work forever but it&#8217;s well worth trying out.<br><br>To get started with adding translation to your app, first you need to add the following code snippet to all pages in your Bubble App.<br><br><a href="https://2b609451544617b1809f183b29ab1142.cdn.bubble.io/f1736523617454x819273077737242800/google-translate.txt?_gl=1*cp7pv0*_gcl_au*MTYxODAzOTY5MS4xNzI4OTE4Nzk0*_ga*MTg0NDQxMDc5OS4xNzIxMTM4MDAx*_ga_BFPVR2DEE2*MTczNjUwOTA5MC4xNDcuMS4xNzM2NTIzNjExLjMzLjAuMA..">Download the script here.</a><br><br>For simplicity I recommend adding it to your app&#8217;s meta header in settings.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OHce!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a42300-a80b-44fa-b2e7-bdce5fcf4de9_3014x1668.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OHce!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a42300-a80b-44fa-b2e7-bdce5fcf4de9_3014x1668.png 424w, https://substackcdn.com/image/fetch/$s_!OHce!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a42300-a80b-44fa-b2e7-bdce5fcf4de9_3014x1668.png 848w, https://substackcdn.com/image/fetch/$s_!OHce!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a42300-a80b-44fa-b2e7-bdce5fcf4de9_3014x1668.png 1272w, https://substackcdn.com/image/fetch/$s_!OHce!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a42300-a80b-44fa-b2e7-bdce5fcf4de9_3014x1668.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OHce!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a42300-a80b-44fa-b2e7-bdce5fcf4de9_3014x1668.png" width="1456" height="806" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22a42300-a80b-44fa-b2e7-bdce5fcf4de9_3014x1668.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:806,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:436293,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OHce!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a42300-a80b-44fa-b2e7-bdce5fcf4de9_3014x1668.png 424w, https://substackcdn.com/image/fetch/$s_!OHce!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a42300-a80b-44fa-b2e7-bdce5fcf4de9_3014x1668.png 848w, https://substackcdn.com/image/fetch/$s_!OHce!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a42300-a80b-44fa-b2e7-bdce5fcf4de9_3014x1668.png 1272w, https://substackcdn.com/image/fetch/$s_!OHce!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a42300-a80b-44fa-b2e7-bdce5fcf4de9_3014x1668.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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 will load the translate script on every page.</p><p>Then, you need to create a simple option set in Bubble containing the languages you want to translate your app into.<br><br>The display should be the language code, for example <em>en, fr, de, es </em>and then add a user readable title such as English, French, German.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W9cN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8656bab-4865-43c4-afad-0e3e7f08d33b_2070x1182.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W9cN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8656bab-4865-43c4-afad-0e3e7f08d33b_2070x1182.png 424w, https://substackcdn.com/image/fetch/$s_!W9cN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8656bab-4865-43c4-afad-0e3e7f08d33b_2070x1182.png 848w, https://substackcdn.com/image/fetch/$s_!W9cN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8656bab-4865-43c4-afad-0e3e7f08d33b_2070x1182.png 1272w, https://substackcdn.com/image/fetch/$s_!W9cN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8656bab-4865-43c4-afad-0e3e7f08d33b_2070x1182.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W9cN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8656bab-4865-43c4-afad-0e3e7f08d33b_2070x1182.png" width="1456" height="831" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8656bab-4865-43c4-afad-0e3e7f08d33b_2070x1182.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:831,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:170005,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!W9cN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8656bab-4865-43c4-afad-0e3e7f08d33b_2070x1182.png 424w, https://substackcdn.com/image/fetch/$s_!W9cN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8656bab-4865-43c4-afad-0e3e7f08d33b_2070x1182.png 848w, https://substackcdn.com/image/fetch/$s_!W9cN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8656bab-4865-43c4-afad-0e3e7f08d33b_2070x1182.png 1272w, https://substackcdn.com/image/fetch/$s_!W9cN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8656bab-4865-43c4-afad-0e3e7f08d33b_2070x1182.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Then, add a dropdown to either your app&#8217;s settings page, or your footer.  Wherever you want to let the user change their language.</p><p>In my app, I&#8217;ve added the dropdown on the account settings page.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ewp2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5c677cb-d066-4d1a-a46b-8c793e060d28_2290x1296.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ewp2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5c677cb-d066-4d1a-a46b-8c793e060d28_2290x1296.png 424w, https://substackcdn.com/image/fetch/$s_!Ewp2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5c677cb-d066-4d1a-a46b-8c793e060d28_2290x1296.png 848w, https://substackcdn.com/image/fetch/$s_!Ewp2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5c677cb-d066-4d1a-a46b-8c793e060d28_2290x1296.png 1272w, https://substackcdn.com/image/fetch/$s_!Ewp2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5c677cb-d066-4d1a-a46b-8c793e060d28_2290x1296.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ewp2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5c677cb-d066-4d1a-a46b-8c793e060d28_2290x1296.png" width="1456" height="824" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5c677cb-d066-4d1a-a46b-8c793e060d28_2290x1296.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:824,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:358109,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ewp2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5c677cb-d066-4d1a-a46b-8c793e060d28_2290x1296.png 424w, https://substackcdn.com/image/fetch/$s_!Ewp2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5c677cb-d066-4d1a-a46b-8c793e060d28_2290x1296.png 848w, https://substackcdn.com/image/fetch/$s_!Ewp2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5c677cb-d066-4d1a-a46b-8c793e060d28_2290x1296.png 1272w, https://substackcdn.com/image/fetch/$s_!Ewp2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5c677cb-d066-4d1a-a46b-8c793e060d28_2290x1296.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Then in the dropdown, we load in our option set.  And show all the languages from our option set, and set the user readable field as the display option caption.</p><p>Then we need to set up a new workflow on our page.<br><br>This will trigger when the value of this dropdown is changed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rbao!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaefd58b-a938-44dc-b75c-ed0c29e835c4_2100x990.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rbao!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaefd58b-a938-44dc-b75c-ed0c29e835c4_2100x990.png 424w, https://substackcdn.com/image/fetch/$s_!Rbao!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaefd58b-a938-44dc-b75c-ed0c29e835c4_2100x990.png 848w, https://substackcdn.com/image/fetch/$s_!Rbao!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaefd58b-a938-44dc-b75c-ed0c29e835c4_2100x990.png 1272w, https://substackcdn.com/image/fetch/$s_!Rbao!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaefd58b-a938-44dc-b75c-ed0c29e835c4_2100x990.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rbao!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaefd58b-a938-44dc-b75c-ed0c29e835c4_2100x990.png" width="1456" height="686" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/faefd58b-a938-44dc-b75c-ed0c29e835c4_2100x990.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:686,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:175680,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Rbao!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaefd58b-a938-44dc-b75c-ed0c29e835c4_2100x990.png 424w, https://substackcdn.com/image/fetch/$s_!Rbao!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaefd58b-a938-44dc-b75c-ed0c29e835c4_2100x990.png 848w, https://substackcdn.com/image/fetch/$s_!Rbao!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaefd58b-a938-44dc-b75c-ed0c29e835c4_2100x990.png 1272w, https://substackcdn.com/image/fetch/$s_!Rbao!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaefd58b-a938-44dc-b75c-ed0c29e835c4_2100x990.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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><br>When the user changes the value in the language dropdown we then run the following Javascript using the free <a href="https://bubble.io/plugin/toolbox-1488796042609x768734193128308700">Javascript Toolbox plugin on Bubble.</a><br><br>We simply then inject the display code of the language the user selected and then Google will instantly translate the contents of that page into that language.</p><p>Here&#8217;s the plain javascript to run&#8230;<br></p><p><code>translateToLanguage('en&#8217;);<br><br></code>Obviously you just inject your language string in there.<br><br>Also you might notice I&#8217;m storing the user&#8217;s language preference to the database against their company record in the database.<br><br>This means I always know which language the user has selected in the backend - and also lets me run this javascript whenever they load the app.  So the app is always automatically translated into their language of choice whenever they open it.<br><br>To do this, you simply need to call this javascript action on page load, if the user has a language set (use a conditional rule).<br><br>It&#8217;s an amazingly cheap, easy and effective way to translate your app.  Huge shoutout to David for spotting this!</p><div><hr></div><p><br>That&#8217;s a wrap for the first edition of 2025! Thank&#8217;s so much for being a subscriber and following along with my journey.<br><br>Are there any topics you&#8217;d like me to cover this year? Or have any feedback, just hit the reply button - I love hearing from you!<br><br>Until next time have a great weekend - and happy building! <br><br>James.<br><br></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading NoCode SaaS! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Dynamic LLM Prompting in Bubble]]></title><description><![CDATA[How to use branching, conditional rules, content from your database and external APIs to get much better responses back from OpenAI and other LLMs. I walk through some real examples in my own app.]]></description><link>https://www.nocodesaas.io/p/dynamic-llm-openai-anthropic-prompting-in-bubble</link><guid isPermaLink="false">https://www.nocodesaas.io/p/dynamic-llm-openai-anthropic-prompting-in-bubble</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 25 Oct 2024 15:53:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F950beba0-8e31-4d44-8afc-2c4f127ede84_2226x1242.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there!<br><br>Welcome to this week&#8217;s edition of the NoCode SaaS newsletter, where I take you along on the ride of building a profitable software business using AI and NoCode tools.<br><br>This week I want to talk a bit about one of the most powerful things you can master in the age of LLMs - prompting.  And in particular, I want to talk about building dynamic prompts in <a href="https://bubble.com">Bubble</a>, where you inject user specific content and content from external services into your prompts to do some really incredible things.<br><br>Before we dive into that though, I want to give you a quick update about my visit last week to NoCode Summit in Paris.</p><p>This was my second time visiting, and it didn&#8217;t disappoint. I&#8217;m always blown away by how friendly people in the NoCode community are, and I feel really lucky to be a part of it and have made so many friends, including some of you who subscribe to this newsletter!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://youtu.be/S5C0s7xQqfs?si=7B1dFjDv1iivnpL9" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yFjZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc28ffd1f-96e8-4f2c-8bf2-a0189894ec6a_1843x1179.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yFjZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc28ffd1f-96e8-4f2c-8bf2-a0189894ec6a_1843x1179.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yFjZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc28ffd1f-96e8-4f2c-8bf2-a0189894ec6a_1843x1179.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yFjZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc28ffd1f-96e8-4f2c-8bf2-a0189894ec6a_1843x1179.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yFjZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc28ffd1f-96e8-4f2c-8bf2-a0189894ec6a_1843x1179.jpeg" width="1456" height="931" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c28ffd1f-96e8-4f2c-8bf2-a0189894ec6a_1843x1179.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:931,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:570725,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:&quot;https://youtu.be/S5C0s7xQqfs?si=7B1dFjDv1iivnpL9&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yFjZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc28ffd1f-96e8-4f2c-8bf2-a0189894ec6a_1843x1179.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yFjZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc28ffd1f-96e8-4f2c-8bf2-a0189894ec6a_1843x1179.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yFjZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc28ffd1f-96e8-4f2c-8bf2-a0189894ec6a_1843x1179.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yFjZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc28ffd1f-96e8-4f2c-8bf2-a0189894ec6a_1843x1179.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Me, Ash and Kieran at NoCode Summit recording a special podcast!</figcaption></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youtu.be/S5C0s7xQqfs?si=7B1dFjDv1iivnpL9&quot;,&quot;text&quot;:&quot;Watch NoCode Summit episode on YouTube&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youtu.be/S5C0s7xQqfs?si=7B1dFjDv1iivnpL9"><span>Watch NoCode Summit episode on YouTube</span></a></p><p><br>For me the big takeaway from the event is how AI is continuing to redefine the entire space, and really blur the lines between traditional development and NoCode.  Indeed even the term NoCode is being used less and less, with more of the tools preferring to talk about &#8216;visual development&#8217;.   </p><p>I think this is a good way of framing how the tools work, I&#8217;ve never fully understood why tools like Bubble are under the NoCode umbrella, many of the best apps have lots of custom code in them (even if it&#8217;s increasingly generated by LLMs &#128517;)<br><br>If you&#8217;re interested in hearing more about what happened at the summit, how to plan your time there, and all the after hours fun check out the latest <a href="https://youtu.be/S5C0s7xQqfs?si=7B1dFjDv1iivnpL9">Create With Podcast which I recorded right from the venue at Station F in Paris</a> with <a href="https://x.com/nocodelife">Kieran</a> and <a href="https://x.com/ashamplifies">Ash</a>.</p><p>Now let&#8217;s dive into this week&#8217;s topic&#8230;</p><h2>Dynamic Prompting in Bubble for AI</h2><p>If you&#8217;ve been building with AI and Bubble, I&#8217;m sure you&#8217;ve wondered like me about the best way to create prompts to get the highest quality outputs in your app.  <br><br>I covered the <a href="https://www.nocodesaas.io/p/building-complex-features-using-openai">basics of returning structured data from OpenAI in this previous edition </a>which you might find helpful to read before following the below if you&#8217;re not familiar with it.</p><p>The fact is, if you write simple prompts without a whole lot of context - you&#8217;re always going to get fairly generic responses back from the model.</p><p>To build truly magical user experiences that go way beyond what people could do directly in ChatGPT you need to get serious about writing dynamic prompts.</p><p>This means customizing the prompt every time it runs, depending on things like&#8230;<br></p><ul><li><p>The current user</p></li><li><p>What this specific user is trying to achieve, and  what other tasks they&#8217;ve already completed in your product</p></li><li><p>Where the user is located, the time of day and the date, what language do they speak</p></li><li><p>Pulling in things from external APIs, like scraping the user&#8217;s website to understand the context in which to execute your request</p></li><li><p>Changing a prompt behaviour depending on user preferences and settings</p></li></ul><p></p><p>By passing data like this into your requests to LLMs like OpenAI and Anthropic, you can dramatically improve the quality of the responses you get - and ultimately how useful your app is to users.</p><p>In this edition I want to cover a few of the most important basics for writing dynamic prompts in Bubble based on showing you an example from my own app, UserLoop.</p><p>I&#8217;m going to show you an example of one of my app&#8217;s most popular AI features - our AI powered survey question generator.<br></p><p>This feature not only helps with our onboarding flow by generating personalised survey questions for each user, it also is one of the most frequently used features in the app.</p><p>It&#8217;s all driven by dynamic prompting<br><br><a href="https://www.tella.tv/video/dynamic-llm-prompting-in-bubble-aso1">I&#8217;ve made a short video outlining the main techniques you can watch below</a>, or read on for the written tutorial version.<br></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.tella.tv/video/dynamic-llm-prompting-in-bubble-aso1" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xZZU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F950beba0-8e31-4d44-8afc-2c4f127ede84_2226x1242.png 424w, https://substackcdn.com/image/fetch/$s_!xZZU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F950beba0-8e31-4d44-8afc-2c4f127ede84_2226x1242.png 848w, https://substackcdn.com/image/fetch/$s_!xZZU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F950beba0-8e31-4d44-8afc-2c4f127ede84_2226x1242.png 1272w, https://substackcdn.com/image/fetch/$s_!xZZU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F950beba0-8e31-4d44-8afc-2c4f127ede84_2226x1242.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xZZU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F950beba0-8e31-4d44-8afc-2c4f127ede84_2226x1242.png" width="1456" height="812" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/950beba0-8e31-4d44-8afc-2c4f127ede84_2226x1242.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:812,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1714536,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.tella.tv/video/dynamic-llm-prompting-in-bubble-aso1&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xZZU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F950beba0-8e31-4d44-8afc-2c4f127ede84_2226x1242.png 424w, https://substackcdn.com/image/fetch/$s_!xZZU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F950beba0-8e31-4d44-8afc-2c4f127ede84_2226x1242.png 848w, https://substackcdn.com/image/fetch/$s_!xZZU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F950beba0-8e31-4d44-8afc-2c4f127ede84_2226x1242.png 1272w, https://substackcdn.com/image/fetch/$s_!xZZU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F950beba0-8e31-4d44-8afc-2c4f127ede84_2226x1242.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Tutorial on dynamic prompting in Bubble</figcaption></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.tella.tv/video/dynamic-llm-prompting-in-bubble-aso1&quot;,&quot;text&quot;:&quot;Watch the tutorial&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.tella.tv/video/dynamic-llm-prompting-in-bubble-aso1"><span>Watch the tutorial</span></a></p><p><br>Here&#8217;s the written version if you prefer that to watching the video&#8230;</p><h2>Use Option Sets for Prompt Management</h2><p>Option sets are the easiest way to manage prompts in Bubble. I use them for everything - survey types, languages, you name it.  <br><br>Just so long as it&#8217;s not sensitive information you can store it in an option set!</p><p><strong>Why they work:</strong></p><ul><li><p>Easy to update prompts without touching your workflows</p></li><li><p>Simple to test different versions</p></li><li><p>Can be attached to entities in your database</p></li></ul><p><strong>Here's how to get started:<br></strong><br>1. Create option sets for different scenarios (e.g., survey types, languages) - it all depends on what your app does.</p><p>2. Add a "prompt" field to each option in your option set</p><p>3. Store the actual prompt text within these options </p><h3><strong>Example</strong></h3><h4><strong>Option Set: Survey Types<br></strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yVOM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cee94-aac9-47b9-8642-cae630ee58d6_1298x1012.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yVOM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cee94-aac9-47b9-8642-cae630ee58d6_1298x1012.png 424w, https://substackcdn.com/image/fetch/$s_!yVOM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cee94-aac9-47b9-8642-cae630ee58d6_1298x1012.png 848w, https://substackcdn.com/image/fetch/$s_!yVOM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cee94-aac9-47b9-8642-cae630ee58d6_1298x1012.png 1272w, https://substackcdn.com/image/fetch/$s_!yVOM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cee94-aac9-47b9-8642-cae630ee58d6_1298x1012.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yVOM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cee94-aac9-47b9-8642-cae630ee58d6_1298x1012.png" width="1298" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/812cee94-aac9-47b9-8642-cae630ee58d6_1298x1012.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1298,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:100916,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yVOM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cee94-aac9-47b9-8642-cae630ee58d6_1298x1012.png 424w, https://substackcdn.com/image/fetch/$s_!yVOM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cee94-aac9-47b9-8642-cae630ee58d6_1298x1012.png 848w, https://substackcdn.com/image/fetch/$s_!yVOM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cee94-aac9-47b9-8642-cae630ee58d6_1298x1012.png 1272w, https://substackcdn.com/image/fetch/$s_!yVOM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812cee94-aac9-47b9-8642-cae630ee58d6_1298x1012.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Here you can see I&#8217;ve created a field called OpenAI Prompt where I&#8217;m going to store the prompt I want to inject for each option.<br>This makes your prompts easily maintainable and allows for quick updates without changing your workflow.</p><h2>Prompt Branching Logic</h2><p>Use Bubble's conditional logic to create dynamic branches in your prompts. Here's the basic pattern:</p><p><strong>1. Use "Is empty: formatted as text" to check field values</strong></p><p><strong>2. Create Yes/No branches for different content</strong></p><p><strong>3. Nest conditions for complex logic</strong></p><p><strong>Example Structure:</strong></p><p>Here&#8217;s an example from one of my prompts.<br><br>Here we are creating a branch in the logic for the prompt which is going to change depending on whether thie company&#8217;s Brand Text field is empty or not.  <br><br>We do this by using the expression <em><strong>Brand Text</strong></em><strong> </strong><em><strong>is empty: formatted as text</strong></em></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uI1-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3abd96c5-be61-444d-8685-d8f9ffb7f2b6_576x84.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uI1-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3abd96c5-be61-444d-8685-d8f9ffb7f2b6_576x84.png 424w, https://substackcdn.com/image/fetch/$s_!uI1-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3abd96c5-be61-444d-8685-d8f9ffb7f2b6_576x84.png 848w, https://substackcdn.com/image/fetch/$s_!uI1-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3abd96c5-be61-444d-8685-d8f9ffb7f2b6_576x84.png 1272w, https://substackcdn.com/image/fetch/$s_!uI1-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3abd96c5-be61-444d-8685-d8f9ffb7f2b6_576x84.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uI1-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3abd96c5-be61-444d-8685-d8f9ffb7f2b6_576x84.png" width="576" height="84" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3abd96c5-be61-444d-8685-d8f9ffb7f2b6_576x84.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:84,&quot;width&quot;:576,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:15120,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uI1-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3abd96c5-be61-444d-8685-d8f9ffb7f2b6_576x84.png 424w, https://substackcdn.com/image/fetch/$s_!uI1-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3abd96c5-be61-444d-8685-d8f9ffb7f2b6_576x84.png 848w, https://substackcdn.com/image/fetch/$s_!uI1-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3abd96c5-be61-444d-8685-d8f9ffb7f2b6_576x84.png 1272w, https://substackcdn.com/image/fetch/$s_!uI1-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3abd96c5-be61-444d-8685-d8f9ffb7f2b6_576x84.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Then in the formatting for the text we leave yes empty (we don&#8217;t want to inject any prompt if this record doesn&#8217;t have any data.  And for no (which mean a record exists) we want to inject the content from the database along with some instructions for the AI to follow.<br><br>But if we just injected these instructions when the record was empty, it would lead to us getting a very poor quality output from the model.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ayiP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af29e2-5254-41b5-b9fe-5a817535dfb6_666x930.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ayiP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af29e2-5254-41b5-b9fe-5a817535dfb6_666x930.png 424w, https://substackcdn.com/image/fetch/$s_!ayiP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af29e2-5254-41b5-b9fe-5a817535dfb6_666x930.png 848w, https://substackcdn.com/image/fetch/$s_!ayiP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af29e2-5254-41b5-b9fe-5a817535dfb6_666x930.png 1272w, https://substackcdn.com/image/fetch/$s_!ayiP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af29e2-5254-41b5-b9fe-5a817535dfb6_666x930.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ayiP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af29e2-5254-41b5-b9fe-5a817535dfb6_666x930.png" width="666" height="930" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4af29e2-5254-41b5-b9fe-5a817535dfb6_666x930.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:930,&quot;width&quot;:666,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93428,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ayiP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af29e2-5254-41b5-b9fe-5a817535dfb6_666x930.png 424w, https://substackcdn.com/image/fetch/$s_!ayiP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af29e2-5254-41b5-b9fe-5a817535dfb6_666x930.png 848w, https://substackcdn.com/image/fetch/$s_!ayiP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af29e2-5254-41b5-b9fe-5a817535dfb6_666x930.png 1272w, https://substackcdn.com/image/fetch/$s_!ayiP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4af29e2-5254-41b5-b9fe-5a817535dfb6_666x930.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>Database Content Injection</h2><p>This is the big one - using what you already know about your users makes AI responses 10x better. <br><br>In UserLoop, we check what questions are already in a survey to avoid duplicates.  But this could be used to pull any kind of information from your database and inject it into your prompt.<br></p><ul><li><p>Format your data clearly for the AI</p></li><li><p>Use the :format as text operator on a Search expression to add written context to results from your database</p></li><li><p>Add specific instructions ("Don't use any of these:")</p></li><li><p>Keep lists clean and readable, use line breaks to separate items</p></li></ul><p><br><strong>Here&#8217;s an example of that in practice&#8230;</strong><br><br>Here I&#8217;ve created a branch based on&#8230;</p><p><em>Search for Questions: first item is empty formatted as text</em> </p><p>That means for yes (there are no records) we don&#8217;t want to inject anything.<br><br>But, if data does exist (in the Formatting for no section) we want to inject a prompt and the content from the database.<br></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-UXY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdfafda5-00e3-4299-900d-297c0d8007e7_668x856.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-UXY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdfafda5-00e3-4299-900d-297c0d8007e7_668x856.png 424w, https://substackcdn.com/image/fetch/$s_!-UXY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdfafda5-00e3-4299-900d-297c0d8007e7_668x856.png 848w, https://substackcdn.com/image/fetch/$s_!-UXY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdfafda5-00e3-4299-900d-297c0d8007e7_668x856.png 1272w, https://substackcdn.com/image/fetch/$s_!-UXY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdfafda5-00e3-4299-900d-297c0d8007e7_668x856.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-UXY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdfafda5-00e3-4299-900d-297c0d8007e7_668x856.png" width="284" height="363.92814371257487" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdfafda5-00e3-4299-900d-297c0d8007e7_668x856.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:856,&quot;width&quot;:668,&quot;resizeWidth&quot;:284,&quot;bytes&quot;:83942,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-UXY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdfafda5-00e3-4299-900d-297c0d8007e7_668x856.png 424w, https://substackcdn.com/image/fetch/$s_!-UXY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdfafda5-00e3-4299-900d-297c0d8007e7_668x856.png 848w, https://substackcdn.com/image/fetch/$s_!-UXY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdfafda5-00e3-4299-900d-297c0d8007e7_668x856.png 1272w, https://substackcdn.com/image/fetch/$s_!-UXY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdfafda5-00e3-4299-900d-297c0d8007e7_668x856.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Here you can see the prompt and us running another Search for Questions operation, where we are formatting the output as text.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!--FL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7154cc7-279a-44e8-9acb-9c63adb13855_652x712.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!--FL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7154cc7-279a-44e8-9acb-9c63adb13855_652x712.png 424w, https://substackcdn.com/image/fetch/$s_!--FL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7154cc7-279a-44e8-9acb-9c63adb13855_652x712.png 848w, https://substackcdn.com/image/fetch/$s_!--FL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7154cc7-279a-44e8-9acb-9c63adb13855_652x712.png 1272w, https://substackcdn.com/image/fetch/$s_!--FL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7154cc7-279a-44e8-9acb-9c63adb13855_652x712.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!--FL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7154cc7-279a-44e8-9acb-9c63adb13855_652x712.png" width="416" height="454.2822085889571" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7154cc7-279a-44e8-9acb-9c63adb13855_652x712.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:712,&quot;width&quot;:652,&quot;resizeWidth&quot;:416,&quot;bytes&quot;:65757,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!--FL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7154cc7-279a-44e8-9acb-9c63adb13855_652x712.png 424w, https://substackcdn.com/image/fetch/$s_!--FL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7154cc7-279a-44e8-9acb-9c63adb13855_652x712.png 848w, https://substackcdn.com/image/fetch/$s_!--FL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7154cc7-279a-44e8-9acb-9c63adb13855_652x712.png 1272w, https://substackcdn.com/image/fetch/$s_!--FL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7154cc7-279a-44e8-9acb-9c63adb13855_652x712.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Then in our text box, we want to tell the LLM the name of each record, and add a comma and a line break in between each record.<br><br>This means the LLM is going to output a list of questions and for each one all the data listed above.<br></p><h2>External API Enrichment</h2><p>This is a bit more advanced but worth it. We use Perplexity to scan user websites and understand their brand. This means our AI writes questions that match their style.<br><br>We then take that data and inject it into our prompt - this gives the model additional information about the user making the request and their context.  Which in turn helps it write higher quality questions.</p><p><strong>Remember to:</strong></p><ul><li><p>Have a backup plan if the API fails - <em>use conditional branching!</em></p></li><li><p>Only use external data when it helps</p></li><li><p>Make sure you use the :formatted as JSON safe on all data you get back to avoid breaking your prompt with rogue characters</p></li></ul><p>I covered using Perplexity AI for this in a <a href="https://www.nocodesaas.io/p/building-magical-onboarding-with">recent edition, you can read it here.</a></p><p>Remember, the key to effective dynamic prompting is finding the right balance between providing enough context and keeping your prompts manageable. Start simple and build up complexity as needed depending on the results you get.</p><p><br><strong>That&#8217;s it for this week!</strong><br><br>I hope you found this issue helpful, I&#8217;m excited to dive into more AI topics in the next few issues.  I&#8217;m going to be covering Replicate, Bland AI, Replit and more on Cursor and Cloudflare - so stay tuned!<br><br>Anything else you&#8217;d like me to cover, or have thoughts on what I should be writing about? Drop me a reply or a comment, I love to hear from you!<br><br>Happy building! James.</p><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading NoCode SaaS! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[What's next for NoCode & AI? My takeaways from BubbleCon 2024.]]></title><description><![CDATA[Plus... how to pick the right AI model for your use case, predictions for the Bubble ecosystem and more!]]></description><link>https://www.nocodesaas.io/p/bubblecon-2024-review</link><guid isPermaLink="false">https://www.nocodesaas.io/p/bubblecon-2024-review</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 11 Oct 2024 16:37:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Q-gb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047fb2c4-f69e-481f-a41a-e652d43a249f_4000x2667.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there, <br><br>Welcome to this week&#8217;s NoCode SaaS newsletter, where I take you along on the ride to building a profitable software business using Bubble. <br><br>This is a bit of a special issue as it comes after my trip to New York for the second ever <a href="https://bubble.io/bubblecon">Bubble Conference</a>, where people building with Bubble around the world get together to see what&#8217;s next for the platform and learn from each other. <br><br>This year I was lucky enough to <a href="https://www.youtube.com/watch?v=MO71skiR3m8">host a fireside chat</a> where I spoke with <a href="https://www.linkedin.com/in/george-collier-uk/">George Collier</a> and <a href="https://www.linkedin.com/in/emily-bennington-a65b9ab8/">Emily Bennington</a> about building with NoCode and AI.  As you know from this newsletter, nothing gets me more excited than these two topics so we had a blast.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.youtube.com/watch?v=MO71skiR3m8" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q-gb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047fb2c4-f69e-481f-a41a-e652d43a249f_4000x2667.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Q-gb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047fb2c4-f69e-481f-a41a-e652d43a249f_4000x2667.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Q-gb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047fb2c4-f69e-481f-a41a-e652d43a249f_4000x2667.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Q-gb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047fb2c4-f69e-481f-a41a-e652d43a249f_4000x2667.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q-gb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047fb2c4-f69e-481f-a41a-e652d43a249f_4000x2667.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/047fb2c4-f69e-481f-a41a-e652d43a249f_4000x2667.jpeg&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;:4447761,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:&quot;https://www.youtube.com/watch?v=MO71skiR3m8&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Q-gb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047fb2c4-f69e-481f-a41a-e652d43a249f_4000x2667.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Q-gb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047fb2c4-f69e-481f-a41a-e652d43a249f_4000x2667.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Q-gb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047fb2c4-f69e-481f-a41a-e652d43a249f_4000x2667.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Q-gb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047fb2c4-f69e-481f-a41a-e652d43a249f_4000x2667.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Emily Bennington, George Collier and Myself at BubbleCon 2024</figcaption></figure></div><p>We touched on lots of topics, from how to get started building AI features with Bubble, through to more advanced topics like returning structured data, how to pick the right AI model for your use case and prompt engineering in Bubble.<br><br>The <a href="https://www.youtube.com/watch?v=MO71skiR3m8">full discussion is now live on YouTube here for you to watch</a> - I&#8217;d love to hear your thoughts and questions in the comments.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.youtube.com/watch?v=MO71skiR3m8&quot;,&quot;text&quot;:&quot;Watch on YouTube&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.youtube.com/watch?v=MO71skiR3m8"><span>Watch on YouTube</span></a></p><p></p><p>Over the 2 days we heard <a href="https://youtu.be/qe0RXqBoCb4?si=Trt_HrO2HFqcInJV">Bubble had acquired Flusk</a>, launched the <a href="https://youtu.be/KFiWq545A_o?si=8Tq3F1rXvBFDLUBE">Native Mobile App Builder in Beta</a> and announced Bubble Assisst AI.  We also got a new design for the workflow tab in the editor and a bunch other updates.</p><p>There was a great session from <a href="https://youtu.be/M_dcdBAzaWI?si=arW1iWrlcdB6QZ9R">Gregory John on SEO in Bubble</a> (it is possible to rank well!) and another from <a href="https://youtu.be/Hnjhxn7kmg4?si=KltRzrS1YKN--0tQ">Petter Amlie on Balancing Workload, UX and Performance</a> that is defiantly worth a watch<br><br>It was great to meet so many people building amazing things with Bubble over the 2 days, and lots of subscribers to the newsletter in person!<br><br>I was also lucky enough to meet the winner of the free BubbleCon ticket from the contest in this newsletter a few weeks ago - <strong>Steven Traykovski </strong><em>(awesome to meet you Steven!!)</em></p><p>Once we wrapped on the conference I was lucky enough to be joined by Sam Morgan and Andrew Vernon from Bubble for a quick chat on the <a href="https://arc.net/l/quote/qiggtrtc">Create With Podcast</a>, where we talked about our highlights from the 2 days and predictions for next year.  </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://youtu.be/abkeLCTyNKQ?si=_6gU0bqyy3H0ejqj" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0s6O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7605ee6-c2cc-4e6e-ac7f-faa96f3b5b63_2048x1152.png 424w, https://substackcdn.com/image/fetch/$s_!0s6O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7605ee6-c2cc-4e6e-ac7f-faa96f3b5b63_2048x1152.png 848w, https://substackcdn.com/image/fetch/$s_!0s6O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7605ee6-c2cc-4e6e-ac7f-faa96f3b5b63_2048x1152.png 1272w, https://substackcdn.com/image/fetch/$s_!0s6O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7605ee6-c2cc-4e6e-ac7f-faa96f3b5b63_2048x1152.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0s6O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7605ee6-c2cc-4e6e-ac7f-faa96f3b5b63_2048x1152.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7605ee6-c2cc-4e6e-ac7f-faa96f3b5b63_2048x1152.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:546569,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://youtu.be/abkeLCTyNKQ?si=_6gU0bqyy3H0ejqj&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0s6O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7605ee6-c2cc-4e6e-ac7f-faa96f3b5b63_2048x1152.png 424w, https://substackcdn.com/image/fetch/$s_!0s6O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7605ee6-c2cc-4e6e-ac7f-faa96f3b5b63_2048x1152.png 848w, https://substackcdn.com/image/fetch/$s_!0s6O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7605ee6-c2cc-4e6e-ac7f-faa96f3b5b63_2048x1152.png 1272w, https://substackcdn.com/image/fetch/$s_!0s6O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7605ee6-c2cc-4e6e-ac7f-faa96f3b5b63_2048x1152.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So if you&#8217;re looking for a quick 30 minute summary of everything that happened that&#8217;s worth checking out.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://youtu.be/abkeLCTyNKQ?si=_6gU0bqyy3H0ejqj&quot;,&quot;text&quot;:&quot;Watch the Podcast on YouTube&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youtu.be/abkeLCTyNKQ?si=_6gU0bqyy3H0ejqj"><span>Watch the Podcast on YouTube</span></a></p><p>It was a super interesting few days, where I learnt a lot and left feeling super optimistic about the opportunities for people building with NoCode and AI over the next year.<br><br><strong>I&#8217;ve put together some of 3 of my overall takeaways from the conference below, focussed on Bubble x AI&#8230; and what&#8217;s next.</strong></p><div><hr></div><h3>1. Bubble should be the default way most AI powered SaaS starts out</h3><p>Bubble is exceptionally well positioned to win in the AI software development space.  It has all the components needed to beat players like Replit if it can execute well.</p><p>I see Bubble as being a central hub in my own app UserLoop - it&#8217;s the glue that sticks all these other services together.  From OpenAI, to Anthropic, Tinybird, Shopify - they&#8217;re all spokes around Bubble as the central processing hub.<br><br>Bubble combines an IDE, hosting, database, security management, hosting, API management all in one package - with a powerful visual workflow editor that let&#8217;s you see what&#8217;s happening.<br><br>I believe that pretty much every SaaS app that wants to leverage intelligence should start out being built with Bubble.  The ability to build, iterate and ship quickly alone is incredibly powerful.<br></p><h3>2. <strong>Job market disruption will send way more people into Bubble&#8217;s ecosystem</strong></h3><p>As AI increasingly disrupts the job market I expect more and more people to enter the Bubble ecosystem and start building their own software to make a living.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ELea!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa911e187-9735-469d-ad8c-5aab8930eada.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ELea!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa911e187-9735-469d-ad8c-5aab8930eada.heic 424w, https://substackcdn.com/image/fetch/$s_!ELea!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa911e187-9735-469d-ad8c-5aab8930eada.heic 848w, https://substackcdn.com/image/fetch/$s_!ELea!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa911e187-9735-469d-ad8c-5aab8930eada.heic 1272w, https://substackcdn.com/image/fetch/$s_!ELea!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa911e187-9735-469d-ad8c-5aab8930eada.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ELea!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa911e187-9735-469d-ad8c-5aab8930eada.heic" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a911e187-9735-469d-ad8c-5aab8930eada.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:915291,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ELea!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa911e187-9735-469d-ad8c-5aab8930eada.heic 424w, https://substackcdn.com/image/fetch/$s_!ELea!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa911e187-9735-469d-ad8c-5aab8930eada.heic 848w, https://substackcdn.com/image/fetch/$s_!ELea!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa911e187-9735-469d-ad8c-5aab8930eada.heic 1272w, https://substackcdn.com/image/fetch/$s_!ELea!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa911e187-9735-469d-ad8c-5aab8930eada.heic 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Bubble sees itself at the intersection of Entrepreneurship and AI - this is a good description.</figcaption></figure></div><p>One trend I noticed at BubbleCon this year was how many other ex-product managers I met who were now building in Bubble.</p><p>I spent 10 years in product management myself before starting to work full time with Bubble on a SaaS.  Skills like product management translate to Bubble and AI really well, as you can often apply your skills to actually shipping features instead of just describing them in Jira tickets.</p><p>10 years ago I would never have imagined I&#8217;d be running a SaaS without being a programmer, and to be making a living from it.  <br><br>I&#8217;m really excited to see more and more people take that path, becoming independent and building incredible things.</p><h3>3. <strong>Importance of Prompt Engineering</strong></h3><p>One skill I think it&#8217;s super important to work on is prompt engineering.  Not only for using in tools like ChatGPT and Claude, but also for building custom complex prompts in Bubble itself.<br><br>As I mentioned in a previous issue, I now use the combination of Claude + Cloudflare + OpenAI + Bubble to ship most of the AI features in apps I work with, and that all depends on having a good understanding of how to prompt AI.</p><p>Knowing how to write high quality prompts that give clear direction can mean you can ship incredible features quickly with minimal revisions.  I <a href="https://www.nocodesaas.io/p/tutorial-ai-data-extraction-in-bubble">covered this example in a previous issue</a> but I&#8217;ld love to cover this more in future issues as I think it&#8217;s so important.</p><p>The other prompting skill it&#8217;s important to learn is how to write dynamic prompts in Bubble, with branching and injection of data from the database into prompts.<br><br>I&#8217;m going to cover this in a future edition, as this is pretty essential when trying to do more advanced things with AI models in Bubble.<br><br>Don&#8217;t expect to get high quality outputs from AI without making amazing prompts, and providing the model with as much data as possible.  Without customizing your prompts and injecting user specific data, you&#8217;re not offering anything over what they could do with ChatGPT directly - so this is important to learn.</p><div><hr></div><p><strong>That&#8217;s it for this week! </strong></p><p>I hope you found this issue interesting, I feel really lucky to have been able to attend BubbleCon and meet so many fantastic people. <br><br>I honestly don&#8217;t think there&#8217;s ever been such an exciting time to be building software without actually writing the code yourself - what you can build now is truly incredible.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qiyx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca83180-6f31-429e-9e31-cefc4a79637f_1600x1066.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qiyx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca83180-6f31-429e-9e31-cefc4a79637f_1600x1066.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Qiyx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca83180-6f31-429e-9e31-cefc4a79637f_1600x1066.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Qiyx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca83180-6f31-429e-9e31-cefc4a79637f_1600x1066.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Qiyx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca83180-6f31-429e-9e31-cefc4a79637f_1600x1066.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qiyx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca83180-6f31-429e-9e31-cefc4a79637f_1600x1066.jpeg" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aca83180-6f31-429e-9e31-cefc4a79637f_1600x1066.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:165618,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Qiyx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca83180-6f31-429e-9e31-cefc4a79637f_1600x1066.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Qiyx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca83180-6f31-429e-9e31-cefc4a79637f_1600x1066.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Qiyx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca83180-6f31-429e-9e31-cefc4a79637f_1600x1066.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Qiyx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faca83180-6f31-429e-9e31-cefc4a79637f_1600x1066.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Next week I&#8217;m heading to NoCode Summit in Paris - I&#8217;ll be covering everything that happens and all the big news.  Will you be there? drop me a reply I&#8217;d love to meet you and get a coffee!</p><p>That&#8217;s it for this time, we&#8217;ll be back to more tutorial focussed content soon.  But in the meantime don&#8217;t forget to <a href="https://social.createwith.com">subscribe to my other newsletter Create With</a> for more weekly news on AI and NoCode!</p><p>Until next time, happy building!</p><p>Cheers,</p><p>James.<br><br>PS: Need help building your own NoCode SaaS or implementing AI or APIs? Check out my <a href="https://www.nocodesaas.io/p/bubble-development-and-consulting">consulting and development page</a> - I&#8217;m love working with other founders and startups to help bring products to life. &#9996;&#65039;</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading NoCode SaaS! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Tutorial: AI Data Extraction in Bubble with Cloudflare Workers]]></title><description><![CDATA[Tutorial on how to build a Cloudflare Worker without code that can use AI to extract data and return it to Bubble. And an update on my new AI & NoCode project 'Create With' &#128064;]]></description><link>https://www.nocodesaas.io/p/tutorial-ai-data-extraction-in-bubble</link><guid isPermaLink="false">https://www.nocodesaas.io/p/tutorial-ai-data-extraction-in-bubble</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 27 Sep 2024 16:45:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9tAc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63115653-c287-41eb-a373-c28a68cf2e71_2160x2160.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there!</p><p>Welcome to this week's NoCode SaaS newsletter, where I take you along on my journey of building profitable software businesses without code using <a href="https://userloop.io">Bubble</a>.  <br><br>This week&#8217;s tutorial is all about how to build a Cloudflare Worker without code that can extract structured data using OpenAI and return it to Bubble - it&#8217;s a super cool technique I&#8217;ve been using lots of my apps.</p><p>I&#8217;m heading to New York this weekend for the second ever BubbleCon.  I can&#8217;t wait to see lots of you there.  I&#8217;m hosting a AI and NoCode fireside chat on Day 2, so be sure to check that out as we have an awesome panel with <a href="https://www.linkedin.com/in/george-collier-uk/">George</a> and <a href="https://www.linkedin.com/in/emily-bennington-a65b9ab8/">Emily</a>!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://bubble.io/bubblecon" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9tAc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63115653-c287-41eb-a373-c28a68cf2e71_2160x2160.png 424w, https://substackcdn.com/image/fetch/$s_!9tAc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63115653-c287-41eb-a373-c28a68cf2e71_2160x2160.png 848w, https://substackcdn.com/image/fetch/$s_!9tAc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63115653-c287-41eb-a373-c28a68cf2e71_2160x2160.png 1272w, https://substackcdn.com/image/fetch/$s_!9tAc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63115653-c287-41eb-a373-c28a68cf2e71_2160x2160.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9tAc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63115653-c287-41eb-a373-c28a68cf2e71_2160x2160.png" width="372" height="372" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/63115653-c287-41eb-a373-c28a68cf2e71_2160x2160.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:372,&quot;bytes&quot;:3524573,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://bubble.io/bubblecon&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9tAc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63115653-c287-41eb-a373-c28a68cf2e71_2160x2160.png 424w, https://substackcdn.com/image/fetch/$s_!9tAc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63115653-c287-41eb-a373-c28a68cf2e71_2160x2160.png 848w, https://substackcdn.com/image/fetch/$s_!9tAc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63115653-c287-41eb-a373-c28a68cf2e71_2160x2160.png 1272w, https://substackcdn.com/image/fetch/$s_!9tAc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63115653-c287-41eb-a373-c28a68cf2e71_2160x2160.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><div><hr></div><p>But first I wanted to update you on a busy few weeks - super excited to have just launched <strong><a href="https://createwith.com">Create With</a></strong>!<br><br>It's bringing together a bunch of different projects I&#8217;ve been working on over the last few years.</p><ul><li><p>The <a href="https://nocodeuk.org">NoCode UK Conference</a> I organized with <a href="https://x.com/nocodelife">Kieran</a> and <a href="https://x.com/ashamplifies">Ash</a></p></li><li><p>The <a href="https://podcasters.spotify.com/pod/show/createwith">NoCode SaaS Podcast</a></p></li><li><p>Tutorials, interviews and reporting from AI and NoCode events around the world</p></li></ul><p>The next few years hold incredible opportunity for more and more people to change their lives through learning how to build apps, without being a traditional programmer.<br><br>We wanted to pool our resources so we can help as many people as possible upskill with AI and NoCode and start building. </p><p>Kieran, Ash and I <a href="https://www.youtube.com/watch?v=D1E4Tap6yf0&amp;t=7s">recorded a podcast this week</a> where we spoke about the reasoning for the change and some of what we have planned.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.youtube.com/watch?v=D1E4Tap6yf0&amp;t=7s" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pe7y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0a5531-2b8c-455d-bafb-a928d52e3bda_2312x1296.png 424w, https://substackcdn.com/image/fetch/$s_!pe7y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0a5531-2b8c-455d-bafb-a928d52e3bda_2312x1296.png 848w, https://substackcdn.com/image/fetch/$s_!pe7y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0a5531-2b8c-455d-bafb-a928d52e3bda_2312x1296.png 1272w, https://substackcdn.com/image/fetch/$s_!pe7y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0a5531-2b8c-455d-bafb-a928d52e3bda_2312x1296.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pe7y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0a5531-2b8c-455d-bafb-a928d52e3bda_2312x1296.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa0a5531-2b8c-455d-bafb-a928d52e3bda_2312x1296.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2165345,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.youtube.com/watch?v=D1E4Tap6yf0&amp;t=7s&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pe7y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0a5531-2b8c-455d-bafb-a928d52e3bda_2312x1296.png 424w, https://substackcdn.com/image/fetch/$s_!pe7y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0a5531-2b8c-455d-bafb-a928d52e3bda_2312x1296.png 848w, https://substackcdn.com/image/fetch/$s_!pe7y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0a5531-2b8c-455d-bafb-a928d52e3bda_2312x1296.png 1272w, https://substackcdn.com/image/fetch/$s_!pe7y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0a5531-2b8c-455d-bafb-a928d52e3bda_2312x1296.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>Why We Combined NoCode UK and NoCode SaaS Podcast... and What Happens Next</strong></figcaption></figure></div><p><br>The <a href="https://createwith.com">Create With Conference</a> is going to be back bigger and better than ever in London in 2025 - <a href="https://content.createwith.com/products/2025-earlybird-ticket">earlybird tickets are already on sale</a> and going fast.  We&#8217;re pulling together the leading experts in AI and NoCode, who have been there and done it themselves to speak at the event.  Can&#8217;t wait to reveal more about this soon!</p><p><strong>Please consider <a href="https://social.createwith.com">subscribing to the free Create With Newsletter</a> - we&#8217;re aiming to make an unmissable weekly summary of what&#8217;s happening in AI and NoCode.  With the top news, tutorials and events from around the world.</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://social.createwith.com&quot;,&quot;text&quot;:&quot;Subscribe to the Create With Newsletter&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://social.createwith.com"><span>Subscribe to the Create With Newsletter</span></a></p><p><em><br>Now, on to this week&#8217;s tutorial&#8230;</em></p><div><hr></div><h3><strong>Creating a Cloudflare Worker to Extract Data Using AI</strong></h3><p>I&#8217;ve <a href="https://www.nocodesaas.io/p/cloudflare-workers-nocode-bubble">written before about how much I love Cloudflare Workers</a>.  <br><br>Workers are small JavaScript programs that run on Cloudflare's network. <br><br>They execute incredibly fast and can handle tasks like processing HTTP requests, making network calls, and interacting with APIs&#8212;all without the need for a traditional server setup.<br><br>They&#8217;re an amazing tool to use with Bubble, as they can complete tasks at a very low cost - and they can do things you simply can&#8217;t do in Bubble.<br><br>And the best thing is, you can create them without writing any code all through a web UI, and they hook up to Bubble easily via the API Connector.</p><p>In this tutorial, I&#8217;m going to walk through&#8230;</p><ul><li><p><strong>Use AI (OpenAI's GPT-4o-mini model)</strong> to extract key information from resumes.</p></li><li><p><strong>Generate the worker code automatically</strong> using Anthropic's Claude AI assistant.</p></li><li><p><strong>Integrate the worker with Bubble.io</strong> using the API Connector plugin.</p></li></ul><p>You can <a href="https://youtu.be/OwPu_Pg1cQY">watch the tutorial here</a>&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://youtu.be/OwPu_Pg1cQY" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z6aF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11aa83dd-f5f9-402f-a2d8-822a21b393a6_2542x1418.png 424w, https://substackcdn.com/image/fetch/$s_!Z6aF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11aa83dd-f5f9-402f-a2d8-822a21b393a6_2542x1418.png 848w, https://substackcdn.com/image/fetch/$s_!Z6aF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11aa83dd-f5f9-402f-a2d8-822a21b393a6_2542x1418.png 1272w, https://substackcdn.com/image/fetch/$s_!Z6aF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11aa83dd-f5f9-402f-a2d8-822a21b393a6_2542x1418.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z6aF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11aa83dd-f5f9-402f-a2d8-822a21b393a6_2542x1418.png" width="1456" height="812" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/11aa83dd-f5f9-402f-a2d8-822a21b393a6_2542x1418.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:812,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4478677,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://youtu.be/OwPu_Pg1cQY&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Z6aF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11aa83dd-f5f9-402f-a2d8-822a21b393a6_2542x1418.png 424w, https://substackcdn.com/image/fetch/$s_!Z6aF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11aa83dd-f5f9-402f-a2d8-822a21b393a6_2542x1418.png 848w, https://substackcdn.com/image/fetch/$s_!Z6aF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11aa83dd-f5f9-402f-a2d8-822a21b393a6_2542x1418.png 1272w, https://substackcdn.com/image/fetch/$s_!Z6aF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11aa83dd-f5f9-402f-a2d8-822a21b393a6_2542x1418.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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://youtu.be/OwPu_Pg1cQY&quot;,&quot;text&quot;:&quot;Watch Free Tutorial&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://youtu.be/OwPu_Pg1cQY"><span>Watch Free Tutorial</span></a></p><div><hr></div><h3><strong>Step-by-Step Guide</strong></h3><h4><strong>1. Set Up Your Cloudflare Worker</strong></h4><ul><li><p><strong>Log into Cloudflare</strong>: Access your Cloudflare account dashboard.</p></li><li><p><strong>Navigate to Workers</strong>: Click on the "Workers" section on the left sidebar.</p></li><li><p><strong>Create a New Worker</strong>:</p><ul><li><p>Click "Create a Worker" and select "Create a blank worker."</p></li><li><p>Name your worker (e.g., <code>Resume-AI-Extractor</code>) and click "Deploy."<br><br></p></li></ul></li></ul><h4><strong>2. Generate Worker Code Using AI</strong></h4><ul><li><p><strong>Open Anthropic's Claude</strong>:</p><ul><li><p>Provide a prompt outlining what you want the worker to do. For example here is the example prompt I use in the video</p></li></ul></li></ul><blockquote><p><code>I want to create a Cloudflare Worker which extracts key info from a resume and returns it as a structured JSON object.</code></p><p><code>- The Cloudflare Worker variable for the OpenAI key is OPENAI_API_KEY.</code></p><p><code>- Use the OpenAI model 'gpt-4o-mini'.</code></p><p><code>- Use OpenAI's JSON mode to return structured data.</code></p><p><code>- Make a POST request to the worker with an object containing the text from a resume, e.g.:</code></p><p><code>{</code></p><p><code>  "resume_text": "Your resume text goes here..."</code></p><p><code>}</code></p><p><code>- I want the worker to return a standard structure of data from a resume. You should define the structure.</code></p></blockquote><p></p><ul><li><p><strong>Receive the Generated Code</strong>:</p><ul><li><p>Claude will generate the JavaScript code for your worker, handling the POST request, calling the OpenAI API, and returning the structured data.<br></p></li></ul></li><li><p><strong>Copy the Code</strong>:</p><ul><li><p>Paste the generated code into your Cloudflare Worker's code editor.<br><br></p></li></ul></li></ul><h4><strong>3. Securely Store Your OpenAI API Key</strong></h4><ul><li><p><strong>Set Environment Variables</strong>:</p><ul><li><p>In Cloudflare, go to your worker's "Settings" and add an environment variable for your OpenAI API key.</p></li><li><p>Name it (e.g., <code>OPENAI_API_KEY</code>) and paste your API key.</p></li><li><p><strong>Encrypt the Variable</strong> to keep your API key secure.</p></li><li><p>Don&#8217;t forget to press &#8216;Deploy&#8217; to store the key.<br></p></li></ul></li></ul><h4><strong>4. Test Your Worker<br></strong></h4><ul><li><p><strong>Prepare Sample Data</strong>:</p><ul><li><p>Use a sample resume text to test your worker.<br><br><em>A great tip is to just ask Claude to generate you some test data to use in a post request, it will be formatted correctly and saves you spending time on mocking up test data!</em><br><br><br></p></li></ul></li><li><p><strong>Use the Testing Pane</strong>:</p><ul><li><p>In the Cloudflare editor, switch to the right hand pane where you can test out your Worker code.</p></li><li><p>Set the request method to <code>POST</code> and paste your sample resume into the request body.<br><br></p></li></ul></li><li><p><strong>Run the Test</strong>:</p><ul><li><p>Click "Send" to execute the worker.</p></li><li><p>Check the output. The worker should return structured JSON data extracted from the resume.</p></li><li><p>If you get any errors in the output from the worker, you can copy and paste the error and put it into Claude to ask it to fix the Worker code.<br><br><em>Tip: You can take screenshots of the errors and upload them to Claude, it recognises them too!</em></p><p></p></li></ul></li></ul><h4><strong>5. Integrate with Bubble.io</strong></h4><ul><li><p><strong>Copy the Worker's URL</strong>:</p><ul><li><p>You'll need this to set up the API call in Bubble.<br></p></li></ul></li><li><p><strong>Set Up the Bubble API Connector</strong>:</p><ul><li><p>In your Bubble app, head to the API Connector</p></li><li><p>Create a new API call:</p><ul><li><p><strong>API Name</strong>: <code>Cloudflare Worker</code></p></li><li><p><strong>Call Name</strong>: <code>Resume Extractor</code></p></li><li><p><strong>Method</strong>: <code>POST</code></p></li><li><p><strong>URL</strong>: Paste your worker's URL.</p></li><li><p><strong>Body Type</strong>: JSON</p></li><li><p><strong>Request Body</strong>: Include a parameter for <code>resume_text</code>.</p><p></p></li></ul></li></ul></li><li><p><strong>Initialize the Call</strong>:</p><ul><li><p>Bubble will detect the data structure from the worker's response.<br></p></li></ul></li><li><p><strong>Use the API in Your App</strong>:</p><ul><li><p>You can now use this API call in your workflows to extract data from resumes and use it within your Bubble app.</p></li></ul></li></ul><div><hr></div><h3><strong>Why Use Cloudflare Workers for AI Tasks?</strong></h3><ul><li><p><strong>Cost-Effective</strong>: Cloudflare Workers are inexpensive to run, with a generous free tier - you probably will never need to pay unless you&#8217;re running millions of requests.<br></p></li><li><p><strong>Performance</strong>: They run on Cloudflare's global network, ensuring low latency and high speed.  There&#8217;s minimal lag when you make the request from Bubble, the Worker starts working immediately.<br></p></li><li><p><strong>Scalability</strong>: Easily handle increasing workloads without worrying about server management - not to mention the reduced WU consumption.<br></p></li><li><p><strong>Security</strong>: Store sensitive data like API keys securely using environment variables.</p></li></ul><div><hr></div><h3><strong>Things to Keep in Mind</strong></h3><ul><li><p><strong>Security Measures</strong>: Consider adding authentication to your worker to prevent unauthorized access.  I&#8217;ll cover this in a future edition, it&#8217;s as simple as asking Claude to implement <br></p></li><li><p><strong>Error Handling</strong>: Implement robust error handling in your worker code to manage exceptions gracefully, Claude can handle writing all of this for you.<br></p></li><li><p><strong>Customization</strong>: Tailor the data extraction and JSON structure to fit your application's needs - the possibilities are pretty endless.</p></li></ul><div><hr></div><h3><strong>Next Steps and Enhancements</strong></h3><p>While we've focused on extracting data from resumes, this approach can be extended to other documents like invoices, contracts, or any text-based data. <br><br>You could also:</p><ul><li><p><strong>Add More Features</strong>: Integrate additional AI models or services as needed, you can even make multiple calls to different AIs and group together the responses.  I have used looping to make hundreds of requests to OpenAI from a single worker and then batched together the outputs - it&#8217;s amazing.</p></li><li><p><strong>Expand Functionality</strong>: Use the worker to perform other tasks like data validation, sentiment analysis, or language translation, you can even use the built in Workers AI Meta models to use AI analysis for free - we&#8217;ll cover this in another future edition.</p></li></ul><div><hr></div><h3><strong>That&#8217;s it for this week!</strong></h3><p>You don&#8217;t need to be a hardcore coder to use Cloudflare Workers, I believe they&#8217;re something every Bubble developer should have in their pocket.<br><br>For doing complex things with AI, reformatting data or other custom logic, they&#8217;re the perfect partner to your Bubble App - I&#8217;ve already built over 20 for doing different tasks in my own apps!</p><p><strong>I hope you found this guide helpful!</strong> As always, feel free to reach out with any questions or feedback. I'm excited to see how you implement this in your projects.</p><div><hr></div><p><strong>Stay tuned for next week&#8217;s issue where I&#8217;ll write up everything that happened at BubbleCon!<br><br>We&#8217;ll have some exciting interviews from the conference lined up, so don&#8217;t forget to <a href="https://social.createwith.com">subscribe to the Create With Newsletter </a>and Podcast to stay posted!<br></strong></p><div><hr></div><p><strong>Need help building or planning a AI and NoCode App? </strong><a href="https://www.nocodesaas.io/p/bubble-development-and-consulting">Check out my Dev &amp; Consulting options</a>! I&#8217;ve worked with lots of founders to help them build and launch AI powered apps with Bubble <strong><br></strong></p><p>That&#8217;s it for this week - happy building!<br><br>James.</p>]]></content:encoded></item><item><title><![CDATA[How to scrape data from Instagram, X, YouTube and Google in your Bubble App]]></title><description><![CDATA[Setting up scraping from your Bubble App is easier than you think - and can open up a whole new world of product ideas. Full video tutorial on how to do it in this week's edition.]]></description><link>https://www.nocodesaas.io/p/bubble-scraper-api-apify-instagram-x-youtube</link><guid isPermaLink="false">https://www.nocodesaas.io/p/bubble-scraper-api-apify-instagram-x-youtube</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 06 Sep 2024 14:48:04 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c6658011-c975-41bc-8901-f5161ecf2e89_1200x678.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there,</p><p>It's James from the No Code SaaS newsletter.  This is the newsletter where I take you along on my journey of building a profitable SaaS business without code.</p><p>This week we're diving into an alternative approach for getting certain types of data into your app - web scraping. </p><p>If you've ever wanted to pull in tweets, Instagram posts, or Google search results, this technique is well worth considering.</p><p>I've used it in a couple of apps myself and found it incredibly handy,  it&#8217;s a really flexible way of getting all sorts of data into your app.  Particularly useful for doing things like AI analysis.  </p><p>Also in this week&#8217;s edition I&#8217;m <a href="https://forms.gle/HnVBLAoUn4WnaFTm6">running a contest </a>for a free ticket to the <a href="https://bubble.io">Bubble</a> conference in NYC taking place next month, <a href="https://bubble.io/bubblecon">BubbleCon</a>.  I&#8217;ll be speaking on the AI panel on Day 2 - so can&#8217;t wait to see you there.  </p><p><strong>If you&#8217;d prefer to dive in and watch the tutorial straight away, <a href="https://www.tella.tv/video/nocode-saas-scrape-anything-anywhere-in-bubble-59zb">just click here.</a></strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.tella.tv/video/nocode-saas-scrape-anything-anywhere-in-bubble-59zb&quot;,&quot;text&quot;:&quot;Watch Bubble Scraping Tutorial&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.tella.tv/video/nocode-saas-scrape-anything-anywhere-in-bubble-59zb"><span>Watch Bubble Scraping Tutorial</span></a></p><p></p><h2>Why Scraping?</h2><p>Let's face it - many services like Twitter, Instagram, and Google either don't have APIs we can easily use, or they're heavily restricted. </p><p>Twitter's API limitations have become particularly onerous lately. This is where scraping services come in handy. </p><p>They're reliable, high-quality, and way easier to use than official APIs. Plus, there are far fewer restrictions - though you will likely have to pay to use them.  </p><p>But in my experience it&#8217;s worth the cost compared the extra dev time, limitations and restrictions that often come with using official APIs.</p><p>With large scale providers like <a href="https://www.apify.com?fpr=uia6o">Apify</a> maintaining the scrapers, all you have to do is set up an API call and forget about it, I&#8217;ve found it to be highly reliable with minimal issues. </p><h2>What Can You Scrape?</h2><p>The possibilities are vast, but here are some practical examples:</p><ol><li><p><strong>Social Media Content:</strong></p><ul><li><p><strong>Twitter/X</strong>: Grab tweets, user profiles, or trending topics</p></li><li><p><strong>Instagram</strong>: Fetch posts, stories, or user information</p></li><li><p><strong>LinkedIn</strong>: Pull job postings, company updates, or user profiles<br></p></li></ul></li><li><p><strong>Search Engine Data:</strong></p><ul><li><p><strong>Google</strong>: Capture search results, featured snippets, or local business listings<br><br></p></li></ul></li><li><p><strong>E-commerce Information:</strong></p><ul><li><p><strong>Amazon</strong>: Product details, prices, reviews</p></li><li><p><strong>Etsy</strong>: Handmade and vintage item listings</p></li><li><p><strong>eBay</strong>: Auction data, seller ratings<br></p></li></ul></li><li><p><strong>News and Content:</strong></p><ul><li><p><strong>News websites</strong>: Article headlines, summaries, full content</p></li><li><p><strong>Blogs</strong>: Posts, comments, author information</p></li><li><p><strong>YouTube</strong>: Video titles, descriptions, view counts<br></p></li></ul></li><li><p><strong>Travel and Hospitality:</strong></p><ul><li><p><strong>TripAdvisor</strong>: Hotel reviews, ratings, pricing</p></li><li><p><strong>Airbnb</strong>: Property listings, host information, availability</p></li></ul></li></ol><p></p><h2>The Tool: <a href="https://www.apify.com?fpr=uia6o">Apify</a></h2><p>In this week's tutorial, we're using <a href="https://www.apify.com?fpr=uia6o">Apify</a>. It's like an app store for scrapers - thousands of pre-built options ready to go. </p><p>I've found it super reliable and it plays nice with <a href="https://bubble.io">Bubble</a>. Best of all, it's dead simple to use.</p><p><strong>How It Works</strong></p><ol><li><p><strong>Choose Your Scraper:</strong> Apify has scrapers for almost everything. We're using their Instagram scraper as an example.</p></li><li><p><strong>Configure</strong>: Set what you want to scrape (e.g., hashtags, number of posts).</p></li><li><p><strong>Run</strong>: Execute the scraper through an API call.</p></li><li><p><strong>Get Data:</strong> Receive structured JSON data ready to use in your Bubble app.</p></li></ol><p>In my <a href="https://www.tella.tv/video/nocode-saas-scrape-anything-anywhere-in-bubble-59zb">video tutorial</a>, I walk through scraping Instagram posts with the #bubblecon2023 hashtag. </p><p>We set it up in Apify, create an API connector in Bubble, and then display the results on a page. It's that straightforward.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.tella.tv/video/nocode-saas-scrape-anything-anywhere-in-bubble-59zb" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_z7p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec483cc-7bab-47ce-ac83-6cff01c58bed_2540x1422.png 424w, https://substackcdn.com/image/fetch/$s_!_z7p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec483cc-7bab-47ce-ac83-6cff01c58bed_2540x1422.png 848w, https://substackcdn.com/image/fetch/$s_!_z7p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec483cc-7bab-47ce-ac83-6cff01c58bed_2540x1422.png 1272w, https://substackcdn.com/image/fetch/$s_!_z7p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec483cc-7bab-47ce-ac83-6cff01c58bed_2540x1422.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_z7p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec483cc-7bab-47ce-ac83-6cff01c58bed_2540x1422.png" width="1456" height="815" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ec483cc-7bab-47ce-ac83-6cff01c58bed_2540x1422.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:815,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4527671,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.tella.tv/video/nocode-saas-scrape-anything-anywhere-in-bubble-59zb&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_z7p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec483cc-7bab-47ce-ac83-6cff01c58bed_2540x1422.png 424w, https://substackcdn.com/image/fetch/$s_!_z7p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec483cc-7bab-47ce-ac83-6cff01c58bed_2540x1422.png 848w, https://substackcdn.com/image/fetch/$s_!_z7p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec483cc-7bab-47ce-ac83-6cff01c58bed_2540x1422.png 1272w, https://substackcdn.com/image/fetch/$s_!_z7p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec483cc-7bab-47ce-ac83-6cff01c58bed_2540x1422.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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://www.tella.tv/video/nocode-saas-scrape-anything-anywhere-in-bubble-59zb&quot;,&quot;text&quot;:&quot;Watch The Tutorial&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.tella.tv/video/nocode-saas-scrape-anything-anywhere-in-bubble-59zb"><span>Watch The Tutorial</span></a></p><p></p><h3>Why This Matters for Your SaaS</h3><ol><li><p><strong>Rich Data</strong>: Enhance your app with real-world, current data without complex integrations.</p></li><li><p><strong>Flexibility:</strong> Not limited by official API restrictions - scrape what you need.</p></li><li><p><strong>Quick Implementation:</strong> Often faster to set up than official APIs, especially for prototypes or MVPs.</p></li><li><p><strong>Cost-Effective:</strong> Many scrapers charge per result, allowing for better cost control.</p></li></ol><p><strong><br>Next Week: Leveling Up with AI</strong></p><p>We're taking this a step further next week. I'll show you how to:</p><ol><li><p>Run a scraping job</p></li><li><p>Process the results with AI (using Claude)</p></li><li><p>Return the processed data to Bubble</p></li></ol><p>All of this happens on a Cloudflare worker, without writing any code. </p><p>Imagine scraping Instagram posts, categorizing them with AI, and returning the sorted data to your Bubble app - all in one go. </p><p>It's a powerful combo that opens up tons of possibilities - without using hardly any Bubble WUs!</p><h2>Bubblecon Giveaway</h2><p>Don't forget - I&#8217;m giving away a free ticket to Bubblecon! I'll be speaking on the AI panel on day two. If you're keen to attend, <a href="https://forms.gle/TLhkv2mNwSvdDMTB7">hit this link</a> to enter. One lucky subscriber will snag that free ticket.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://forms.gle/TLhkv2mNwSvdDMTB7&quot;,&quot;text&quot;:&quot;Enter the Giveaway&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://forms.gle/TLhkv2mNwSvdDMTB7"><span>Enter the Giveaway</span></a></p><p></p><p><strong>That&#8217;s it for this week!</strong></p><p>Scraping can be a really handy tool have in your pocket for your Bubble apps. It lets you pull in data that might otherwise be out of reach - and it&#8217;s really useful when you&#8217;re trying to get data into your app to analyze with AI.</p><p><a href="https://www.tella.tv/video/nocode-saas-scrape-anything-anywhere-in-bubble-59zb">Give the tutorial a watch,</a> and let me know if you have any questions or cool ideas for future issues - I always love hearing from you.</p><p>Catch you next week for our AI Cloudflare Worker deep-dive!</p><p>Cheers, James</p>]]></content:encoded></item><item><title><![CDATA[The Secret Bubble App Connector Plugin Hack: Revolutionize Your Workflows]]></title><description><![CDATA[Discover how to seamlessly run backend workflows from your frontend, return data effortlessly, and supercharge your Bubble app's performance - all without touching the API connector.]]></description><link>https://www.nocodesaas.io/p/bubble-backend-workflows-app-connector-plugin</link><guid isPermaLink="false">https://www.nocodesaas.io/p/bubble-backend-workflows-app-connector-plugin</guid><dc:creator><![CDATA[James Devonport]]></dc:creator><pubDate>Fri, 23 Aug 2024 13:30:32 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f0e494d9-781e-4f2e-9dac-d8a7a29000cc_1200x678.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there!</p><p>Welcome to this week's NoCode SaaS newsletter, where I take you along on my journey of building a profitable SaaS business without code using <a href="https://bubble.io">Bubble</a>.</p><p>This week, I'm excited to share a game-changing feature that's been hiding in plain sight: a secret hack to run backend workflows from the frontend in Bubble, without the usual hassle of the API connector.</p><p>First off, a huge shoutout to reader <a href="https://substack.com/@coreaspect">Stuart</a> for his fantastic comment on last week's newsletter, which pointed me to an <a href="https://forum.bubble.io/t/how-to-return-data-from-backend-api-workflows-no-manual-api-connector/306357?u=jamesdevonport">eye-opening forum post by George Collier</a>. </p><p>This hidden gem has unlocked a method I've been wishing for in Bubble for ages!</p><p><strong>The Problem:</strong> Running backend workflows from the frontend and returning data has always been a bit of a pain. </p><p>Traditionally, we've had to use the API connector, which comes with its fair share of headaches:</p><ul><li><p>Time-consuming setup</p></li><li><p>Tedious maintenance</p></li><li><p>Nightmare to update when fields change</p></li></ul><p><strong>The Solution:</strong> Enter the <a href="https://manual.bubble.io/core-resources/bubble-made-plugins/bubble-app-connector">App Connector</a> plugin. </p><p>While it's designed to let you run workflows in other Bubble apps, it turns out you can use it within your own app to call your backend workflows. </p><p>This method is not only more efficient but also saves hours of tedious setup time.  <a href="https://manual.bubble.io/help-guides/integrations/bubble-app-connector">The full documentation for the plugin is here if you&#8217;d like to read up on it before the tutorial. </a></p><p><strong>In this newsletter, we'll dive into:</strong></p><ol><li><p>What this secret hack is all about</p></li><li><p>How to set it up (spoiler: it's surprisingly quick!)</p></li><li><p>Building a simple workflow to demonstrate its power</p></li></ol><p>So, whether you're looking to boost security, improve performance, or enhance usability, this method of running backend workflows is a game-changer. </p><div><hr></div><h2>Setting Up the Bubble App Connector Plugin</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.tella.tv/video/nocode-saas-the-secret-hack-to-revolutionize-your-bubble-workflows-1-adnb" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K2tv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F591c33b2-791e-4630-88ce-1679d1391c02_2546x1420.png 424w, https://substackcdn.com/image/fetch/$s_!K2tv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F591c33b2-791e-4630-88ce-1679d1391c02_2546x1420.png 848w, https://substackcdn.com/image/fetch/$s_!K2tv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F591c33b2-791e-4630-88ce-1679d1391c02_2546x1420.png 1272w, https://substackcdn.com/image/fetch/$s_!K2tv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F591c33b2-791e-4630-88ce-1679d1391c02_2546x1420.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K2tv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F591c33b2-791e-4630-88ce-1679d1391c02_2546x1420.png" width="1456" height="812" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/591c33b2-791e-4630-88ce-1679d1391c02_2546x1420.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:812,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4524887,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.tella.tv/video/nocode-saas-the-secret-hack-to-revolutionize-your-bubble-workflows-1-adnb&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!K2tv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F591c33b2-791e-4630-88ce-1679d1391c02_2546x1420.png 424w, https://substackcdn.com/image/fetch/$s_!K2tv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F591c33b2-791e-4630-88ce-1679d1391c02_2546x1420.png 848w, https://substackcdn.com/image/fetch/$s_!K2tv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F591c33b2-791e-4630-88ce-1679d1391c02_2546x1420.png 1272w, https://substackcdn.com/image/fetch/$s_!K2tv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F591c33b2-791e-4630-88ce-1679d1391c02_2546x1420.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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://www.tella.tv/video/nocode-saas-the-secret-hack-to-revolutionize-your-bubble-workflows-1-adnb&quot;,&quot;text&quot;:&quot;Watch the video tutorial&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.tella.tv/video/nocode-saas-the-secret-hack-to-revolutionize-your-bubble-workflows-1-adnb"><span>Watch the video tutorial</span></a></p><p></p><p>Let's walk through how to set up this magical workflow hack step-by-step:</p><ol><li><p><strong>Install the App Connector Plugin</strong></p></li></ol><p>First, head over to your Bubble app's plugin section and search for "App Connector". This plugin is officially made by Bubble, so you can trust its reliability.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1Vfa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0344b5d-9340-4d94-8514-8d2eed417b66_2406x2004.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1Vfa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0344b5d-9340-4d94-8514-8d2eed417b66_2406x2004.png 424w, https://substackcdn.com/image/fetch/$s_!1Vfa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0344b5d-9340-4d94-8514-8d2eed417b66_2406x2004.png 848w, https://substackcdn.com/image/fetch/$s_!1Vfa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0344b5d-9340-4d94-8514-8d2eed417b66_2406x2004.png 1272w, https://substackcdn.com/image/fetch/$s_!1Vfa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0344b5d-9340-4d94-8514-8d2eed417b66_2406x2004.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1Vfa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0344b5d-9340-4d94-8514-8d2eed417b66_2406x2004.png" width="1456" height="1213" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0344b5d-9340-4d94-8514-8d2eed417b66_2406x2004.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1213,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:325587,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1Vfa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0344b5d-9340-4d94-8514-8d2eed417b66_2406x2004.png 424w, https://substackcdn.com/image/fetch/$s_!1Vfa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0344b5d-9340-4d94-8514-8d2eed417b66_2406x2004.png 848w, https://substackcdn.com/image/fetch/$s_!1Vfa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0344b5d-9340-4d94-8514-8d2eed417b66_2406x2004.png 1272w, https://substackcdn.com/image/fetch/$s_!1Vfa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0344b5d-9340-4d94-8514-8d2eed417b66_2406x2004.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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><ol start="2"><li><p><strong>Configure the Plugin</strong></p></li></ol><p>Once installed, it's time for a quick setup:</p><p><em>a) Go to the App Connector settings in your Bubble editor. </em></p><p><em>b) Click on "Connect to app" </em></p><p><em>c) Enter your app&#8217;s domain</em></p><p><em>d) Hit "Connect"</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Noa5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ac8f85-7403-4843-a98b-5a8143df970a_1996x1468.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Noa5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ac8f85-7403-4843-a98b-5a8143df970a_1996x1468.png 424w, https://substackcdn.com/image/fetch/$s_!Noa5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ac8f85-7403-4843-a98b-5a8143df970a_1996x1468.png 848w, https://substackcdn.com/image/fetch/$s_!Noa5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ac8f85-7403-4843-a98b-5a8143df970a_1996x1468.png 1272w, https://substackcdn.com/image/fetch/$s_!Noa5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ac8f85-7403-4843-a98b-5a8143df970a_1996x1468.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Noa5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ac8f85-7403-4843-a98b-5a8143df970a_1996x1468.png" width="1456" height="1071" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99ac8f85-7403-4843-a98b-5a8143df970a_1996x1468.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1071,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:231256,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Noa5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ac8f85-7403-4843-a98b-5a8143df970a_1996x1468.png 424w, https://substackcdn.com/image/fetch/$s_!Noa5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ac8f85-7403-4843-a98b-5a8143df970a_1996x1468.png 848w, https://substackcdn.com/image/fetch/$s_!Noa5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ac8f85-7403-4843-a98b-5a8143df970a_1996x1468.png 1272w, https://substackcdn.com/image/fetch/$s_!Noa5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ac8f85-7403-4843-a98b-5a8143df970a_1996x1468.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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><ol start="3"><li><p><strong>Refresh App Metadata</strong></p></li></ol><p>This step is crucial for syncing your backend workflows:</p><p><em>a) In the App Connector settings, find the "Refresh app metadata" button. </em></p><p><em>b) Click it to pull in all your current backend workflows.</em></p><p></p><ol start="4"><li><p><strong>Select Your Backend Workflows</strong></p></li></ol><p>Now you'll see a list of all your app's backend workflows. Simply check the boxes next to the ones you want to make available through the App Connector.</p><p><strong>Important: You will only see backend workflows which have the &#8216;Expose as public API workflow&#8217; option checked.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D9m8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9058e75-c448-4979-b803-449b232282c5_1080x980.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D9m8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9058e75-c448-4979-b803-449b232282c5_1080x980.png 424w, https://substackcdn.com/image/fetch/$s_!D9m8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9058e75-c448-4979-b803-449b232282c5_1080x980.png 848w, https://substackcdn.com/image/fetch/$s_!D9m8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9058e75-c448-4979-b803-449b232282c5_1080x980.png 1272w, https://substackcdn.com/image/fetch/$s_!D9m8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9058e75-c448-4979-b803-449b232282c5_1080x980.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D9m8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9058e75-c448-4979-b803-449b232282c5_1080x980.png" width="1080" height="980" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9058e75-c448-4979-b803-449b232282c5_1080x980.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:980,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:146848,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!D9m8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9058e75-c448-4979-b803-449b232282c5_1080x980.png 424w, https://substackcdn.com/image/fetch/$s_!D9m8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9058e75-c448-4979-b803-449b232282c5_1080x980.png 848w, https://substackcdn.com/image/fetch/$s_!D9m8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9058e75-c448-4979-b803-449b232282c5_1080x980.png 1272w, https://substackcdn.com/image/fetch/$s_!D9m8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9058e75-c448-4979-b803-449b232282c5_1080x980.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nEhs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf330835-adad-4389-861c-a2b90e91c2ce_1550x1450.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nEhs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf330835-adad-4389-861c-a2b90e91c2ce_1550x1450.png 424w, https://substackcdn.com/image/fetch/$s_!nEhs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf330835-adad-4389-861c-a2b90e91c2ce_1550x1450.png 848w, https://substackcdn.com/image/fetch/$s_!nEhs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf330835-adad-4389-861c-a2b90e91c2ce_1550x1450.png 1272w, https://substackcdn.com/image/fetch/$s_!nEhs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf330835-adad-4389-861c-a2b90e91c2ce_1550x1450.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nEhs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf330835-adad-4389-861c-a2b90e91c2ce_1550x1450.png" width="1456" height="1362" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af330835-adad-4389-861c-a2b90e91c2ce_1550x1450.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1362,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:178910,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nEhs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf330835-adad-4389-861c-a2b90e91c2ce_1550x1450.png 424w, https://substackcdn.com/image/fetch/$s_!nEhs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf330835-adad-4389-861c-a2b90e91c2ce_1550x1450.png 848w, https://substackcdn.com/image/fetch/$s_!nEhs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf330835-adad-4389-861c-a2b90e91c2ce_1550x1450.png 1272w, https://substackcdn.com/image/fetch/$s_!nEhs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf330835-adad-4389-861c-a2b90e91c2ce_1550x1450.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>And that's it for setup! Believe it or not, you're now ready to start calling backend workflows from your frontend with ease.</p><h2>Using the App Connector in Your Workflows</h2><p>Now that we're all set up, let's see how to use this in practice:</p><ol><li><p><strong>Create a New Workflow</strong></p></li></ol><p>In your Bubble editor, create a new workflow or edit an existing one where you want to call a backend workflow.</p><p>Make sure your workflow is returning some data - if you need it.  <a href="https://www.tella.tv/video/nocode-saas-the-secret-hack-to-revolutionize-your-bubble-workflows-1-adnb">You can see me do this in the video tutorial.</a></p><p>Make sure the workflow &#8216;Expose as public API workflow&#8217; option ischecked.</p><ol start="2"><li><p><strong>Add the App Connector Action</strong></p></li></ol><p>In your frontend workflow editor: </p><p>a) Click to add a new action </p><p>b) Search for your app name </p><p>c) You'll see options like "Run [Your App Name] [Workflow Name]"</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qe1J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99a8f077-93a6-4b62-b986-2ba1c854806b_1206x1018.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qe1J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99a8f077-93a6-4b62-b986-2ba1c854806b_1206x1018.png 424w, https://substackcdn.com/image/fetch/$s_!qe1J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99a8f077-93a6-4b62-b986-2ba1c854806b_1206x1018.png 848w, https://substackcdn.com/image/fetch/$s_!qe1J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99a8f077-93a6-4b62-b986-2ba1c854806b_1206x1018.png 1272w, https://substackcdn.com/image/fetch/$s_!qe1J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99a8f077-93a6-4b62-b986-2ba1c854806b_1206x1018.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qe1J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99a8f077-93a6-4b62-b986-2ba1c854806b_1206x1018.png" width="1206" height="1018" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99a8f077-93a6-4b62-b986-2ba1c854806b_1206x1018.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1018,&quot;width&quot;:1206,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61308,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qe1J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99a8f077-93a6-4b62-b986-2ba1c854806b_1206x1018.png 424w, https://substackcdn.com/image/fetch/$s_!qe1J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99a8f077-93a6-4b62-b986-2ba1c854806b_1206x1018.png 848w, https://substackcdn.com/image/fetch/$s_!qe1J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99a8f077-93a6-4b62-b986-2ba1c854806b_1206x1018.png 1272w, https://substackcdn.com/image/fetch/$s_!qe1J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99a8f077-93a6-4b62-b986-2ba1c854806b_1206x1018.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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><ol start="3"><li><p><strong>Configure the Action</strong></p></li></ol><p>When you select the action, Bubble will automatically show you the input fields required for your backend workflow. No more manual setup or guesswork!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X9I4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42346396-ba79-4834-b486-e649a87dfd49_2106x988.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X9I4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42346396-ba79-4834-b486-e649a87dfd49_2106x988.png 424w, https://substackcdn.com/image/fetch/$s_!X9I4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42346396-ba79-4834-b486-e649a87dfd49_2106x988.png 848w, https://substackcdn.com/image/fetch/$s_!X9I4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42346396-ba79-4834-b486-e649a87dfd49_2106x988.png 1272w, https://substackcdn.com/image/fetch/$s_!X9I4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42346396-ba79-4834-b486-e649a87dfd49_2106x988.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X9I4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42346396-ba79-4834-b486-e649a87dfd49_2106x988.png" width="1456" height="683" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42346396-ba79-4834-b486-e649a87dfd49_2106x988.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:683,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:90269,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!X9I4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42346396-ba79-4834-b486-e649a87dfd49_2106x988.png 424w, https://substackcdn.com/image/fetch/$s_!X9I4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42346396-ba79-4834-b486-e649a87dfd49_2106x988.png 848w, https://substackcdn.com/image/fetch/$s_!X9I4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42346396-ba79-4834-b486-e649a87dfd49_2106x988.png 1272w, https://substackcdn.com/image/fetch/$s_!X9I4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42346396-ba79-4834-b486-e649a87dfd49_2106x988.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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><ol start="4"><li><p><strong>Use the Returned Data</strong></p></li></ol><p>The best part? You can now use the data returned from your backend workflow in subsequent steps of your frontend workflow. It's seamless!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XHyC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6e9baf-4386-47c5-814e-1c11ed423df0_1790x1334.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XHyC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6e9baf-4386-47c5-814e-1c11ed423df0_1790x1334.png 424w, https://substackcdn.com/image/fetch/$s_!XHyC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6e9baf-4386-47c5-814e-1c11ed423df0_1790x1334.png 848w, https://substackcdn.com/image/fetch/$s_!XHyC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6e9baf-4386-47c5-814e-1c11ed423df0_1790x1334.png 1272w, https://substackcdn.com/image/fetch/$s_!XHyC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6e9baf-4386-47c5-814e-1c11ed423df0_1790x1334.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XHyC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6e9baf-4386-47c5-814e-1c11ed423df0_1790x1334.png" width="1456" height="1085" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a6e9baf-4386-47c5-814e-1c11ed423df0_1790x1334.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1085,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:184211,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XHyC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6e9baf-4386-47c5-814e-1c11ed423df0_1790x1334.png 424w, https://substackcdn.com/image/fetch/$s_!XHyC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6e9baf-4386-47c5-814e-1c11ed423df0_1790x1334.png 848w, https://substackcdn.com/image/fetch/$s_!XHyC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6e9baf-4386-47c5-814e-1c11ed423df0_1790x1334.png 1272w, https://substackcdn.com/image/fetch/$s_!XHyC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6e9baf-4386-47c5-814e-1c11ed423df0_1790x1334.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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><h3>Why This Matters</h3><p>This method of calling backend workflows offers several advantages:</p><ol><li><p><em>Improved Security: Keep sensitive operations on the backend</em></p></li><li><p><em>Better Performance: Offload complex operations from the frontend</em></p></li><li><p><em>Easier Maintenance: Update your backend workflow, and the frontend call updates automatically</em></p></li><li><p><em>Cleaner Code: No more cluttered API connector setups</em></p></li></ol><h3>Potential Use Cases</h3><p>Now that we've seen how easy it is to set up and use the App Connector for backend workflows, let's explore some real-world scenarios where this can be a game-changer for your Bubble app:</p><h4>Complex Calculations and Data Processing</h4><p><em>Generating detailed reports or analytics</em> </p><p>Example: Let's say you're building a financial app. You could create a backend workflow that calculates complex metrics like ROI, compound interest, or risk assessments based on multiple data points. </p><p>Call this workflow from the frontend when a user requests a report, process the data securely on the backend, and return only the necessary results to display.</p><p></p><h4>Third-Party API Integrations</h4><p><em>Securely interacting with external services </em></p><p>Example: Imagine you're building a weather app. Create a backend workflow that fetches data from a weather API, processes it, and returns only the relevant information. </p><p>This keeps your API keys secure on the backend and allows you to format the data before sending it to the frontend.</p><p></p><h4>User Authentication and Authorization</h4><p><em>Enhanced security for sensitive operations</em> </p><p>Example: For a finance app, you could create a backend workflow that handles authentication and login by generating a magic link.</p><p>The frontend calls this workflow, which then manages the entire authentication process, including sending verification codes and validating responses, before returning a simple "authenticated" or "failed" response, along with the magic link to log the user in if it was succesful.</p><p></p><h4>Batch Operations</h4><p><em>Handling large-scale data operations efficiently </em></p><p>Example: In an e-commerce app, use a backend workflow for bulk product updates. </p><p>The frontend sends a list of products to update, the backend workflow processes each item, perhaps interacting with inventory systems or other databases, and returns a summary of the changes made.</p><p></p><div><hr></div><p>By leveraging backend workflows through the App Connector, you're not just simplifying your development process &#8211; you're opening up a world of possibilities for creating more powerful, efficient, and secure Bubble applications.</p><p>The added bonus is you can also include pretty loading animations <a href="https://www.tella.tv/video/nocode-saas-the-secret-hack-to-revolutionize-your-bubble-workflows-1-adnb">(like the ones in the video tutorial)</a></p><p>Remember, the key is to think about which operations benefit most from being run on the backend, and then design your workflows accordingly. </p><p>With this approach, you'll be able to build more sophisticated apps without sacrificing performance or user experience.<br></p><div><hr></div><p>I hope I&#8217;ve inspired you to try out this method for running your workflows! By bridging the gap between frontend and backend workflows, we're able to create more powerful, efficient, and secure applications with less hassle.</p><h2>Key Takeaways:</h2><ol><li><p><strong>Simplicity:</strong> Setting up the App Connector is surprisingly quick and easy.</p></li><li><p><strong>Flexibility</strong>: You can now run complex operations on the backend and seamlessly use the results in your frontend.</p></li><li><p><strong>Maintenance</strong>: Say goodbye to the headaches of manually updating API calls every time you tweak a backend workflow.</p></li><li><p><strong>Security</strong>: Keep sensitive operations and data on the server-side where they belong.</p></li></ol><p>Start small &#8211; perhaps by converting an existing API connector call to use the App Connector instead. </p><p>As you get more comfortable, you might find yourself rethinking how you structure your app's logic, taking full advantage of what backend workflows can offer.</p><p>I&#8217;ve already started using this technique in my own apps.<br></p><p>I'd love to hear how you end up using this in your own projects! Feel free to reach out and share your experiences, or if you have any questions as you start implementing this approach.</p><div><hr></div><p></p><h2>That&#8217;s it for this week!</h2><p><br>That's it for this week's deep dive into the world of Bubble backend workflows. I hope you found this as game-changing as I did when I first discovered it. </p><p>A huge thanks again to Stuart for the tip and to George Collier for sharing this tip - I really hope more people hear about this as it&#8217;s an amazing hack!</p><p>Happy building, and here's to making our Bubble apps even more powerful!</p><p>James</p><p><em>P.S. If you haven't already, don't forget to subscribe to the NoCode SaaS podcast where myself and <a href="https://nocodesaas.io">Kieran (@nocodelife) </a>discuss all things no-code and SaaS. You can find us on all major podcast platforms.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://open.spotify.com/show/4XyOrMTHs4rjijEXezhZOr&quot;,&quot;text&quot;:&quot;Listen to the podcast&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://open.spotify.com/show/4XyOrMTHs4rjijEXezhZOr"><span>Listen to the podcast</span></a></p><p></p><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.nocodesaas.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading NoCode SaaS! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item></channel></rss>