<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts tagged #ax</title><description>All posts tagged with ax on queen.raae.codes</description><link>https://queen.raae.codes/tag/ax/</link><item><title>📝 ✨ ~ The insight layer your SaaS is missing</title><link>https://queen.raae.codes/2026-03-09-build-the-insight-layer/</link><guid isPermaLink="true">https://queen.raae.codes/2026-03-09-build-the-insight-layer/</guid><description>An agent wants to know which onboarding emails aren&apos;t landing. Right now it downloads everything, reads through it all, figures out the patterns. Every time.…</description><pubDate>Mon, 09 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An agent wants to know which onboarding emails aren&apos;t landing. Right now it downloads everything, reads through it all, figures out the patterns. Every time. For every user, every session. That&apos;s expensive, slow, and wasteful.&lt;/p&gt;
&lt;p&gt;What if the SaaS provider did that work once?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;If we as service providers can provide a layer on top of our content with some vector search and some thematic extraction — we run a little AI on our side that could pull out themes.&amp;quot;
&amp;lt;cite&amp;gt;🎧 Me on &lt;a href=&quot;https://slowandsteadypodcast.com/236?#t=36:16&quot;&gt;Slow &amp;amp; Steady 236@36:16 (February 2026)&lt;/a&gt; ↓&amp;lt;/cite&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;iframe width=&amp;quot;100%&amp;quot; height=&amp;quot;180&amp;quot; frameborder=&amp;quot;no&amp;quot; scrolling=&amp;quot;no&amp;quot; seamless=&amp;quot;&amp;quot; src=&amp;quot;https://share.transistor.fm/e/0ec939c2?#t=36:16&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Pre-process the data. Extract themes, compute scores, build embeddings. The agent asks for themes first, then drills into the specific content it needs. Two steps instead of downloading the whole archive every time.&lt;/p&gt;
&lt;h2&gt;I did this with podcast transcripts&lt;/h2&gt;
&lt;p&gt;I&apos;ve built exactly this for the Slow &amp;amp; Steady podcast. Raw transcripts go in, and out comes a structured knowledge base: ideas extracted, stories tagged, quotable moments indexed by theme. When I ask Jean-Claude (my Claude Code instance) &amp;quot;what should I blog about?&amp;quot;, it doesn&apos;t read through 236 episodes of raw audio transcripts. It searches the processed knowledge base, finds the themes, then pulls the specific quotes it needs to give me ideas.&lt;/p&gt;
&lt;p&gt;(Sidenote: if you want this for your podcast, &lt;a href=&quot;mailto:queen@raae.codes?subject=Podcast%20pipeline&quot;&gt;drop me a line&lt;/a&gt;.)&lt;/p&gt;
&lt;h2&gt;Now imagine this for your SaaS&lt;/h2&gt;
&lt;p&gt;So I pitched Benedikt, my-cohost and the founder of &lt;a href=&quot;https://userlist.com/?via=queen&quot;&gt;Userlist&lt;/a&gt;, on doing something similar for their users&apos; emails. Their MCP server can do CRUD: list users, get a broadcast, create a campaign. But what if it could also answer &amp;quot;which onboarding emails aren&apos;t landing?&amp;quot; or &amp;quot;what should my next broadcast be about?&amp;quot; without the agent doing all the analysis itself? Pre-process the engagement data, and the agent gets the answer in one call.&lt;/p&gt;
&lt;p&gt;At &lt;a href=&quot;https://outseta.com?via=queen&quot;&gt;Outseta&lt;/a&gt; we&apos;re in the same spot. Our MCP MVP mirrors the API. Fine for basic operations. But the questions we actually want agents to answer aren&apos;t CRUD:&lt;/p&gt;
&lt;p&gt;&amp;quot;Which customers are at risk?&amp;quot; — that needs a computed score, not a list endpoint.
&amp;quot;What topics drive conversions?&amp;quot; — that needs pattern analysis across email and billing data.
&amp;quot;Where are users getting stuck?&amp;quot; — that needs theme extraction from support tickets.&lt;/p&gt;
&lt;p&gt;If we pre-process this, build the insights on our side so the agent gets patterns instead of spending tokens discovering them every time, I think we&apos;ll be even more valuable to our customers. And their agents.&lt;/p&gt;
&lt;h2&gt;Agents and humans, same insights&lt;/h2&gt;
&lt;p&gt;But while we are at it, let&apos;s not limit insights to the agent layer. Build the insight layer into your product and expose it through the UI, API, MCP, CLI, whatever comes next.&lt;/p&gt;
&lt;p&gt;The interface changes. The insights stay.&lt;/p&gt;
&lt;p&gt;At Outseta we have billing, email, support, CRM all in one place. A &lt;a href=&quot;/2026/03/07-outseta-a-system-of-record/&quot;&gt;system of record&lt;/a&gt; so to speak. Now the question is: what insights do we build on top of it?&lt;/p&gt;
&lt;p&gt;The smartest API is the one that already did the thinking.&lt;/p&gt;
&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Queen Raae works part-time as Outseta&apos;s Developer Advocate.&lt;/li&gt;&lt;li&gt;Userlist&apos;s co-founder Benedikt Deicke is Queen Raae&apos;s co-host on Slow &amp; Steady podcast.&lt;/li&gt;&lt;/ul&gt;</content:encoded></item><item><title>📝 ✨ ~ No perfect MCP needed, Jean-Claude will figure it out</title><link>https://queen.raae.codes/2026-02-07-just-ship-the-mcp/</link><guid isPermaLink="true">https://queen.raae.codes/2026-02-07-just-ship-the-mcp/</guid><description>In what became AI episode #2 I asked Benedikt if he had shipped the Userlist MCP server. Kind of. OAuth flows are working. But the schemas are hard to…</description><pubDate>Sat, 07 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In what became AI episode #2 I asked Benedikt if he had shipped the &lt;a href=&quot;https://userlist.com/?via=queen&quot;&gt;Userlist&lt;/a&gt; MCP server.&lt;/p&gt;
&lt;p&gt;Kind of. OAuth flows are working. But the schemas are hard to automatically generate, so I&apos;ve been looking into replacing the current serializer library.&lt;/p&gt;
&lt;p&gt;And I was like hold up, hold up!&lt;/p&gt;
&lt;p&gt;Does your API send back proper error messages? You know, if I send a too long title when scheduling a broadcast, does it tell me it&apos;s too long?&lt;/p&gt;
&lt;p&gt;Yeah. It does.&lt;/p&gt;
&lt;p&gt;Then ship it.&lt;/p&gt;
&lt;p&gt;These models are genuinely good at figuring things out now. When our friend Jean-Claude hits an error, he will read the error message and try again. You might be on the hook for more tokens than necessary, but he will get it right eventually. And if you are lucky he remembers how to do it right the next time 🤯&lt;/p&gt;
&lt;p&gt;Turns out it&apos;s not just me saying this. The &lt;a href=&quot;https://modelcontextprotocol.io/specification/2025-11-25/server/tools#error-handling&quot;&gt;MCP spec&lt;/a&gt; itself says tool execution errors &amp;quot;contain actionable feedback that language models can use to self-correct and retry with adjusted parameters.&amp;quot;&lt;/p&gt;
&lt;p&gt;And the folks using MCP servers for marketing right now? They&apos;re not sitting there watching each API call:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;They&apos;re just YOLOing things and sending them off into subagents. So if it takes four tries to get this broadcast up, they&apos;re not even gonna see that. They&apos;re just gonna see it when it&apos;s done.&amp;quot;
&amp;lt;cite&amp;gt;🎧 Me on &lt;a href=&quot;https://slowandsteadypodcast.com/236?#t=33:07&quot;&gt;Slow &amp;amp; Steady 236@33:07 (February 2026)&lt;/a&gt; ↓&amp;lt;/cite&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;iframe width=&amp;quot;100%&amp;quot; height=&amp;quot;180&amp;quot; frameborder=&amp;quot;no&amp;quot; scrolling=&amp;quot;no&amp;quot; seamless=&amp;quot;&amp;quot; src=&amp;quot;https://share.transistor.fm/e/0ec939c2?#t=33:07&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I&apos;m not saying schemas don&apos;t matter. They do! Rich descriptions, proper types, field constraints — all of that makes the experience smoother. But out the gate you&apos;re fine with &amp;quot;title is a string&amp;quot;. Better done, than perfect as they say at Userlist.&lt;/p&gt;
&lt;p&gt;On the topic of MCP Servers, my next step for the &lt;a href=&quot;https://outseta.com/?via=queen&quot;&gt;Outseta&lt;/a&gt; MCP is to publish it as a remote MCP server making it accessible for those not ready to npx @outseta/outseta-mcp. And yeah, I&apos;ve been stuck picking the perfect hosting setup. Same trap, different serializer library.&lt;/p&gt;
&lt;p&gt;What&apos;s the MCP you&apos;ve been not-shipping? 😬&lt;/p&gt;
&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Queen Raae works part-time as Outseta&apos;s Developer Advocate.&lt;/li&gt;&lt;li&gt;Userlist&apos;s co-founder Benedikt Deicke is Queen Raae&apos;s co-host on Slow &amp; Steady podcast.&lt;/li&gt;&lt;/ul&gt;</content:encoded></item><item><title>📝 ✨ ~ It Actually One-Shotted It 🥳</title><link>https://queen.raae.codes/2026-02-06-it-one-shotted-it/</link><guid isPermaLink="true">https://queen.raae.codes/2026-02-06-it-one-shotted-it/</guid><description>I copy-pasted my new Outseta + Next.js article into Cursor and said &quot;Let&apos;s create a simple Next demo using Outseta.&quot; Hit enter. And it one-shotted it.…</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I copy-pasted my new &lt;a href=&quot;https://go.outseta.com/support/kb/articles/B9lEKnW8/integrate-outseta-with-nextjs?via=queen&quot;&gt;Outseta + Next.js article&lt;/a&gt; into Cursor and said &amp;quot;Let&apos;s create a simple Next demo using Outseta.&amp;quot; Hit enter. And it one-shotted it. Completely correct.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./cursor-one-shot.png&quot; alt=&quot;Cursor one-shotting the Outseta + Next.js gated content article&quot;&gt;&lt;/p&gt;
&lt;p&gt;I tried this a while back. Same kind of task — integrate Outseta. And I could not for the life of me get it to work. It kept inventing a react SDK that didn&apos;t exist, even when I gave it the exact script set up I wanted in the header.&lt;/p&gt;
&lt;p&gt;But this time: &lt;strong&gt;Boom.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I looked through the code and the Outseta integration was there, the exact way I would have done it.&lt;/p&gt;
&lt;p&gt;Hear me talk about it on &lt;a href=&quot;https://slowandsteadypodcast.com/235?#t=16:19&quot;&gt;Slow &amp;amp; Steady ep. 235 (at the 16:19 mark)&lt;/a&gt; ↓&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&amp;quot;100%&amp;quot; height=&amp;quot;180&amp;quot; frameborder=&amp;quot;no&amp;quot; scrolling=&amp;quot;no&amp;quot; seamless=&amp;quot;&amp;quot; src=&amp;quot;https://share.transistor.fm/e/29d2248f?#t=16:19&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;We&apos;ve gone from &amp;quot;I think we need to change how Outseta works in order to work with AI&amp;quot; to &amp;quot;AI can actually do it the way we expect it to.&amp;quot;&lt;/p&gt;
&lt;p&gt;That&apos;s a pretty big shift.&lt;/p&gt;
&lt;p&gt;So what changed? I think it&apos;s the model. But it could be that I&apos;ve gotten better at the context stuff as well...&lt;/p&gt;
&lt;p&gt;When I was testing way back when, as in mid last year (2025), I tried all kinds of ways. Concrete step-by-step instructions, detailed specs, minimal specs, full access to &lt;a href=&quot;https://outseta.com/?via=queen&quot;&gt;Outseta&lt;/a&gt;&apos;s knowledge base, you name it. Still garbage. Now I pasted in a single knowledge base article and the AI just got it. But here&apos;s the thing...The article was written with the help of Claude 😬 and I&apos;m much more experienced prompt engineer these days. Perhaps that&apos;s what made the difference. Or a bit of both? Honestly, I&apos;m not sure.&lt;/p&gt;
&lt;p&gt;I might actually test this. Same article, same prompt, different models. See who one-shots it and who tries to download an SDK that doesn&apos;t exist.&lt;/p&gt;
&lt;p&gt;Stay tuned 🤓&lt;/p&gt;
&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Queen Raae works part-time as Outseta&apos;s Developer Advocate.&lt;/li&gt;&lt;/ul&gt;</content:encoded></item></channel></rss>