Most operational work that feels like it should be automated already is — it’s just spread across a dozen tools, a shared inbox, and someone’s memory. I map that process end to end, then build it as a workflow with real error handling: retries with backoff, idempotent writes, dead-letter handling for the cases that need a human, and logging you can search when something looks wrong.
Where a language model genuinely helps — classifying, extracting, summarising, drafting — it goes in as one step among many, with validation on the way out and a deterministic fallback. Where it doesn’t help, it stays out. A workflow that calls a model for something a regular expression could do is a workflow with a recurring bill and a new failure mode.
Built in n8n when your team needs to read and adjust it without an engineer, and in plain code when the workflow needs to be version-controlled, tested, and deployed like everything else you run.