Skip to content

The $12/Month Stack That Runs Half My Agency

Published:
6 min read

Iron Man building

Two months ago I was drowning in tabs. Slack open, Linear open, YouTube Studio open, Google Docs open, Fathom open. A dozen clients. Two co-founders. One shared brain trying to keep it all straight.

I didn’t hire anyone. I wrote markdown files instead.

Not an app. Not a SaaS product. Just markdown, cron jobs and a Telegram bot running on a $6/month server. And honestly, it changed how I run this agency more than any tool I’ve paid for.

Here’s everything I built, what it replaced and what I learned.

The mess before

Vision Seek is a YouTube growth consultancy. We handle everything from ideation to publishing for our clients. That means every week there are scripts to review, thumbnails to approve, analytics to check, meetings to debrief and Slack threads to follow up on.

The problem wasn’t any single task. It was the switching. I’d finish a client call, forget to log the action items, then three days later someone asks “did we ever follow up on that thumbnail test?” and I’m scrolling through Slack like a detective.

maths equations flying

Sound familiar? Yeah.

The first thing I automated

Every client call goes through Fathom. Great tool, records everything, gives you a transcript and summary. But the summary just sat there. Nobody went back to check it.

So I wrote a webhook. Every time a Fathom meeting ends, it sends a notification to my server. A script catches it, reads the meeting title, figures out which client it’s for and creates a task in Linear with the summary, action items and a link back to the recording.

That’s it. Meeting ends, task appears in the right project, tagged with the right labels. No one has to remember to do it.

The whole script is maybe 80 lines of Python. No framework. No database.

Then I built Jeeves

Matrix code

Jeeves is a Telegram bot. I message it from my phone and it does things. Not chatbot things. Actual things.

It can:

It runs Claude Sonnet through OpenRouter. Costs almost nothing. The whole thing is one Python file, a container and a folder for the vault.

Why Telegram? Because I’m already there. I don’t need another app. I message Jeeves like I’d message a colleague. “What did we decide about content strategy for this month?” and it searches the vault and tells me.

The real power isn’t the bot itself. It’s that everything I learn gets written into the vault, so the bot gets smarter over time without me touching the code.

Slack messages that turn into tasks

This one solved a specific pain point. Our clients message us in Slack. Sometimes it’s feedback, sometimes it’s a new idea, sometimes it’s “hey can we try this?” And those messages would just… sit there until someone remembered to act on them.

Limitless learning languages

Now there’s a poller. Every 5 minutes it checks our client Slack channels. Any new message that isn’t from me or my co-founder automatically creates a task in Linear. It pulls the first 80 characters as the title, includes the full message as the description, adds a “Slack” label and even detects keywords to tag it as script, thumbnail, strategy, edits etc.

Thread replies get added as comments on the parent issue. So a Slack conversation becomes a tracked, assignable task without anyone doing anything.

The deduplication alone saved my sanity. No more “wait, did I already make a ticket for this?”

The boring stuff actually matters

Then there’s the stuff nobody would put in a blog post because it’s not exciting. But it’s the stuff that was eating hours every week:

Todoist recurring tasks. Every Monday: check YouTube analytics for each client. Every Wednesday: review thumbnail pipeline. Every Friday: follow up on script feedback. These aren’t automated in a fancy way. They’re just recurring tasks that show up and remind me to do the thing. Five minutes to set up. Saves me from ever forgetting.

Daily Slack digest. A cron job runs every weekday morning, pulls yesterday’s activity from all client channels and summarizes it into a markdown file. I read it with coffee. Takes 2 minutes instead of 20 minutes of scrolling.

Weekly client updates. Monday mornings, another script drafts performance updates for each client. YouTube stats, what shipped last week, what’s coming this week. I review it, tweak a few lines and send it.

Just in time AI

programming GIF

Here’s the thing nobody tells you about automation. It’s not about saving time. I mean, it does save time. But the real value is that things stop falling through the cracks.

Before, my mental model of each client was whatever I could hold in my head plus whatever I remembered to check. Now it’s everything, logged, tracked and searchable.

A few specific things I’d tell someone starting this:

Start with the thing that makes you feel guilty. For me it was forgetting to follow up on meeting action items. That’s why the Fathom webhook was first. Fix the guilt, then move to the nice-to-haves.

Don’t build a platform. Build scripts. I don’t have a unified dashboard or a fancy orchestration layer. I have individual scripts that each do one thing. They run independently. If one breaks, nothing else breaks. That’s the whole architecture.

The stack

For the nerds:

Total lines of code across all automations: maybe 800. Total monthly cost: $12 (VPS + OpenRouter credits).

What’s next

WarGames the only winning move

I’m not done. The next thing I want to wire up is automatic short-form clip generation from client videos. And I want Jeeves to proactively surface insights, not just answer questions.

But that’s the thing about building this way. Each piece is small. Each piece is independent. And each piece makes the next one easier because the foundation is already there.

You don’t need to be a developer to do this. You need to be annoyed enough by your workflow to spend an afternoon fixing it.

If you want to see the actual code or hear more about how I run a YouTube agency and a bunch of scripts, that’s what this site is for.

How I use AI to run a YouTube agency. Strategy, systems and what's working right now.

When there's something worth saying.