<?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: Lawrence Hutchins</title>
    <description>The latest articles on DEV Community by Lawrence Hutchins (@lawrencehutchins).</description>
    <link>https://dev.to/lawrencehutchins</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4167445%2Fc755185d-f5e3-4958-bbe9-97bb429700e0.png</url>
      <title>DEV Community: Lawrence Hutchins</title>
      <link>https://dev.to/lawrencehutchins</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lawrencehutchins"/>
    <language>en</language>
    <item>
      <title>Why I keep AI facts outside the chat</title>
      <dc:creator>Lawrence Hutchins</dc:creator>
      <pubDate>Tue, 06 Oct 2026 21:28:52 +0000</pubDate>
      <link>https://dev.to/lawrencehutchins/why-i-keep-ai-facts-outside-the-chat-1d4g</link>
      <guid>https://dev.to/lawrencehutchins/why-i-keep-ai-facts-outside-the-chat-1d4g</guid>
      <description>&lt;p&gt;I'm Lawrence, and I build small MCP plugins at &lt;a href="https://ouroborosapps.com" rel="noopener noreferrer"&gt;Ouroboros Apps&lt;/a&gt;. I'm a solo founder, so this is less a launch post and more me explaining the one idea all of my products are built around.&lt;/p&gt;

&lt;p&gt;The idea is pretty simple. The facts your AI assistant relies on shouldn't live in the chat.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem I kept running into
&lt;/h2&gt;

&lt;p&gt;AI assistants are great right up until they make something up or slowly drift.&lt;/p&gt;

&lt;p&gt;If you write fiction with one, you've probably seen it. A character's history quietly changes in chapter 12. Nobody asked for that. The model just lost track of what was decided back in chapter 3 and filled the gap with something that sounded right.&lt;/p&gt;

&lt;p&gt;It isn't only a writing thing. A support reply promises a refund the policy doesn't allow. A contractor's assistant cheerfully agrees to work that was never in scope. Each of those is a small mistake in the moment, and then somebody has to clean it up later.&lt;/p&gt;

&lt;p&gt;The common thread is that the assistant is working from chat memory. Chat memory is fuzzy. It gets summarized, truncated, or just ignored when the conversation gets long. Pasting your rules into the prompt again every session helps for a while, but it's tedious and it still drifts.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built instead
&lt;/h2&gt;

&lt;p&gt;Each of my products is a small MCP (Model Context Protocol) server. It holds the facts you actually saved, and the assistant reads them before it answers instead of guessing from whatever is left in the conversation.&lt;/p&gt;

&lt;p&gt;A few details for the technical folks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They're hosted as Streamable HTTP MCP endpoints, so there's nothing to run locally.&lt;/li&gt;
&lt;li&gt;You connect once with OAuth and you're done.&lt;/li&gt;
&lt;li&gt;They work in ChatGPT, Claude, Grok, Cursor, and other MCP clients.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The facts sit in one place you control. The assistant becomes the thing that reads them and drafts from them, not the thing that remembers them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's live and what's coming
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://continuitywriter.com" rel="noopener noreferrer"&gt;Continuity&lt;/a&gt; is live now. It's a story bible for fiction writers. You save characters, relationships, world rules, timelines, and approved scenes, and the assistant checks new writing against that canon. So when chapter 12 tries to rewrite somebody's backstory, there's an actual record to check it against.&lt;/p&gt;

&lt;p&gt;The rest of the lineup is coming to ChatGPT on Oct 20, 2026. They all follow the same pattern, just pointed at different kinds of facts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Desk&lt;/strong&gt; for support answers that stay inside your refund limits&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claim&lt;/strong&gt; for approved brand claims, offers, and banned phrases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope&lt;/strong&gt; for project scope, rates, deadlines, and change orders&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Invoice&lt;/strong&gt; for approved invoices, rates, due dates, and late terms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deposit&lt;/strong&gt; for the approved deposit and payment schedule&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Milestone&lt;/strong&gt; for approved milestones and acceptance criteria&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each one starts with a 14-day trial, then moves to Pro.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hard part
&lt;/h2&gt;

&lt;p&gt;I posted about this on Indie Hackers and got a piece of feedback that shaped how I test these. Paraphrasing: saved rules only help if the assistant actually opens the plugin.&lt;/p&gt;

&lt;p&gt;That's the real weak spot. You can have a perfect refund policy saved, and if the model decides it already knows the answer and skips the lookup, you're back to guessing. Storing the facts was the easy part. Making sure they get used, and that the assistant behaves sensibly when they're missing or wrong, is the actual work.&lt;/p&gt;

&lt;p&gt;So my test set now covers a few cases I used to ignore:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;An expired policy.&lt;/strong&gt; The saved rule exists but is out of date.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A missing policy.&lt;/strong&gt; There's nothing saved for the question being asked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A customer telling the assistant to ignore the rules.&lt;/strong&gt; Classic "just do it anyway" pressure.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In all three, the right behavior is the same. The assistant should pause and hand a draft to a human instead of promising the customer anything. No confident refund, no made up exception, no agreeing to extra work because someone asked nicely. A boring "let me check with the team" is a much better outcome than a confident wrong answer.&lt;/p&gt;

&lt;p&gt;Getting that to happen reliably across different clients is the part I keep working on. Different hosts decide when to call tools in different ways, so the tool descriptions matter, and the tests check that the lookup really happens before the answer, not after.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why keep it outside the chat at all
&lt;/h2&gt;

&lt;p&gt;The short version is that I want the source of truth to be something I can open, edit, and point to. A chat log isn't that. A saved record that the assistant has to read is.&lt;/p&gt;

&lt;p&gt;It also means the model can change, the client can change, and the facts stay put. I can switch from ChatGPT to Claude to Cursor on the same project and the canon, the refund limits, or the scope doesn't reset.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tell me where yours goes off script
&lt;/h2&gt;

&lt;p&gt;If you use an AI assistant for writing, support, or client work, I'd like to hear where it goes off script for you. The weird cases are the ones I most want to add to the test set. Drop a comment here, or find me through &lt;a href="https://ouroborosapps.com" rel="noopener noreferrer"&gt;Ouroboros Apps&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>chatgpt</category>
      <category>indiehackers</category>
    </item>
  </channel>
</rss>
