RT Robert Truesdale

Stop Buying SaaS for Tasks You Can Script

Every few weeks someone on my team shows me a new SaaS tool that promises to "revolutionize" some mundane task. Log rotation? There's a tool for that. Database backups? Sure, $50/month. Rotating API keys? They'll happy to take your money. I'm not against paying for software—when it actually solves a hard problem. But most daily IT tasks don't need a subscription. They need a script and a cron job.

This is for the sysadmin who is tired of vendor lock-in, the builder who wants control over their own infrastructure, and anyone tired of watching monthly bills pile up for stuff they could handle themselves. Here's how to automate without another subscription.

What You're Actually Paying For

Before we talk solutions, let's be honest about what you're getting with that SaaS tool. Most of these services do three things: trigger on a schedule, run some logic, and notify you or store the result. That's not a product—that's a five-line bash script plus a webhook.

The SaaS pitch is convenience. But convenience has a cost that compounds. You're paying for someone else's server, someone else's UI, and someone else's rate increases. In 2026, I've seen tools triple in price over two years because they know you're locked in. The real cost isn't the subscription—it's the day you need to migrate away and realize you have no idea what the tool was actually doing.

The alternative isn't harder. It's just different. You trade a credit card swipe for a text file and some grep commands. That tradeoff is worth it most of the time.

The Free Stack That Actually Works

Here's what I use instead of the latest automation platform:

Cron + Bash – The old reliable. If your system has a scheduler, you have automation. A five-line cron entry can handle log rotation, old file cleanup, and service health checks. No dependencies, no configuration files to debug, just execution.

Python Scripts – For anything that needs logic beyond file moving. I keep a ~/scripts folder with about forty utilities that have accumulated over the years. Things like "find all large files older than 30 days" or "check if our backup S3 bucket is accessible." These aren't fancy. They're ugly. But they work.

Systemd Timers – If you're on Linux and your cron daemon isn't running (increasingly common in containerized environments), systemd timers do the same job with better logging. You get journalctl output for free, which is better than hoping a cron email doesn't get flagged as spam.

GitHub Actions or GitLab CI – For workflow automation without running your own runner. If you already use GitHub for code, you can trigger workflows on schedules. It's not just for CI/CD. I've seen people use scheduled workflows to rotate secrets, sync database dumps to cold storage, and run daily report generation. Free for most use cases.

Telegram or Discord Webhooks – For notifications. Skip the PagerDuty subscription if you're not actually running a 24/7 operation. A simple curl to a webhook endpoint tells you something failed. That's enough for most internal tools.

Real Examples From the Trenches

Last year I took over a content site that was bleeding $300/month to various automation tools. The previous operator had subscriptions for backup monitoring, uptime checking, content publishing, and email notifications. I replaced all of it.

The backup monitoring became a 20-line Python script that runs daily, checks the timestamp on the latest backup file, and pings a webhook if it's older than 26 hours. Total cost: zero. The uptime checks moved to a free tier UptimeRobot account—it's not fancy but it works for HTTP checks. The content publishing was a cron job that ran git pull on a deployment schedule and restarted the container. The email notifications got replaced with a Telegram bot that sends me a message when deployments fail.

Total cost after migration: about $40/month for the server that hosts the site anyway. That's what I call ROI.

Another example: database maintenance. I've seen teams pay for tools that run VACUUM ANALYZE on PostgreSQL or optimize MySQL tables. That's a shell script. You can wrap it in a cron job, log the output, and email yourself the results. The only reason to pay for this is if you don't know SQL and need a GUI. That's a valid reason—but learn SQL instead. It's cheaper in the long run.

Where This Falls Apart

I won't pretend scripting everything is always better. Here's where it breaks:

Documentation tax – When you write a script, you own the documentation. That means you need to comment your code, maintain a README, and make sure the next person can understand what the hell this cron job does at 3 AM. SaaS tools come with docs you didn't write. You're trading that for control. Sometimes that's a fair trade, sometimes it's not.

Debugging is on you – When your script fails, there's no support ticket. There's no status page telling you the tool is down. There's just you, looking at error logs, wondering why your regex didn't match the output format from an API that changed without warning. This is fine for internal tools where you control the environment. It's terrible for production systems where you need someone to blame.

Security updates – SaaS tools get patched by the vendor. Your scripts get patched by you. If you're using Python libraries from pip, you need to watch those dependencies. I've seen automation break because a script was using an old version of a library that stopped working with an API. The vendor would have fixed this. You have to fix it yourself.

Scope creep – This is the big one. You start with a simple script. Six months later, it's handling ten things, has three dependencies, and calls an API that you forgot you set up. Now it's fragile and nobody wants to touch it. The solution is to keep your automation simple, document what each script does, and be willing to throw away something that got too complicated.

When You Should Actually Pay for SaaS

I'm not a purist. There are times when a subscription makes sense:

You're dealing with third-party APIs that change frequently and would break your scripts. Vendor tools exist because integrating with their API is harder than it looks.

You need audit trails. If compliance requires logging who did what and when, a SaaS tool that provides that out of the box is worth paying for. Building your own audit system is a project, not a task.

Your team is small and everyone is already overloaded. Sometimes paying $50/month to not have to maintain something is the right business decision. Time has value. But be honest about whether you're paying for convenience or avoiding a problem you should solve.

What I Would Do First

If you're looking to cut SaaS costs and build your own automation, start here:

  • Audit what you're paying for. List every subscription, no matter how small. For each one, ask: what does this actually do? If it's "runs on a schedule and notifies me," that's a script.
  • Pick one thing to replace. Don't migrate everything at once. Choose the most expensive tool or the one that frustrates you the most. Get one win under your belt before you tackle the rest.
  • Write the ugly version first. Don't try to build the perfect framework. Write a script that does the thing, even if it's ugly. You can refactor later. Shipping matters more than elegance.
  • Set up monitoring. Your script needs to tell you when it fails. A simple webhook to a notification channel is enough. If you can't see when your automation breaks, you have no business automating.
  • Document it. Not for anyone else—for future you. Three months from now, you'll have forgotten why this script exists. A three-line comment with the cron schedule and purpose saves hours of confusion.

The point isn't to eliminate all tools. It's to own the things that should be owned, and pay for the things that are actually hard. Most daily tasks fall into the first category. You're already paying for more than you need.