š Hey dev.to Community,
A couple weeks back I shared a workflow that uses the easybits Extractor to classify uploaded invoices (PDF, PNG, JPG), route them to the right Google Drive folder, and flag low-confidence documents to Slack for review.
A lot of comments came in asking the same thing: why not build this agentic?
Fair question. So I built the same workflow again ā this time with an AI Agent node, Gemini as the chat model, and seven tools hanging off it (six "move to folder" tools + one Slack alert). The agent sees the file ID, decides the category, and calls the matching tool.
It works. But after building it, here are the four reasons I'm sticking with the deterministic version.
š² Non-determinism where I don't want it
Classification is a solved deterministic task. Adding an LLM in the middle means the same invoice can route differently on two runs. For a process that's supposed to be boring and reliable, that's a downgrade.
š Debuggability collapses when it fails
When the deterministic workflow breaks, an IF node either fires or it doesn't ā I can tell you exactly why in 10 seconds. When the agent misroutes, I'm reading execution logs trying to reverse-engineer what the model was reasoning about. The tool calls are visible, sure, but the why behind a wrong call is a judgment about a black box.
š You lose real confidence scoring
The Extractor returns null when it genuinely can't extract a field ā that's a clean signal I can branch on with a single IF node. An agent's self-reported confidence is vibes. It'll happily tell you it's 90% sure on something it got wrong.
ā ļø More failure modes, zero capability gained
Building this I hit tool loops, missing $fromAI parameters, schema mismatches, binary-passing issues between agent and tool nodes. Every one of those is a new thing that can break in production ā and at the end, the output is the same file in the same folder.
My take: agentic makes sense when you actually need reasoning ā ambiguous decisions, multi-step planning, or work that genuinely can't be expressed as a graph. Invoice classification is none of those.
š Both workflows if you want to compare:
Deterministic (easybits Extractor) version: https://n8n.io/workflows/14960-classify-invoices-and-route-them-to-google-drive-with-easybits-and-slack/
āļø easybits Extractor setup (for the deterministic one):
Cloud users: easybits Extractor is available ā search in the node panel
Self-hosted: Settings ā Community Nodes ā install '@easybits/n8n-nodes-extractor'
Create a pipeline at extractor.easybits.tech with two fields: document_class and confidence_score
Free tier covers 50 requests/month.
For those of you running agents in n8n ā where have they earned their keep for you, and where have you found yourself ripping them back out? Genuinely curious what the line looks like for other people.
Best,
Felix
Top comments (0)