Skip to main content

User look: We Needed Background Jobs, Not Another SaaS Subscription

Ruslan Gainutdinov

Our customer, an early two-person startup building an AI document processing app, needed to run heavy PDF generation and email sending in the background. On Vercel, they hit the function maximum duration timeout and max memory usage all the time.

The "solution" was adding Trigger.dev ($50/month) and Resend ($20/month) just to work around platform limits. This made things harder to manage and debug, giving the CTO a constant distraction to manage developer keys, environments, and subscription payments.

How Self-Hosting Fixed It

They deployed to their own server, where there are no timeout limits. They set up BullMQ with Redis (one-click install on DollarDeploy) and now run background jobs that take 5..10+ minutes without any external services. Their architecture went from a patchwork of third-party tools to a self-contained system.

And local development is perfect - no need to access cloud services, easy to test and fix problems.

Key Takeaway

When your app needs queues, scheduled tasks, or long-running processes, self-hosting gives you speed of development, independence from other services, and convenience.

Interested in self-hosting and having a robust local DX setup? Check out our other article:

Self-hosted development environment
Building modern SaaS applications means juggling multiple services: databases, caches, queues, object storage, and email. The challenge? Making local development feel as real as production while keeping things simple. We’ve put together a self-hosted-dev repository that lets you spin up a complete local development stack with a single command—no