Hey n8n Community,
Last week I posted about turning a deterministic invoice classifier into an agentic version and concluded the agent didn’t earn its keep. Got a lot of good comments – including one that’s been stuck in my head ever since:
“Deterministic workflows break loud. Agentic workflows break quietly – sometimes the agent continues to ‘work’ even when what it’s doing is actually wrong.”
That comment crystallized something I’d been feeling but couldn’t name. So this post is the other side of the question: when does agentic actually make sense?
Quick context: what these terms mean
A deterministic workflow follows fixed rules. Same input → same output, every time. Think IF nodes, Switch nodes, hard-coded routing logic. You define the path, the workflow walks it.
An agentic workflow hands the decision-making to an LLM. You give the agent a goal and a set of tools, and it decides which tool to call, in what order, with what arguments. The path isn’t fixed – the agent figures it out per run.
Both can solve the same problems. The question is which one you should reach for.
The rule I use now
If I can sketch the entire workflow on paper – incoming document formats, expected fields, decision points, branches, edge cases – go deterministic. As long as hard-coded rules can decide things, deterministic is cheaper, faster, and way more reliable.
If I can’t fully sketch it because there are too many open variables – document formats I haven’t seen before, decisions that depend on context the workflow can’t anticipate, edge cases I genuinely can’t enumerate – that’s when agentic earns its keep.
Example: invoice classification (deterministic wins)
I know the inputs (PDF, PNG, JPG). I know the categories (medical, restaurant, hotel, trades, telecom). I know the routing logic (one folder per category, one review folder for low confidence). I can sketch the whole thing on a napkin. Hard-coded rules + an extractor with confidence scoring beats an agent every time.
Example: support email triage (agentic wins)
A new support email comes in. To handle it, the workflow needs to:
- Read the email and figure out if it’s a bug report, a billing question, a feature request, or something weird that doesn’t fit
- Pull the customer’s recent ticket history
- Decide whether to draft a reply, escalate to a human, or close as duplicate
- For draft replies, pull relevant docs from the knowledge base
I can’t sketch this on paper. The decision tree branches based on content I can’t predict, ticket history I can’t pre-classify, and “is this a duplicate” judgments that need actual reading. This is where an agent stops being a liability and starts being the right tool.
The failure-mode difference
This is what the commenter nailed. When my deterministic workflow breaks, an IF node fails, a node throws an error, the execution stops, I get an alert. I find out fast.
When an agent breaks, it often keeps going. It picks the wrong tool, fills the wrong parameter, classifies a contract as an invoice – and the workflow finishes “successfully.” You don’t find out something’s wrong until someone downstream notices the bad output.
For tasks where being wrong silently is worse than failing loudly, agentic is the wrong call.
Both workflows from last week’s post if you want to compare:
- Agentic version: n8n-workflows/agentic-document-classification-workflow/agentic_document_classification_workflow.json at 2e9153b83d94fb1200a130f2c3b10a21298ed49b · felix-sattler-easybits/n8n-workflows · GitHub
- Deterministic (easybits Extractor) version: Classify invoices and route them to Google Drive with easybits and Slack | n8n workflow template
Not sure which approach fits your use case?
Drop it in the comments – what you’re trying to build, what the inputs look like, what decisions need to happen. Happy to think through it with you and figure out whether deterministic, agentic, or some mix makes the most sense. Always interesting to see where the line sits for different problems.
Best,
Felix