Why Zo.E runs on n8n
2 min read · 483 words ·
When you import these JSON files, the first thing you'll notice is that every workflow is a visual graph — nodes connected by lines, branching left and right, looping back on themselves. That's n8n. And once you understand why Zo.E was built on it rather than something like Zapier, the architecture will make a lot more sense.
The pricing model changes everything
Zapier charges per task. Every step in every workflow, every time it runs, costs you something. At Zo.E's scale — ten workflows, two brands, running daily — the numbers get uncomfortable quickly. n8n on PikaPods costs roughly £5 a month, flat. That's it. Both brands, all ten workflows, every run. The whole infrastructure for Zo.E comes in under £30 a month including NocoDB, Cloudinary, and everything else. Self-hosting on n8n is what makes that possible.
Branching and conditional logic are built in
Several Zo.E workflows need to make a decision at the very start: is this content for Nunlimited, or for Sales Source Code? The answer determines which NocoDB base gets queried, which Gemini prompt gets used, which Upload Post account gets hit. In n8n, that's a Switch node. It routes cleanly. You can see exactly what happens at each branch just by looking at the canvas.
In a linear, trigger-then-steps tool, this kind of dual-brand routing gets messy fast. You'd end up with two entirely separate automations that are nearly identical and painful to maintain.
WF4 requires a workflow that waits
The approval loop in WF4 (Content Approval) is the clearest example of why Zo.E needed n8n specifically. The workflow generates a draft, sends it to Telegram, and then stops — waiting for a webhook callback when the approval or rejection comes back. That pause-and-resume pattern is not something Zapier handles well. It's not really designed for it.
n8n supports webhook triggers and mid-workflow wait states natively. The Telegram bot sends back a response, the workflow picks it up and continues. That's the whole approval mechanism.
JavaScript when the AI gets untidy
Gemini Flash is good. It's also occasionally inconsistent in how it formats a response — extra whitespace, slightly wrong JSON structure, a stray character. Before that output hits NocoDB, a Code node runs a few lines of JavaScript to clean it up. Nothing complex, but it needs to be there. n8n has a fully capable JS Code node. You don't need a workaround or a third-party function service.
What you're looking at
These ten workflows are the actual production system that runs content for both Nunlimited and SSC. n8n is the engine because it handles branching, waiting, code execution, and self-hosting in a way that makes the whole thing viable at a sensible cost. Everything else — Gemini, NocoDB, Telegram, Upload Post, Cloudinary — is just a node on the canvas.
Ta,
James
Founder | Nunlimited