Spurlock Studios
Contact
Agent Loop vs LLM-in-Workflow: Pick the Shape That Matches the Uncertainty

You usually need a workflow with one LLM step — not a full agent loop. An agent earns its keep only when the next action cannot be named until mid-run, the long-tail branches explode a scripted graph, and you can afford the cost and failure modes that come with open-ended tool use. Pick the shape that matches the uncertainty, not the buzzword on the slide.

This spoke sits under the Agentic Systems Operating Manual. It owns the hybrid middle. For the hard “no agent” cases, see when not to build an agent.

The short answer

  • Tier-1: deterministic workflow — no model, or a model used only offline to design the flow.
  • Tier-2 (default): workflow + one bounded LLM step (classify, extract, draft) with schema-checked I/O.
  • Tier-3: agent loop — plan → act → observe → decide, with tools, budgets, and evaluators.
  • Wrong shape taxes you twice: Tier-3 burns tokens on solvable graphs; Tier-1/2 silently fails when the long tail needs mid-run decisions.
  • Prove Tier-2 first. Graduate to Tier-3 only when you have failure traces that a scripted graph cannot absorb without becoming a second product.

What is an agent loop vs a scripted workflow?

ShapeWho picks the next stepTool callsTypical failure
Scripted workflowYou, at design timeFixed edges in n8n / codeMissing branch, silent skip
Workflow + LLM stepYou for routing; model for one transformationFixed; model never chooses toolsSchema miss, bad extract
Agent loopModel + harness at runtimeDynamic, policy-gatedLoops, wrong tool, cost blowups

An LLM step is a node: input in, structured output out, next edge known. An agent loop is a control plane: the model may propose tools, the harness may allow or deny them, and termination is earned (done, escalate, abort) — not a final webhook hop.

If you can draw every edge on a whiteboard before the first production ticket arrives, you are still in workflow land.

Why wrong shape blows cost and reliability

Agent loops pay a planning tax on every turn: context, tool schemas, retries, and evaluator rounds. That is fine when the alternative is a human. It is wasteful when a classifier plus three IF nodes would finish the job.

Workflows fail the other way. You encode the happy path, miss the ugly path, and ship a “successful” run that wrote the wrong CRM field because no model was allowed to notice the exception.

Wrong choiceWhat you feel in week two
Agent for a form parse10× token bill vs a single extract call; flaky tool retries
Workflow for messy exceptionsEscalation pile grows; humans rewrite “automation” output
Hybrid without schema checksLLM step drifts; downstream nodes trust garbage

Cost is not only tokens. Wrong-shape agents also burn eng time debugging loops that a state machine never should have entered.

The three-tier test

Run every candidate job through these questions in order. Stop at the first tier that fits.

1. Certainty of the next action

  • Can you name the next system call before looking at the payload? → Tier-1 or Tier-2.
  • Does the next call depend on free-form content you have not seen yet? → Candidate Tier-3.

2. Branch count and long-tail rate

  • Under ~10 stable branches, update the graph. Prefer Tier-2.
  • Long-tail exceptions that keep inventing new branches after every release → Tier-3 may earn itself.

3. Blast radius if the model is wrong

Side-effect classPrefer
Read-only / draft-onlyTier-2 LLM step is fine
Reversible write (draft email, note)Tier-2 with human review, or Tier-3 with tight policy
Irreversible (charge, delete, public post)Default Tier-2 + human gate; Tier-3 only with pre-execution deny

If blast radius is high and certainty is low, you still might not want an agent — you might want a human. Agents are not a courage substitute.

Tier-2: workflow + one LLM step (the default)

Pattern that ships:

  1. Trigger (webhook, form, inbox).
  2. Normalize + validate input mechanically.
  3. One model call with a strict schema (JSON Schema / Zod / structured output).
  4. Mechanical checks on the schema (required fields, enums, ranges).
  5. Deterministic routing and writes in n8n or code.
  6. Escalate path when checks fail — no silent “best effort” write.

Example jobs that stay Tier-2 for a long time:

  • Intent classify → route ticket
  • Extract fields from an invoice PDF → Airtable row
  • Draft a reply → human send
  • Summarize a Zoom transcript → Notion page with fixed template

n8n is a natural host for this shape: the graph owns control flow; the model owns one transformation. Do not let the LLM step call tools “just in case.” That silently becomes Tier-3 without the harness.

When you’ve earned a real agent loop

Signals from production, not from a demo:

  • Same exception class keeps adding branches to the workflow after three releases
  • Humans already do multi-step research across tools with mid-course corrections
  • You can stub tools and score trajectories on a golden set
  • You have budgets, kill switches, and a policy gate before side effects
  • Cost of a failed autonomous run is bounded and recoverable

If those boxes stay unchecked, keep Tier-2. Fashion is not an acceptance criterion.

Hybrid: n8n owns the spine, loop owns the long tail

A clean hybrid:

LayerOwns
n8n / workflowTriggers, auth, deterministic writes, SLAs, retries with idempotency
Bounded agentOnly the exception lane: “research + propose” or “triage + draft”
Policy + evaluatorAllow / deny / escalate before irreversible tools

Contract between layers:

  1. Workflow calls the agent with a job package (goal, allowed tools, budget, deadline).
  2. Agent returns a result package (status, artifacts, reason codes) — never raw chat.
  3. Workflow decides the write. The agent does not hold production credentials for blast-radius tools unless the pilot explicitly scopes them.

This is how you keep ops familiar (n8n runs, alerts, retries) while still using a loop where uncertainty lives.

Measuring whether hybrid is enough

Do not argue architecture. Instrument a two-week trial of Tier-2 and score:

MetricTier-2 is enough if…
Human rewrite rateUnder your job’s tolerance (often <15% for drafts)
Silent wrong writesNear zero on sampled audits
New branch requestsNot growing week over week
Cost per successful jobInside the band finance already approved
Time-to-escalateHumans get a package faster than doing the job cold

If rewrite rate stays high and the failures are “needed another tool / another look,” you have evidence for Tier-3. If failures are schema and template issues, fix Tier-2 — do not promote the model to CEO.

Failure mode: the faux agent

What breaks: a “agent” that is really while true: call model; call every tool with no state machine, no evaluator, and no policy gate.

What it costs: duplicate emails, duplicate CRM notes, token bills that make the chatbot demo look cheap, and a team that stops trusting automation.

What you do instead:

  1. Collapse to Tier-2 for the happy path.
  2. Put the long tail behind an escalate package.
  3. Only then stand up a bounded loop with max turns, tool allowlist, and offline golden-set gate.

Bravery is not a restore strategy.

Decision checklist (print this)

  • I can state the job in one sentence with a done definition
  • I tried Tier-2 with schema-checked I/O for two weeks of real traffic (or a dense fixture pack)
  • I know which tools are read vs write vs irreversible
  • I have an escalate path that humans will actually use
  • If Tier-3: budgets, traces, evaluator, and pre-execution policy exist before soft-launch
  • I am not choosing Tier-3 because a competitor’s landing page used the word “agent”

Acceptance criteria when there is no agent

Tier-2 still needs a definition of done:

  1. Schema validation pass rate on the LLM step
  2. Downstream write success with idempotency keys
  3. Sampled human audit score (or mechanical checks where possible)
  4. Explicit escalate rate — not “errors hidden in Slack”

No agent does not mean no eval. It means the eval is cheaper and mostly mechanical.

How a five-day pilot settles the shape

A Spurlock Studios $1,500 · 5-day agentic pilot is often a shape decision with receipts, not a forced Tier-3 build:

DayOutput
1Job map + three-tier score
2Tier-2 spike in n8n (or existing stack)
3Failure harvest from fixtures / shadows
4Go / no-go for bounded loop; if go, thin harness
5Metrics panel + recommendation writeup

You leave knowing whether to keep shipping hybrid or to fund a real agent build. Scope detail lives in agent pilot scope.

Anti-patterns for this decision

“We’ll add tools later.” Tools change the threat model. Design the tier with the tools you will actually enable.

One LLM step that secretly chains five model calls. That is a loop without a harness. Count turns.

Replacing a working workflow because the board wants “AI agents.” Keep the workflow; put agents on the exception lane if anywhere.

Measuring only demo success. Demos are Tier-3 theater. Production is rewrite rate and blast radius.

Mapping common jobs to tiers

JobStarting tierGraduate when
Lead enrich + CRM field fillTier-2Enrichment vendors disagree and need multi-hop research
Support macro replyTier-2Refunds / account changes need tool sequencing under policy
Ops research briefTier-3 candidateHumans already juggle 4+ sources per brief
Invoice → bill payTier-2 + human approveNever fully autonomous without dual control
Content repurpose pipelineTier-2Brand-risk drafts need iterative critique loops

Start left. Move right only with traces that justify it.

Cost sketch without fake precision

You do not need a vendor’s $/task fantasy. Compare architectures on the same job:

  1. Tokens + tool fees for 100 real cases under Tier-2
  2. Same 100 under a prototype loop (even if stubbed tools)
  3. Human minutes saved vs human minutes spent reviewing

If Tier-3 does not beat Tier-2 on successful outcomes per dollar after review cost, the loop is a science project. Pin models and keep the comparison honest when you re-run — floating aliases contaminate the experiment.

Where state machines fit

Once you choose Tier-3, do not leave the loop as free-form ReAct forever. Cage it: intake → plan → act → evaluate → revise | done | escalate. The cage comes after you prove you need autonomy — it is not a reason to skip the three-tier test.

FAQ

When is Tier-2 (workflow + one LLM) the right default?

Whenever the graph of next actions is mostly known and the model’s job is transform, classify, or draft inside a schema. That covers a large share of SMB automation: tickets, extracts, summaries, and draft replies. Escalate the exceptions; do not promote every exception into an open tool loop on day one.

What signals mean you’ve earned a real agent loop?

Repeated long-tail branches that make the workflow unmaintainable, multi-step tool work humans already do with mid-run decisions, and the control plane pieces (eval, budget, policy) ready before autonomy. Demo applause is not a signal. Failure traces are.

How does this differ from “when not to build an agent”?

That spoke owns refusal — jobs that should stay human or stay deterministic. This spoke owns the middle: when hybrid is enough, and how to graduate. Read both. Many teams need the refusal post first, then this decision tree for the remainder.

Can n8n host the workflow while a bounded loop handles the long tail?

Yes — and that is often the production shape. n8n owns triggers, credentials for deterministic writes, and SLAs; the loop returns a result package for the exception lane. Keep irreversible tools behind policy gates either way.

What acceptance criteria still apply if there’s no agent?

Schema pass rate, write success with idempotency, sampled audit quality, and a visible escalate rate. “No agent” is not “no measurement.” It is a cheaper measurement surface.

What does a Spurlock pilot prove in five days on this decision?

Which tier fits the job, with a Tier-2 spike, failure harvest, and a go / no-go for a bounded loop — plus the minimum metrics so the recommendation is not a vibe. Details: /agentic and pilot scope.

CTA

Pick the shape before you pick the framework.

/agentic · /contact?intent=agentic-pilot

Start a pilot