<?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: Ezra</title>
    <description>The latest articles on DEV Community by Ezra (@ezradev).</description>
    <link>https://dev.to/ezradev</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%2F4038103%2F12e6a35e-f1cf-492c-bb04-d1a99038a567.png</url>
      <title>DEV Community: Ezra</title>
      <link>https://dev.to/ezradev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ezradev"/>
    <language>en</language>
    <item>
      <title>Rebuilding Support Agents on the Serverless Edge</title>
      <dc:creator>Ezra</dc:creator>
      <pubDate>Mon, 20 Jul 2026 12:06:07 +0000</pubDate>
      <link>https://dev.to/ezradev/rebuilding-support-agents-on-the-serverless-edge-34bg</link>
      <guid>https://dev.to/ezradev/rebuilding-support-agents-on-the-serverless-edge-34bg</guid>
      <description>&lt;p&gt;A few months ago, we were running a local customer support tool under a .nl domain. It did what most modern "AI chatbots" do: it ingested some docs, sat on a page, and answered basic FAQs.&lt;/p&gt;

&lt;p&gt;But we had to be honest with ourselves: standard chatbots are a weak abstraction. If a customer texts support, they don't want a paraphrased FAQ link. They want their order cancelled, their refund initiated, or their shipping label generated. &lt;/p&gt;

&lt;p&gt;"Chatbot is the door, but the Agent is the room." &lt;/p&gt;

&lt;p&gt;When we decided to pivot to the international market with &lt;a href="https://nousu.chat/" rel="noopener noreferrer"&gt;Nousu.chat&lt;/a&gt;, we didn't just translate our UI. We completely ripped out our architecture and rebuilt the entire runtime for raw performance on the serverless edge. &lt;/p&gt;

&lt;p&gt;Here is how we did it, why we rejected the traditional database tax, and how serverless edge infrastructure allowed us to kill the "per-ticket" pricing model&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Raw Block Architecture: Ditching the Fixed-Cost Rot&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most AI platforms start by stacking heavy container-based runtimes, expensive vector databases, and massive relational database wrappers. This is fine for venture-backed startup theater, but it creates massive fixed-cost rot and high latency&lt;/p&gt;

&lt;p&gt;We built our engine on a "Raw Block" philosophy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Runtime: We migrated the entire agent execution layer to Cloudflare Workers. Cold starts are dead (&amp;lt;5ms execution), and we can run our agent logic globally right next to the user&lt;/li&gt;
&lt;li&gt;State &amp;amp; Caching: Instead of querying a heavy database for every turn, we utilize Upstash Redis and Queues to manage session states and handle high-throughput event buffering&lt;/li&gt;
&lt;li&gt;The Database: When relational persistence is actually required, we route queries to PostgreSQL on Railway. Optimized SQL queries over lightweight pools.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By moving everything to serverless edge infrastructure, our average round-trip API latency dropped to under 50ms (excluding the LLM generation itself)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Real Resolutions vs. FAQ Spam (The API Hook Runtime)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If your "agent" can't write to your database or execute external APIs securely, it's not an agent; it's a glorified search bar&lt;/p&gt;

&lt;p&gt;To make &lt;a href="https://nousu.chat/" rel="noopener noreferrer"&gt;Nousu.chat&lt;/a&gt; a true operator, we built an ultra-fast tool-calling router. When a WooCommerce or custom merchant API hook is triggered, the Worker doesn't wait for a heavy backend server to spin up. &lt;/p&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The edge worker intercepts the user request&lt;/li&gt;
&lt;li&gt;It evaluates intent and maps it to a strict TypeScript-defined tool schema&lt;/li&gt;
&lt;li&gt;The worker directly executes the secure outbound fetch request to the merchant's API (e.g., to process a refund)&lt;/li&gt;
&lt;li&gt;&lt;p&gt;State is updated instantly, and the user receives a confirmation of the action, not just text&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Killing the "Ticket Tax"&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Traditional enterprise support tools (like Intercom or Gorgias) levy a 'tax' on every single resolved ticket. When you scale, your bill scales exponentially, even though database writes and serverle&lt;br&gt;
ss compute costs are practically static at scale&lt;/p&gt;

&lt;p&gt;Because our serverless edge stack runs so incredibly cheap, we don't have to charge a "ticket tax." Operating Nousu at high-scale costs us fractions of a cent per session, which allowed us to structure our business around flat-fee pricing.&lt;/p&gt;

&lt;p&gt;What We Learned Going Global&lt;/p&gt;

&lt;p&gt;Pivoting from a local market to a global platform required strict internationalization and a zero-tolerance policy for latency. If you're building in the AI space today, our advice is simple:&lt;/p&gt;

&lt;p&gt;Stop wrapping slow abstractions. Ditch the bloated libraries, move your runtime to the edge, and focus on building systems that actually do things instead of just talking&lt;/p&gt;

&lt;p&gt;Check out how we are running our edge machine at &lt;a href="https://nousu.chat/" rel="noopener noreferrer"&gt;Nousu.chat&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>customerservice</category>
      <category>shopify</category>
      <category>woocommerce</category>
    </item>
  </channel>
</rss>
