Workers, Queues & Dead Letter Queue
BullMQ-backed async architecture. Six dedicated queues, per-job retries with backoff, and a dead-letter-queue for forensic recovery.
Queue health
Live BullMQ queue counters and processing metrics.
content-generation-queue
Claude/Gemini draft generation jobs
12
Wait
6
Active
18,402
Done
142
Fail
3
Delay
Last failure: Claude 429 rate_limit_exceeded
legal-research-queue
Perplexity + CourtListener research jobs
4
Wait
3
Active
22,117
Done
64
Fail
1
Delay
Last failure: CourtListener 503 service_unavailable
compliance-review-queue
Gemini jurisdiction compliance evaluations
2
Wait
2
Active
16,980
Done
28
Fail
0
Delay
Last failure: Schema validation failed: missing disclaimer
wordpress-publishing-queue
WordPress REST API publishing jobs
7
Wait
4
Active
14,233
Done
211
Fail
9
Delay
Last failure: WordPress API timeout (30s)
billing-metering-queue
Token usage + Stripe usage record events
0
Wait
1
Active
88,902
Done
9
Fail
0
Delay
Last failure: Stripe idempotency key conflict
audit-log-queue
Immutable hash-chained audit writes
0
Wait
0
Active
142,771
Done
0
Fail
0
Delay
Dead Letter Queue
Jobs that exhausted retries. Payload and stacktrace preserved for triage and replay.
WordPress API timeout
Claude rate limit exceeded
CourtListener unavailable
Stripe webhook signature mismatch
Tenant token limit exceeded
State compliance block
Why BullMQ instead of N8N
Replacing fragmented visual workflows with code-owned, observable workers.
N8N (fragmented)
Versioning
JSON workflows hard to diff & review in PRs
Retry control
Coarse, node-level, no per-job backoff strategy
Observability
Limited; no per-job tokens/cost/trace correlation
Operational coupling
Separate runtime + UI to babysit and scale
Tenant isolation
Hard to enforce; shared execution context
BullMQ (native workers)
Programmatic retry
Per-job attempts, exponential backoff, jitter
Dead Letter Queue
Failed jobs preserved with payload + stacktrace
Per-job metrics
Latency, tokens, cost attributed to tenant
Observability
Job ↔ AI trace correlation via traceId
Transactional control
Atomic usage metering + audit writes
Governance
Code-reviewed job contracts, typed payloads