<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: brainbootdev</title>
    <description>The latest articles on DEV Community by brainbootdev (@brainbootdev).</description>
    <link>https://dev.to/brainbootdev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3883344%2Fec7616df-2897-4165-8884-17df26e154e5.gif</url>
      <title>DEV Community: brainbootdev</title>
      <link>https://dev.to/brainbootdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/brainbootdev"/>
    <language>en</language>
    <item>
      <title>OpenAI sends three bots. The one that precedes a citation is the smallest.</title>
      <dc:creator>brainbootdev</dc:creator>
      <pubDate>Tue, 01 Sep 2026 08:17:14 +0000</pubDate>
      <link>https://dev.to/brainbootdev/openai-sends-three-bots-the-one-that-precedes-a-citation-is-the-smallest-3h11</link>
      <guid>https://dev.to/brainbootdev/openai-sends-three-bots-the-one-that-precedes-a-citation-is-the-smallest-3h11</guid>
      <description>&lt;p&gt;If you go looking for AI traffic in your own server logs, you probably grep for &lt;code&gt;GPTBot&lt;/code&gt; and stop there. That is the wrong number, and it is wrong in a way that flatters you.&lt;/p&gt;

&lt;p&gt;OpenAI runs three separate agents. They mean three different things.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GPTBot&lt;/strong&gt; is the training crawler. It feeds model weights. It will never send you a visitor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OAI-SearchBot&lt;/strong&gt; is the retrieval crawl. This is the fetch that runs &lt;em&gt;before&lt;/em&gt; an answer cites a page. If you care about being cited, this is the one to watch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT-User&lt;/strong&gt; is not a crawler at all. It fires when a real person clicks a citation or asks ChatGPT to open a URL. That is a human who already arrived.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Collapse them into a single "OpenAI" row and you are adding a trainer, a retriever and a reader together, then calling the total your AI traffic.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it looks like across 14 sites
&lt;/h2&gt;

&lt;p&gt;Seven days to 31 August 2026, one Cloudflare account, 14 properties:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Fetches&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPTBot&lt;/td&gt;
&lt;td&gt;training&lt;/td&gt;
&lt;td&gt;11,391&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ChatGPT-User&lt;/td&gt;
&lt;td&gt;a human who clicked&lt;/td&gt;
&lt;td&gt;9,656&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OAI-SearchBot&lt;/td&gt;
&lt;td&gt;retrieval, precedes a citation&lt;/td&gt;
&lt;td&gt;2,930&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Retrieval is &lt;strong&gt;12.2%&lt;/strong&gt; of OpenAI's footprint on the network. Training outweighs retrieval &lt;strong&gt;3.89 to 1&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The bar that matters is the short one. Everything upstream of a citation is happening in that 12.2%, and most dashboards never separate it out.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is not an OpenAI quirk
&lt;/h2&gt;

&lt;p&gt;The same split shows up at every vendor that runs a separate user agent for human-initiated fetches. Same network, same window:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Vendor&lt;/th&gt;
&lt;th&gt;Crawler&lt;/th&gt;
&lt;th&gt;Human&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;GPTBot 11,391&lt;/td&gt;
&lt;td&gt;ChatGPT-User 9,656&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;ClaudeBot 6,881&lt;/td&gt;
&lt;td&gt;Claude-User 1,191&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Perplexity&lt;/td&gt;
&lt;td&gt;PerplexityBot 1,749&lt;/td&gt;
&lt;td&gt;Perplexity-User 204&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three vendors, three crawler-versus-human pairs, and almost nobody separates those either.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to run it on your own logs
&lt;/h2&gt;

&lt;p&gt;If you are on Cloudflare, the data is already there. Query &lt;code&gt;httpRequestsAdaptiveGroups&lt;/code&gt; in the GraphQL analytics API, group by &lt;code&gt;clientRequestHTTPHost&lt;/code&gt; and the user agent, and split the buckets by exact agent string rather than by vendor. The whole finding lives in that one grouping decision.&lt;/p&gt;

&lt;p&gt;If you are on nginx or Apache, the same split is a &lt;code&gt;grep&lt;/code&gt; away. The user agent strings are distinct and stable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The caveat that matters
&lt;/h2&gt;

&lt;p&gt;These are &lt;strong&gt;fetches, not citations&lt;/strong&gt;. A fetch is two rungs below a citation on the ladder and most fetches never become one. They come from a different instrument than citation counts do, they measure a different event, and the two must never be added together.&lt;/p&gt;

&lt;p&gt;Bot identity here is self-reported in the user agent. We are not verifying by IP range, so treat these as what the requester claimed to be.&lt;/p&gt;

&lt;p&gt;One more honest bound: this is one network of 14 sites over seven days. The ratio will differ on yours. The point is not our number, it is that "OpenAI" was never one number to begin with.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>seo</category>
      <category>webdev</category>
      <category>analytics</category>
    </item>
    <item>
      <title>1,001 pages carry 737,197 citations. Fifty of them carry half.</title>
      <dc:creator>brainbootdev</dc:creator>
      <pubDate>Mon, 24 Aug 2026 20:23:46 +0000</pubDate>
      <link>https://dev.to/brainbootdev/1001-pages-carry-737197-citations-fifty-of-them-carry-half-4nbe</link>
      <guid>https://dev.to/brainbootdev/1001-pages-carry-737197-citations-fifty-of-them-carry-half-4nbe</guid>
      <description>&lt;p&gt;Most numbers about AI visibility are network totals, and a network total hides the only thing worth knowing. So we counted ours the other way. Every single page on this fourteen-site network that Bing recorded as cited by Copilot over the ninety days to 22 August, one at a time, each with its own count.&lt;/p&gt;

&lt;p&gt;There are 1,001 of them, and together they carry 737,197 citations.&lt;/p&gt;

&lt;h2&gt;
  
  
  The boring part first, because it belongs in the body
&lt;/h2&gt;

&lt;p&gt;This is the page-level figure. Bing's property-level endpoint reports 768,234 for the same window, a 4.0% gap that is negative on all fourteen properties. Both are correct and they measure different things: pages under Bing's reporting threshold land in the property total but never appear as rows. Page level is the floor, and the floor is the number I am using.&lt;/p&gt;

&lt;p&gt;This is Copilot only, because Bing is the one engine that publishes per-property citation counts at all. Citations are not clicks. And two of the fourteen properties recorded zero citations for nine and sixty-one consecutive days respectively, and are sitting inside that total, which makes the ninety-day window a reservoir rather than a rate.&lt;/p&gt;

&lt;h2&gt;
  
  
  The density is 736 citations per cited page
&lt;/h2&gt;

&lt;p&gt;That average is nearly useless, and watching it fall apart is the actual finding.&lt;/p&gt;

&lt;p&gt;The top page took 21,685 citations. One address, &lt;code&gt;edubracket.com/articles/best-free-online-courses-2026&lt;/code&gt;, cited roughly 241 times a day, every day, for three months. The median cited page took 95. &lt;strong&gt;The top page is 228 times the median&lt;/strong&gt;, inside one network running one architecture.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;slice&lt;/th&gt;
&lt;th&gt;citations&lt;/th&gt;
&lt;th&gt;share of network&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;top 1 page&lt;/td&gt;
&lt;td&gt;21,685&lt;/td&gt;
&lt;td&gt;2.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;top 10 pages&lt;/td&gt;
&lt;td&gt;138,441&lt;/td&gt;
&lt;td&gt;18.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;top 50 pages&lt;/td&gt;
&lt;td&gt;369,643&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;50.1%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;top 100 pages&lt;/td&gt;
&lt;td&gt;498,638&lt;/td&gt;
&lt;td&gt;67.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;top 200 pages&lt;/td&gt;
&lt;td&gt;627,315&lt;/td&gt;
&lt;td&gt;85.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;all 1,001&lt;/td&gt;
&lt;td&gt;737,197&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Half of everything this network is cited for lives on fifty addresses.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the top pages have in common
&lt;/h2&gt;

&lt;p&gt;It is structural rather than magical. They are answer-shaped: roundups and tools pointed at questions people are actually asking, in verticals where somebody is asking constantly. Best free online courses. A formulary checker. Small business grants. Prescription discount cards. They are not our cleverest pages and several of them are not our longest. They are the ones that sit exactly where a question lands.&lt;/p&gt;

&lt;p&gt;I am not going to tell you what that is worth as a percentage lift, because I do not have a before-and-after instrument and anybody quoting you one does not either. What I can tell you is what was measured, on what, over what window, with which endpoint.&lt;/p&gt;

&lt;h2&gt;
  
  
  The open question
&lt;/h2&gt;

&lt;p&gt;If half a network's citations live on fifty addresses, then buying a site is a strange way to buy anything. The page is the asset. The site is just where it happens to live.&lt;/p&gt;

&lt;h2&gt;
  
  
  A note for anyone who wants to be inside one of those pages
&lt;/h2&gt;

&lt;p&gt;We know which fifty. We have the per-URL table, refreshed weekly, with a trajectory on every row.&lt;/p&gt;

&lt;p&gt;Our sites name real products in real roundups, and some of those slots are commercial. If you would like to talk about your product being one of the things named on a page that is already being cited at this density, we are easy to reach, and we will tell you exactly what a given page is doing before you decide anything.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://deepsynthesis.org/lattice" rel="noopener noreferrer"&gt;deepsynthesis.org/lattice&lt;/a&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>ai</category>
      <category>analytics</category>
    </item>
    <item>
      <title>One engine lets us count AI citations. It sends 15% of the readers.</title>
      <dc:creator>brainbootdev</dc:creator>
      <pubDate>Sun, 23 Aug 2026 11:31:28 +0000</pubDate>
      <link>https://dev.to/brainbootdev/one-engine-lets-us-count-ai-citations-it-sends-15-of-the-readers-6lg</link>
      <guid>https://dev.to/brainbootdev/one-engine-lets-us-count-ai-citations-it-sends-15-of-the-readers-6lg</guid>
      <description>&lt;p&gt;Every AI visibility tool on the market prices itself on data from Bing. Not because Bing is where the readers are. Because Bing is the only engine that will tell you it cited you.&lt;/p&gt;

&lt;h2&gt;
  
  
  The instrument
&lt;/h2&gt;

&lt;p&gt;Bing Webmaster Tools publishes per-property AI citation counts. Nobody else does. Across fourteen live properties we run, summed from daily rows over the ninety days to 22 August 2026, that number is &lt;strong&gt;768,234&lt;/strong&gt;. Restricted to the eleven properties with a full window, the like-for-like figure is &lt;strong&gt;735,780&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before going further, the number argues with itself. Bing's own &lt;code&gt;citationstats&lt;/code&gt; endpoint reports 768,234 for that window. Its per-URL &lt;code&gt;pages/stats&lt;/code&gt; endpoint reports 737,197 for the same window, in the same session. The gap is 31,037, about four percent, and it runs in the same direction on all fourteen properties.&lt;/p&gt;

&lt;p&gt;We publish the higher figure because it is what the tool's own chart shows a site owner, and we say the lower one exists rather than burying it. If a vendor quotes you a citation count without telling you which endpoint it came from, that is a four percent question they have not answered.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then we went looking for the readers
&lt;/h2&gt;

&lt;p&gt;Over twenty-eight days, GA4 recorded 2,605 sessions on the network that arrived from an AI assistant.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;engine&lt;/th&gt;
&lt;th&gt;sessions&lt;/th&gt;
&lt;th&gt;share&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ChatGPT&lt;/td&gt;
&lt;td&gt;2,053&lt;/td&gt;
&lt;td&gt;78.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Copilot&lt;/td&gt;
&lt;td&gt;387&lt;/td&gt;
&lt;td&gt;14.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude&lt;/td&gt;
&lt;td&gt;123&lt;/td&gt;
&lt;td&gt;4.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Perplexity&lt;/td&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;td&gt;1.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini, DeepSeek, Grok&lt;/td&gt;
&lt;td&gt;no matching source string&lt;/td&gt;
&lt;td&gt;unmeasurable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Copilot is the Bing surface. So the engine that publishes a citation count for us is the engine responsible for roughly one seventh of the AI readers who actually arrive. The engine responsible for nearly four fifths of them publishes nothing at all about who it cites.&lt;/p&gt;

&lt;h2&gt;
  
  
  The inversion
&lt;/h2&gt;

&lt;p&gt;That is the whole finding, and it inverts what the category is sold on. Every dashboard, every AI-visibility score, every pitch deck with a citation chart in it is describing the small channel with confidence and the large one not at all.&lt;/p&gt;

&lt;p&gt;We built our own measurement on the same foundation. This is a finding about our instrument before it is a finding about anyone else's.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that is genuinely unknown
&lt;/h2&gt;

&lt;p&gt;Gemini, DeepSeek and Grok matched no source string in our data. Zero rows. The correct word for that is &lt;strong&gt;unmeasurable&lt;/strong&gt;, not absent.&lt;/p&gt;

&lt;p&gt;Gemini referrals in particular commonly arrive with no distinguishing referrer and land in organic or direct, which means a real reader gets filed as something else. Reporting those engines as zero would be the easy lie, and it is the specific lie this category is built to tell, because a zero looks like a measurement and an admission of blindness does not.&lt;/p&gt;

&lt;h2&gt;
  
  
  A hypothesis, offered as a hypothesis
&lt;/h2&gt;

&lt;p&gt;Cloudflare per-bot logs show GPTBot, which crawls for training, at about 7,477 requests a day against OAI-SearchBot, which fetches for retrieval, at about 500. Roughly fifteen to one. Yet ChatGPT delivers 78.8% of the AI arrivals.&lt;/p&gt;

&lt;p&gt;If the dominant channel is answering largely out of what it already absorbed rather than what it fetches live, then surviving in the training corpus is the lever on most of the traffic, and retrieval optimisation is the lever on the remainder. We are not claiming that is settled. We are saying the crawl ratio and the referral share point the same way and almost nobody is pricing on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question
&lt;/h2&gt;

&lt;p&gt;If the biggest channel is unmeasurable by construction, what is anyone actually selling: the placement, or the measurement of the one place that happens to report?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Figures: Bing Webmaster AI performance, fourteen properties, 23 May to 22 August 2026, summed from daily rows. GA4 Data API by session source, twenty-eight days to 20 August 2026. GA4 is JavaScript based, so ad blockers and privacy browsers are missed and every session figure here is a floor, not a ceiling.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>ai</category>
      <category>analytics</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What happens when you ask 8 AI models the same buying question every month</title>
      <dc:creator>brainbootdev</dc:creator>
      <pubDate>Sat, 11 Jul 2026 23:54:13 +0000</pubDate>
      <link>https://dev.to/brainbootdev/what-happens-when-you-ask-8-ai-models-the-same-buying-question-every-month-5eh5</link>
      <guid>https://dev.to/brainbootdev/what-happens-when-you-ask-8-ai-models-the-same-buying-question-every-month-5eh5</guid>
      <description>&lt;p&gt;A while back I got annoyed at a specific genre of blog post: "we asked ChatGPT what the best CRM is and here's the answer." One screenshot, one run, treated as if the model holds a stable opinion. It doesn't. So I built a small harness to measure that instead of hand-waving about it.&lt;/p&gt;

&lt;p&gt;The setup is boring on purpose. Eight models. Sixteen B2B software categories (CRM, project management, email marketing, that kind of thing). For each category I ask every model the same plain question: what is the single best tool here. One pick, no hedging allowed. I log the raw response, the parsed pick, the model, the timestamp, and the exact prompt into a JSONL file. Then I do it again next month.&lt;/p&gt;

&lt;p&gt;Two things fell out that I did not fully expect.&lt;/p&gt;

&lt;p&gt;First, across all sixteen categories the eight models never once agreed on the same tool. Not close-but-different. Zero unanimous picks out of sixteen. I assumed there would be at least a couple of categories where everyone converged on the obvious incumbent. Nope.&lt;/p&gt;

&lt;p&gt;Second, and this is the one I keep chewing on: the models do not even agree with themselves. Ask the same model the same question in a fresh session and it swaps its own top pick around 74% of the time. Same model, same prompt, nothing changed but the session. Roughly three-in-four odds it contradicts what it told you yesterday.&lt;/p&gt;

&lt;p&gt;Here is the part I want other people to break. I do not know how much of that self-disagreement is temperature and how much is genuine ranking instability. My instinct is that dropping temperature to 0 will not actually fix it, it will just hide the wobble behind a deterministic-looking facade while the underlying ranking stays mush. But I have not run that ablation cleanly yet, and I would rather someone who does eval work for a living tell me I am wrong.&lt;/p&gt;

&lt;p&gt;The reason I am posting the method and not only the numbers: a "models disagree" claim is worthless if you cannot reproduce it. So everything is open. The per-run JSONL, the prompt text, the model list, all of it, DOI'd under CC-BY so you can cite it or tear it apart: &lt;a href="https://data.deepsynthesis.org/" rel="noopener noreferrer"&gt;https://data.deepsynthesis.org/&lt;/a&gt;. I re-run the whole thing monthly, which means you can watch a specific category drift over time rather than trusting a frozen screenshot from whenever the author happened to hit send.&lt;/p&gt;

&lt;p&gt;A few implementation notes if you want to build your own version:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Force a single pick. If you let the model give you a ranked list it will hedge and you lose the signal. One tool, no runner-ups, is the whole trick.&lt;/li&gt;
&lt;li&gt;Parse defensively. Models love to answer the question and then immediately undercut it with "but it depends on your needs." Strip that.&lt;/li&gt;
&lt;li&gt;Store the raw response next to the parsed pick. You will second-guess your parser and you will want the original text.&lt;/li&gt;
&lt;li&gt;Timestamp everything and never overwrite a run. The monthly diff is the actual product.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The uncomfortable takeaway for anyone doing AI-search or GEO work: if a model's pick is this unstable, "we rank first when you ask ChatGPT" is a coin that lands differently every flip. Optimizing for a single snapshot is optimizing for noise. Optimizing to show up across many runs and many models is the only thing that survives.&lt;/p&gt;

&lt;p&gt;If you poke at the data and find a category where the parser is wrong, or a model I should add, tell me. That is the point of putting it out in the open.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>datascience</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Why I stopped writing prompts and started compiling them</title>
      <dc:creator>brainbootdev</dc:creator>
      <pubDate>Thu, 16 Apr 2026 23:49:11 +0000</pubDate>
      <link>https://dev.to/brainbootdev/why-i-stopped-writing-prompts-and-started-compiling-them-53jn</link>
      <guid>https://dev.to/brainbootdev/why-i-stopped-writing-prompts-and-started-compiling-them-53jn</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhgbrs60kx7ovaq96xt5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhgbrs60kx7ovaq96xt5.png" alt=" " width="638" height="788"&gt;&lt;/a&gt;&lt;br&gt;
I've been building AI-powered tools for a while and I kept hitting the same wall. Not the models — the models are fine. The problem is how we use them.&lt;/p&gt;

&lt;p&gt;Every interaction with an AI starts from zero. You open a new conversation, paste your system prompt, explain your context, get partway through something useful, watch the model drift off course, hit the context limit, and then start over. I tracked my own usage for a month and roughly 40% of my tokens were spent re-establishing context that&lt;br&gt;
   the model already knew five minutes ago.&lt;/p&gt;

&lt;p&gt;That's not a model problem. That's an architecture problem. We're treating prompts like disposable messages when they should be treated like software.&lt;/p&gt;

&lt;p&gt;What "prompts as software" actually means&lt;/p&gt;

&lt;p&gt;Think about what makes code reliable. Types enforce structure. Tests verify behavior. Modules compose into larger systems. Error handling catches failures before they propagate.&lt;/p&gt;

&lt;p&gt;Now think about what prompts have. None of that. A prompt is a string you paste into a text box and hope works. There's no type checking on what comes back. There's no test suite. There's no way to compose two prompts together with a contract between them. If the output is garbage you just try again and burn more tokens.&lt;/p&gt;

&lt;p&gt;I built Brainboot to close that gap. The core primitive is a "brain" — a prompt wrapped in actual engineering.&lt;/p&gt;

&lt;p&gt;The anatomy of a brain&lt;/p&gt;

&lt;p&gt;A brain declares three things beyond the prompt itself.&lt;/p&gt;

&lt;p&gt;Typed inputs and outputs. The brain specifies what shape of data it accepts and what shape it returns. The runtime validates both directions. If you ask for JSON and the model returns markdown, the runtime catches it and retries automatically. You never burn tokens processing malformed output downstream.&lt;/p&gt;

&lt;p&gt;Invariants. These are rules enforced on every execution at the wrapper layer. Not instructions in the system prompt that the model might follow. Actual guardrails that the runtime checks against the output before it's returned. Things like "never include placeholder text" or "all URLs must be valid" or "output must be valid TypeScript." The model cannot drift past these.&lt;/p&gt;

&lt;p&gt;Test suites. Every brain has tests that run across multiple models — currently GPT-5, Claude Opus, and Gemini Ultra. Pass rates are public. You know whether a brain works reliably before you use it in production. You don't have to re-test it every time.&lt;/p&gt;

&lt;p&gt;Composition is where it gets interesting&lt;/p&gt;

&lt;p&gt;Small brains chain into pipelines. A research brain feeds an outline brain feeds a drafting brain feeds a quality gate. Each brain in the chain gets exactly the context it needs — not your entire conversation history. The output of brain A is type-checked before it becomes the input of brain B.&lt;/p&gt;

&lt;p&gt;This solves the token problem at a fundamental level. A monolithic conversation carrying 50K tokens of history to maintain context gets replaced by a chain of focused brains each using maybe 2-5K tokens of precisely scoped context. Same outcome, fraction of the token cost, and no drift because invariants catch it at every step.&lt;/p&gt;

&lt;p&gt;It also makes failures cheap. If brain 4 in a 6-brain pipeline fails, you retry brain 4 with its specific input. You don't re-run brains 1 through 3. In a monolithic conversation, any failure means starting the whole thing over.&lt;/p&gt;

&lt;p&gt;The compiler&lt;/p&gt;

&lt;p&gt;The most interesting feature is the compiler. You describe what you want in plain English — something like "weekly content pipeline for B2B SaaS" — and it runs a four-stage process.&lt;/p&gt;

&lt;p&gt;Stage 1, Decompose — breaks your intent into atomic capabilities. "This needs keyword research, topic clustering, outline generation, drafting, SEO optimization, and quality review."&lt;/p&gt;

&lt;p&gt;Stage 2, Map — searches the existing brain catalog for brains that match each capability. "Keyword Research Brain covers capability 1. Cluster Architecture Brain covers capability 2."&lt;/p&gt;

&lt;p&gt;Stage 3, Synthesize — wires the matched brains into a composition graph with typed connections between them. The output schema of each brain is validated against the input schema of the next.&lt;/p&gt;

&lt;p&gt;Stage 4, Audit — runs the complete composition through a quality check and grades it A through F with a deploy recommendation.&lt;/p&gt;

&lt;p&gt;The output isn't a prompt. It's a deployable system. Describe once, compile once, run forever.&lt;/p&gt;

&lt;p&gt;What this looks like in production&lt;/p&gt;

&lt;p&gt;I have two circuits running in production right now.&lt;/p&gt;

&lt;p&gt;Content Empire runs 6 brains in a pipeline — Keyword Research, Cluster Architecture, Outline, Draft, On-Page SEO, Quality Gate. It produces 150 SEO-optimized pages per quarter, 13 weekly newsletters, 12 authority essays, 3 full SEO audits, and 500+ platform adaptations. It runs on a schedule via Vercel Cron with zero manual intervention. $299/month versus roughly $25K/month for the equivalent human team.&lt;/p&gt;

&lt;p&gt;Sales Engine runs 5 blueprints handling prospecting, research, personalized outreach, reply handling, and pipeline intelligence. 500 qualified prospects per month with individualized research and multi-step sequences. $399/month versus roughly $6,600/month for an SDR.&lt;/p&gt;

&lt;p&gt;To validate the architecture on something with objectively verifiable results I also pointed a circuit at MLB predictions — a 6-layer probability engine predicting scoreless innings. It's been running autonomously since opening day. 150+ verified picks at 89% accuracy. Completely unrelated to the core business but it proved that composed brains with invariants work on real-world problems with measurable outcomes. Full public track record at&lt;br&gt;
  brainboot.dev/labs/nrfi/results.&lt;/p&gt;

&lt;p&gt;The stack&lt;/p&gt;

&lt;p&gt;Next.js 16 with App Router and React 19. Supabase for auth and Postgres. Vercel for deployment and cron jobs. Stripe for billing. Resend for transactional email. Vercel AI SDK v6 with AI Gateway for multi-model routing.&lt;/p&gt;

&lt;p&gt;The brain runtime handles type validation, invariant enforcement, retry logic, and telemetry. Every execution produces a cognitive trace showing which models, rules, and brains contributed to which decisions.&lt;/p&gt;

&lt;p&gt;Total infrastructure cost is roughly $50/month. Solo built, no funding.&lt;/p&gt;

&lt;p&gt;Try it&lt;/p&gt;

&lt;p&gt;The platform is live at &lt;a href="https://brainboot.dev" rel="noopener noreferrer"&gt;https://brainboot.dev&lt;/a&gt;. Free tier has 200+ curated prompts with no account required. The compiler, brains, and circuits are where it gets interesting.&lt;/p&gt;

&lt;p&gt;The manifesto explaining the full "prompts are software" philosophy is at &lt;a href="https://brainboot.dev/manifesto" rel="noopener noreferrer"&gt;https://brainboot.dev/manifesto&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I'm interested in how other people are approaching the reliability and token efficiency problem. If you've built&lt;br&gt;
  something similar or taken a different approach I'd genuinely like to hear about it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>saas</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
