<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Engineering on Code is cheap, let&#39;s talk</title>
    <link>https://blog.ferstar.org/en/tags/engineering/</link>
    <description>Code is cheap, let&#39;s talk</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>© 2026 ferstar · [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en)</copyright>
    <lastBuildDate>Thu, 03 Sep 2026 15:10:00 +0800</lastBuildDate>
    <ttl>60</ttl><atom:link href="https://blog.ferstar.org/en/tags/engineering/index.xml" rel="self" type="application/rss+xml" /><image>
      <url>https://blog.ferstar.org/site-logo.png</url>
      <title>Code is cheap, let&#39;s talk</title>
      <link>https://blog.ferstar.org/</link>
    </image>
    
    <item>
      <title>Notes on a Batch of Demo Logs: Why &#39;Wrapping Everything in an Agent to Make a SaaS&#39; Is an Absurd Illusion</title>
      <link>https://blog.ferstar.org/en/posts/the-illusion-of-agent-saas/</link>
      <pubDate>Thu, 03 Sep 2026 15:10:00 +0800</pubDate>
      
      <guid isPermaLink="true">https://blog.ferstar.org/en/posts/the-illusion-of-agent-saas/</guid>
      <description>Many believe wrapping business workflows inside an Agent makes building SaaS easy; inspecting live demo logs reveals why using probabilistic models as deterministic enterprise backbones is a fragile illusion.</description><content:encoded><![CDATA[<blockquote><p>I am not a native English speaker; this article was translated by AI.</p>
</blockquote><p>Yesterday, I spent time reviewing a batch of demo session logs from an internal development build of a desktop Agent. From PowerPoint deck generation to cross-department action checklists, down to complex cash flow forecasts and sales contract compliance audits, the demo lineup looked impeccably structured.</p>
<p>At a surface glance, every demo delivered striking end results: pinpointing contractual risks, calculating liquidity turning points, and autonomously running Python scripts to render sleek, tech-blue inline SVGs and standalone HTML files that open cleanly in any offline browser.</p>
<p>Yet peeling back the underlying interaction traces, token throughput, and execution timelines left me with an overwhelming sense of cognitive dissonance.</p>
<p>Across the industry today—whether among clients, business executives, or product managers—a dangerous and lazy assumption is spreading: <strong>“In the past, building a CRM, ERP, or approval workflow required dozens of database tables and six months of development. Now, just wrap an LLM in an Agent shell, attach a few tools and scripts, and ‘solve any business problem with a single prompt’—presto, you have a modern AI-native SaaS!”</strong></p>
<p>Believing that cramming every conceivable task into an Agent shell makes building enterprise SaaS effortless is not just unrealistic; inspecting the real operational logs and the engineering mess uncovered afterward makes it plain that this is an absurd illusion running counter to basic software engineering reality.</p>
<hr>

<h2 class="relative group">1. The Engineering Clutter Behind Flawless Demos
    <div id="1-the-engineering-clutter-behind-flawless-demos" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-the-engineering-clutter-behind-flawless-demos" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Looking into yesterday’s nine demo sessions, every scenario that produced an “impressive result” was skating right along brittle engineering boundaries:</p>

<h3 class="relative group">1. Extremely Fragile Determinism: Sustained Only by Babysitting Prompts
    <div id="1-extremely-fragile-determinism-sustained-only-by-babysitting-prompts" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-extremely-fragile-determinism-sustained-only-by-babysitting-prompts" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>In hardcore business demos like “Corporate Cash Flow Tracking” or “Cross-Department Action Checklist”, the user’s initial prompt was never a concise natural instruction. Instead, it was a 300-to-500-word defensive micro-contract packed with strict boundary guardrails:</p>
<blockquote><p>“Distinguish confirmed collections from estimated collections… Do not fabricate receipt dates or approval decisions… Do not overwrite original files… Only assign owners and due dates when explicitly committed in the source files, otherwise mark as ‘Pending Confirmation’…”</p>
</blockquote><p>This is not intuitive natural language interaction; this is a software engineer manually hand-coding missing defensive assertions into a prompt.
When faced with an ordinary user prompt (such as a casual line from the logs: <em>“I need to optimize your work logic first”</em>), the Agent was instantly paralyzed, firing off multiple clarification popups begging for context.</p>
<p>Without that round-the-clock babysitting through handcrafted prompts, an Agent’s business reliability plummets immediately.</p>

<h3 class="relative group">2. The Clash Between Local Privileges and Environmental Isolation
    <div id="2-the-clash-between-local-privileges-and-environmental-isolation" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-the-clash-between-local-privileges-and-environmental-isolation" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Why did those demos appear so capable? Because they ran inside a privileged local desktop environment:</p>
<ul>
<li>Reading and writing user <code>.xlsx</code>, <code>.docx</code>, and <code>.pptx</code> files on the local filesystem;</li>
<li>Spawning a local Python runtime to process numbers and generate self-contained dashboards on the fly;</li>
<li>Previewing artifacts directly on the host machine.</li>
</ul>
<p>Yet in engineering reality, this setup is exceedingly fragile: environmental pollution on the host (such as user-defined Python variables) can instantly cripple built-in Skill execution; the moment an ad-hoc test attempts to write outside the workspace, the sandbox blocks the operation with errors; not to mention the frontend cheerfully marking a scheduled job as “Created Successfully” without verifying whether the external messaging channel actually connects.</p>
<p>Real-world business data lives on local disks and internal networks. Trying to lift this into a multi-tenant cloud SaaS immediately runs into hard brick walls around network isolation, environment compatibility, file permissions, privacy compliance, and cross-system authentication.</p>

<h3 class="relative group">3. “Vanity Engineering” vs. Core Business Value
    <div id="3-vanity-engineering-vs-core-business-value" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#3-vanity-engineering-vs-core-business-value" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Commands like <em>“Switch to a tech-blue color scheme”</em>, <em>“Self-contained inline SVG without external dependencies”</em>, and <em>“Change to a tech-blue background view”</em> appeared repeatedly throughout the logs.</p>
<p>Simply to make the visual presentation pop during demos, the Agent had to re-read original files, generate Python code for style replacement, re-verify string integrity, and write out new files.
A single re-theming run pushed context to <strong>138,000 tokens</strong> (137k+ input tokens for a few hundred output tokens). Thanks to our harness engineering and robust prompt caching, cache hit rates reliably reach 99%+, which keeps actual inference latency and token costs well under control. But the fundamental contradiction remains: the underlying business logic didn’t change at all, yet system bandwidth and runtime machinery were heavily consumed just making things look polished.</p>
<hr>

<h2 class="relative group">2. Why “Stuffing Everything into an Agent Makes a SaaS” Is a Castle in the Air
    <div id="2-why-stuffing-everything-into-an-agent-makes-a-saas-is-a-castle-in-the-air" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-why-stuffing-everything-into-an-agent-makes-a-saas-is-a-castle-in-the-air" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Traditional software architecture and the so-called “pure Agent architecture” represent fundamentally conflicting paradigms:</p>
<pre class="not-prose mermaid">
flowchart TD
    subgraph SaaS["Traditional SaaS (Deterministic Core)"]
        DB[(Relational DB / ACID)] --> Core[State Machine & Rule Engine]
        Core --> Auth[RBAC & Audit Trails]
        Auth --> UI[Standardized UI]
    end

    subgraph AgentTrap["Fancied Agent SaaS (Probabilistic Black Box)"]
        Prompt[Vague Prompt] --> LLM{LLM Inference}
        LLM -.->|Probabilistic Judgment| Script[Ad-hoc Python / Tool Scripts]
        Script -.->|Drifting Output| Out[Unpredictable Drafts]
    end
</pre>


<h3 class="relative group">1. Dumping Deterministic Business Rules onto an LLM to Guess Is Pure Laziness
    <div id="1-dumping-deterministic-business-rules-onto-an-llm-to-guess-is-pure-laziness" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-dumping-deterministic-business-rules-onto-an-llm-to-guess-is-pure-laziness" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>The hardest and most tedious part of building enterprise software has always been nailing down every business rule and state transition:</p>
<ul>
<li>Transferring money from account A to account B requires double-entry bookkeeping, transactional integrity checks, and audit logging;</li>
<li>Approval matrices bind rigidly to organizational hierarchies; thresholds require explicit sign-off from designated roles.</li>
</ul>
<p>Those trying to shortcut their way to an “Agent SaaS” are simply trying to skip the hard work, hoping the LLM will just guess what to do next based on conversation context.
However, LLMs are fundamentally <strong>probabilistic engines</strong>. A system that requires hundreds of words in a prompt just to prevent it from hallucinating whether money will arrive next Wednesday cannot provide basic ACID guarantees or data consistency. Building on quicksand guarantees structural failure regardless of how many layers are piled on top.</p>

<h3 class="relative group">2. Confusing an “Operator” with the “System Core”
    <div id="2-confusing-an-operator-with-the-system-core" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-confusing-an-operator-with-the-system-core" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>An Agent’s true strength is acting as an <strong>adaptable operator</strong>:</p>
<ul>
<li>Extracting signal from messy emails and unstructured spreadsheets;</li>
<li>Merging intermediate data across two mismatched schemas into a coherent draft;</li>
<li>Adjusting a report’s presentation theme upon request.</li>
</ul>
<p>An operator is not the operating system. An executive assistant who types fast and files folders efficiently does not replace an enterprise ERP platform.
Claiming that a chat box driving a handful of CLI tools constitutes a full SaaS without underlying database schemas, permission engines, or immutable audit logs is mistaking the surface skin for the skeleton.</p>

<h3 class="relative group">3. The Structural Contradiction in Unit Economics and Liability
    <div id="3-the-structural-contradiction-in-unit-economics-and-liability" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#3-the-structural-contradiction-in-unit-economics-and-liability" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Teams attempting to package Agents as SaaS face an unavoidable economic dilemma:</p>
<table>
  <thead>
      <tr>
          <th style="text-align: left">Dimension</th>
          <th style="text-align: left">Traditional SaaS</th>
          <th style="text-align: left">Fancied Agent SaaS</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: left"><strong>Marginal Cost</strong></td>
          <td style="text-align: left">Near zero (fixed infrastructure, milliseconds per request)</td>
          <td style="text-align: left">Extremely high (tens to hundreds of thousands of tokens per run)</td>
      </tr>
      <tr>
          <td style="text-align: left"><strong>Billing & Predictability</strong></td>
          <td style="text-align: left">Predictable seat-based or annual subscription</td>
          <td style="text-align: left">Wildly fluctuating compute sink; users fear token billing, vendors bleed on flat fees</td>
      </tr>
      <tr>
          <td style="text-align: left"><strong>Liability Boundary</strong></td>
          <td style="text-align: left">Deterministic execution; platform guarantees audit trails and state changes</td>
          <td style="text-align: left">“For reference only; does not assume legal liability; please verify manually”</td>
      </tr>
      <tr>
          <td style="text-align: left"><strong>Final Deliverable</strong></td>
          <td style="text-align: left">Actual business state mutation (ledger updated, contract executed, order dispatched)</td>
          <td style="text-align: left">Analysis, recommendations, drafts, or preview files (Draft / Preview)</td>
      </tr>
  </tbody>
</table>
<p>A glance at real-world Agent constraint policies reveals an uncompromising disclaimer at the bottom:</p>
<blockquote><p><em>“Unless explicit authorization and confirmation exist, all actions must halt at draft/preview: no executing payments, no formal write-offs, no signing contracts on behalf of the company…”</em></p>
</blockquote><p>When an application cannot close the loop on risk, cannot be granted autonomous decision-making power, and requires line-by-line human verification for every output, it cannot realistically function as an autonomous, unattended enterprise SaaS.</p>
<hr>

<h2 class="relative group">3. Conclusion: Drop the Omnipotence Fantasy and Return to Tooling Fundamentals
    <div id="3-conclusion-drop-the-omnipotence-fantasy-and-return-to-tooling-fundamentals" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#3-conclusion-drop-the-omnipotence-fantasy-and-return-to-tooling-fundamentals" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Adding to the irony was the reality of the demo itself: after countless hours spent staging scenarios, hand-tuning prompts, and obsessing over presentation styling, the planned 30-minute session was squeezed by various delays and hiccups into a rushed 10-minute sprint, ending in a frantic, unceremonious wrap-up.</p>
<p>No matter how elaborately you stage the theater or how thick you pad the prompts, the messiness of the real world will always deflate unwarranted expectations.</p>
<p>Believing that an Agent wrapper lets you bypass business complexity and effortlessly monetize a SaaS is merely a speculative hangover of the current AI hype cycle.</p>
<p>This does not mean Agents lack utility. On the contrary, stripping away the grandiose delusion of “replacing all legacy enterprise software” makes their true value evident:</p>
<ul>
<li>Instead of replacing databases and deterministic engines, Agents serve as an <strong>efficient cognitive bridge between humans and complex systems</strong>;</li>
<li>They excel as <strong>desktop copilot utilities</strong>, sitting directly in the user’s local workspace to clean dirty data, draft intermediate documents, and perform exploratory analysis;</li>
<li>Let deterministic code and relational databases handle state, and let Agents handle flexible language understanding and ad-hoc orchestration.</li>
</ul>
<p>Acknowledging model boundaries and tackling the unglamorous work of data modeling and infrastructure engineering is far more credible than pretending an Agent shell will magically reinvent enterprise software.</p>
]]></content:encoded>
      
    </item>
    
  </channel>
</rss>
