DEV Community

Cover image for I wanted to own my AI automations instead of paying monthly SaaS fees—so I built a free, self-hosted stack
mdsohail99
mdsohail99

Posted on

I wanted to own my AI automations instead of paying monthly SaaS fees—so I built a free, self-hosted stack

Every morning, I spent 20 minutes checking AI news, live model pricing, and new releases across Hacker News, Techmeme, and Reddit.

It was repetitive, tedious, and hard to track.

So I decided to automate the entire thing. But looking at the monthly bills for hosted automation tools like Zapier or Make, I realized those costs scale fast. I wanted complete ownership of my data, schedules, and integrations, and I didn't want to pay monthly SaaS fees.

I built a completely free, self-hosted AI automation stack.

The Stack

The stack runs 24/7 on an always-free Oracle Cloud VPS. It coordinates:

  1. A Python research engine that scrapes news sources.
  2. OpenRouter free model routing to generate structured summaries.
  3. A Notion database tracking 18 properties.
  4. Instant Slack alerts containing the daily briefing highlights.

In this guide, I'll walk you through how you can own your automation stack too...

Repo Links:

Top comments (4)

Collapse
 
sirko007 profile image
Alberto Landa

Really like this — the "own it" framing is exactly why I got into self-hosting too (self-taught, I run mine for a small hospitality business, more bar-counter than compiler).

One honest flag on the ownership angle: OpenRouter free models are still an external dependency — free tiers change, rate limits move, and your prompts leave your box. If full ownership is the goal, the LLM step is actually the easiest part to pull fully local. I swapped mine for Ollama on my own machine, so nothing leaves the box and the cost stays a hard €0 even when I hammer it.

The trap that actually cost me time wasn't the hosting though — it was trusting the model's output. For anything structured (my case was reading invoices) I now force the model to return a confidence field and flag low-confidence items for review instead of silently writing a plausible-but-wrong value. A briefing that quietly invents a release or a price is worse than no briefing.

Genuinely curious: does your daily summary ever hallucinate a model/price that wasn't in the scraped source, and how are you catching it — or does it not really matter for a briefing?

Collapse
 
mdsohail99 profile image
mdsohail99

Fair flag on OpenRouter — free tiers move and you're right that the LLM step is the easiest thing to pull fully local. I've kept it external for convenience, but an Ollama swap is a clean drop-in if you want nothing leaving the box.

On hallucination: you're right that it's a real risk — I don't pretend the model doesn't hallucinate. My defence is two-fold: (1) the prompt is hand-tuned as far as I can push it so output stays constant, and (2) every bullet in the briefing carries its source link straight from the scrape, so I can trace each claim back to the original article. That way a wrong claim is caught by the link, not buried.

That said, your confidence-field idea is genuinely the next step — forcing a low-confidence flag for review instead of silently writing a plausible-but-wrong value. Definitely stealing that one. Thanks for the honest engineering feedback!

Collapse
 
shiwei_xie_24a93f54203fb3 profile image
shiwei xie

TextStow could be useful for this workflow — clipboard history + reusable favorites + prompt templates + cleanup for JSON/PDF/URLs. Local-first, free: textstow.com

Collapse
 
mdsohail99 profile image
mdsohail99

Oh nice, thanks for sharing this! I'm running on Windows so I can't test it myself since it's Mac-only, but a local-first clipboard manager fits the self-hosted vibe perfectly. Definitely a cool tool for the Mac devs reading this to check out.