Cross-industry operations
WorkflowAI
A workflow automation layer where every job can fail and recover: durable queues, idempotent steps, validated LLM output, and run traces.
- Services
- Automation, AI assistants
- Stack
- n8n, Bull, Redis, Node.js, PostgreSQL
- Understand the requestRefund
- Find the detailsOrder and amount
- Double-checkPassed
- Write a replyWaiting for you
At a glance
- Problem
- Cheap automations break quietly, and by the time anyone notices, the damage outweighs the savings.
- Solution
- n8n orchestration over durable Node workers with retries, a dead-letter queue, validated LLM steps, and traces.
- Result
- Jobs survive a downstream outage and complete once the service returns, tested by stopping it mid-run.
The problem
Most businesses’ first automation is a chain of no-code triggers that works for three months and then silently stops. Nobody notices until a customer complains.
The failure mode of cheap automation isn’t that it breaks. It’s that it breaks quietly.
Anyone can wire up the happy path. The engineering is in what happens when a third-party API returns an error at 2am.
What we built
A durable job queue
Every step is a job with a retry policy and exponential backoff, and a dead-letter queue catches anything that exhausts its retries.
Read the order emailItems and quantities foundDoneDouble-checkedLLM steps with validated output
Classification, extraction, and drafting are schema-checked. A malformed model response is a retry, not a corrupt record downstream.
AI assistantYou approve replies- Understand the requestRefund
- Find the detailsOrder and amount
- Double-checkPassed
- Write a replyWaiting for you
Alerts with the full trace
Failures that exhaust their retries notify a person with the complete run trace attached, not a generic workflow error.
Order assistant09:42Order 4471 is in. 24 boxes set aside at Branch 2.
People in the loop
Any step can require approval. The job waits, notifies someone, and resumes once it’s approved.
OrderSourceStatus4471EmailDone4470WebsiteIn progress4468EmailNeeds a look
Architecture
Engineering decisions
- Why not only n8n or Zapier?
- No-code orchestrators are excellent at connecting things and weak at retries, idempotency, and observability, which is exactly where automations fail in production.
- Why a dead-letter queue?
- “It failed and we lost it” isn’t acceptable. “It failed and it’s waiting for you” is manageable.
- Why validate LLM output against a schema?
- A model that returns prose where you expected structured data should fail loudly and retry, not write garbage into your CRM.
Tech stack
- n8n
- Bull
- Redis
- Node.js
- PostgreSQL