If you can write down the rule, you do not need AI
Many AI agents are a cron job with extra steps. A simple rule of thumb for when a language model actually makes sense and when an if statement is the better solution.
I see a post following the same pattern almost every day. "I built an AI agent that does X." And more and more often, while reading it, I think a cron job could have done that too. Cheaper, faster and without the chance of making something up on the spot.
A few real examples I have come across. Someone has an agent check an airline seat map every minute and swap the seat as soon as a better one frees up. That mostly tests how fast your own IP gets blocked. Someone else has an AI read confirmation emails and forward the travel details to colleagues. And yet another person sets a language model on renewing SSL certificates, a task where a single mistake takes down half the infrastructure.
And that is exactly where the core lies for me. Most of the people who build something like this never learned to solve the task without AI. They lack the mental model behind it. That is why every working agent feels like magic, even when it is just a clumsy version of something that was solved long ago.
The one test that almost always works
There is a simple rule of thumb, and it has never let me down. If you could write down the rule for it, then write the rule. Or put differently, if you can draw the decision tree on a whiteboard, leave the language model out.
Putting a language model on a clear, rule-based task turns a reliable thing into an unreliable one. You swap an if statement that always does the same thing for something slower and more expensive. And you take on a new class of error you did not have before, because the model can now invent things. An if statement never does. Put bluntly, an LLM doing a deterministic task is not intelligence, it is a slower, more expensive and less reliable version of an if statement, with a new risk on top.
The SSL case is the prime example for this. Renewing certificates is a solved problem. There are tools that have done it boringly reliably for years. Letting a model make the final decision is not progress, it is a step back with extra risk.
Where AI really shines
This is explicitly not a "AI is hype" piece. I build these systems for a living, and there are tasks where a language model does not just help but makes possible things that could not be automated at all before.
The dividing line is not complicated. Use AI when the hard part is ambiguity, and not when the hard part is reliability.
A model is strong when the input is unstructured and fuzzy, when no two inputs look alike, when you could not formulate a rule in advance because reality is too chaotic for it. Pulling meaning out of free text, out of emails and notes and documents that are all built differently. Fuzzy matching where a rigid table fails. Sorting and routing chaotic inputs. Building a draft from many scattered sources that a human signs off in the end.
These are tasks where roughly right with control is worth more than exactly by the rule, because there simply was no rule before.
The actual mistake sits in the middle
It gets interesting with the travel-email example, because that is where both worlds meet. Fishing the travel details out of an informal confirmation email is exactly what a model is good at, unstructured text without a fixed format. That is a fair task for AI.
The mistake is not the extraction. The mistake is letting the model then also send the email on its own.
That brings us to the pattern almost all failed AI projects share. It is a thinking error in two directions. Rejecting AI entirely is just as wrong as letting AI decide everything. The sensible setup sits in between and is layered. The model is the layer that understands and interprets. The actual action is handled by deterministic code.
The model reads the email and pulls out the data, that is the part with judgement, and that justifies the model. The sending runs through a fixed, tested function, with a confirmation in front of anything that has real consequences. Judging is what the model earns. Executing is not.
My own line here is simple. If I have no way to check the result of an action automatically, meaning no record and no control instance, then the agent must not carry out that action on its own. Suggesting yes, drafting yes, monitoring yes. But not hitting send by itself.
Conclusion
For me it is, in the end, not a question of for or against AI. If the AI agent is a hammer, every task that can be automated suddenly looks like a nail. That is exactly where it goes wrong. Many of these projects are a cron job with a few extra steps, except the cron job never hallucinated.
The real skill is not pouring AI into everything. It is starting from the problem instead of the tool, and being honest enough to say, at the right point, this here does not need a language model. The most expensive solution is rarely the best, and the most impressive demo is almost never the one that runs reliably day to day.