---
title: "Is AI Doing Less \u0026 Less?"
description: "Analysis of 14 production agent workflows reveals the optimal balance between deterministic code \u0026 LLM inference. 65% of nodes run as pure code, saving tokens \u0026 improving reliability."
categories: ["AI","agents"]
keywords: ["AI agents","deterministic workflows","state machines","agent architecture","token savings","production agents","LLM inference"]
ai_summary: "An analysis of 14 production agent workflows shows that 65% of nodes should be deterministic code, not LLM calls. Four categories emerge : purely deterministic (100%), mostly deterministic (67-91%), hybrid (14-56%), \u0026 exclusively agentic (0%)."
date: 2026-02-26
lastmod: 2026-08-14
canonical_url: https://www.tomtunguz.com/hybrid-state-machine-agents/
author: "Tomasz Tunguz"
---


I started by asking AI to do everything. Six months later, 65% of my agent's workflow nodes run as non-AI code.

The first version was fully agentic : every task went to an LLM. LLMs would confidently progress through tasks, though not always accurately.

So I added tools to constrain what the LLM could call. Limited its ability to deviate. I added a [Discovery tool](https://blog.cloudflare.com/code-mode-mcp/) to help the AI find those tools. Better, but not enough.

Then I found Stripe's [minion architecture](https://stripe.dev/blog/minions-stripes-one-shot-end-to-end-coding-agents). Their insight : deterministic code handles the predictable ; LLMs tackle the ambiguous.

I implemented blueprints, workflow charts written in code. Each blueprint specifies nodes, transitions between them, trigger conditions for matching tasks, & explicit error handling.

```
extract_domain (code) → attio_find (code) → harmonic_enrich (code)
    → generate_summary (LLM, 1 turn) → notion_prepend (code)
```

This differs from skills or prompts. A skill tells the LLM what to do. A blueprint tells the system when to involve the LLM at all.

{{< email_image src="aitwzyb3rg38crtvnyis" alt="Julius Workflow Determinism" width="540" height="304" >}}

Each blueprint is a directed graph of nodes. Nodes come in two types : deterministic (code) & agentic (LLM). Transitions between nodes can branch based on conditions.

{{< email_image src="cfacpo7jz56erb9iobop" alt="Workflow Categories" width="540" height="304" >}}

Deal pipeline updates, chat messages, & email routing account for 29% of workflows, all without a single LLM call.

Company research, newsletter processing, & person research need the LLM for extraction & synthesis only. Another 36%. The workflow runs 67-91% as code. The LLM sees only what it needs : a chunk of text to summarize, a list to categorize, processed in one to three turns with constrained tools.

Blog posts, document analysis, bug fixes are genuinely hybrid. 21% of workflows. Multiple LLM calls iterate toward quality.

Only 14% remain fully agentic. Data transforms & error investigations. These tend to be coding tasks rather than evaluating a decision point in a workflow. The LLM needs freedom to explore.

AI started doing everything. Now it handles routing, exceptions, research, planning, & coding. The rest runs without it.

Is AI doing less? Yes. Is the system doing more? Also yes.

The blueprints, the tools, the skills might be temporary scaffolding. With each new model release, capabilities expand. Tasks that required deterministic code six months ago might not tomorrow.
