The main idea: start jobs inside your database transaction. If the transaction rolls back, the job never exists. No dual-write consistency problems, no transactional outbox pattern needed. Job chains work like Promise chains — continueWith instead of .then(). Jobs can branch, loop, or wait for other jobs to complete (like Promise.all).
Redis/NATS can optionally be added for faster notifications, but no job state lives there — just an optimization.
Looking for feedback on the API design.