Stop buying SaaS — build internal micro-tools instead
The SaaS stack tax is eating your agency margin. Three internal micro-tools we built in a weekend each, the VPS economics, and when SaaS still wins.

The agency that's quietly losing margin in 2026 isn't the one with too few clients. It's the one with too many SaaS subscriptions. I went through our books this quarter and counted. Across the four businesses we operate, we'd accumulated €1
The agency that's quietly losing margin in 2026 isn't the one with too few clients. It's the one with too many SaaS subscriptions.
I went through our books this quarter and counted. Across the four businesses we operate, we'd accumulated €1,640/month in SaaS subscriptions over three years. By line item, every one of them had a justification. In aggregate, the subscription stack was eating roughly 14% of operating margin to do work that, when I actually audited it, was almost entirely scriptable in 200 lines of code and a $6 VPS.
We killed €890/month of that stack over a single quarter and replaced it with seven internal micro-tools that cost €43/month combined to run. Building internal micro-SaaS to replace mid-tier subscriptions isn't a productivity story or an AI story — it's a margin-recovery story for agencies whose stack has quietly become the third-biggest expense line after payroll and rent. This is the three tools we'd build first, the VPS-plus-LLM-API economics, and the three categories of SaaS where buying still wins.
The SaaS subscription tax that's eating your margin
The math nobody runs because the subscriptions look small individually.
The typical agency stack accumulates roughly €30–€80/month per "AI-powered [function]" tool, €99–€299/month per "marketing automation platform," €40–€150/month per "client management" tool, €19–€49/month per niche workflow helper. Each of them was bought to solve a real problem at the time. Each of them works. None of them, individually, looks like a category-changing line item.
In aggregate, the stack at a 3-person agency I audited last month: €2,130/month. That's €25,560/year, before tax. For a business operating on 22% margin, that line item is roughly 9% of revenue. The owner had no idea.
The math is worse when you account for what each tool actually does. Of the 23 subscriptions I cataloged for that agency, 14 ran a single workflow that was scriptable in under 300 lines of code. Three were "AI-powered" wrappers around the same Claude or GPT-4 API the agency was already paying for separately. Six were genuinely complex platforms doing work that would take months to replicate. Eleven were almost free at the VPS-plus-API tier.
The 11 came out to €840/month — €10,080/year being paid for work an operator could replicate in 11 weekends. Building the replacements over a quarter brought the stack from €2,130 to €1,290/month. The recovered €840 went straight to operating margin.
This isn't an exotic situation. It's the normal shape of any agency that's been operating for more than 18 months and has been buying tools as the team grew. The subscriptions accumulate; nobody runs the audit; the margin quietly disappears.
The three categories of SaaS to stop buying first
Not every subscription is replaceable. The audit I'd run on any agency stack today, in order of how much margin gets recovered fastest.
Category 1: AI-powered "writing/content/copy" assistants at €40–€200/month. Jasper, Writesonic, Copy.ai Pro, Hyperwrite, the per-vertical AI-content vendors. Every one of these is a UI on top of GPT-4 or Claude with prompt templates and a billing layer. The agency is paying €99/month for what's actually €4/month of API tokens plus €95/month of unnecessary UI. Replacement: a 100-line script that calls the Anthropic or OpenAI API with the operator's actual templates, run from CLI or wrapped in a tiny internal UI if anyone needs one. Build time: an afternoon.
Category 2: Niche workflow tools at €30–€80/month that do one thing. Email parsers, PDF extractors, CSV cleaners, image bulk-renamers, contract personalizers, lead enrichers. Each one of these is a single function. Each one of them is doable in a Python script of 150–400 lines. The agency pays for ten of these and uses three of them weekly. Replacement: build the three you actually use; cancel all ten. Build time: a weekend per tool, less if you already have the data-shape spec.
Category 3: Mid-tier marketing/CRM platforms at €99–€299/month with feature overlap. HubSpot Marketing Hub Starter, ActiveCampaign Plus, Constant Contact Plus, Sendinblue Premium, the whole tier of "all-in-one marketing platform" subscriptions. These do five things; the agency uses two of them. Replacement: point tools for the two used features (Resend at €18/mo for email send, a custom 300-line CRM in Postgres or just an existing lighter-weight CRM like Folk at €17/mo). The all-in-one's killer feature is usually the integrations — but in 2026 every modern tool has clean APIs and n8n wires them in an afternoon.
The categories that survive the audit: payment processing (Stripe), accounting (Xero, QuickBooks — regulated, not worth owning), search (Ahrefs/Semrush — actual R&D moats), and the major workflow ports (Slack, Notion, the few genuinely irreplaceable productivity surfaces).
We've documented the broader operator pattern on what to keep buying in the €500/month AI stack writeup — the inverse of this piece. The stack that's worth paying for is short; the stack that isn't is long.
What a "micro-SaaS" actually looks like
The term is confusing because the SaaS industry uses "micro-SaaS" to mean "a small product you sell." In this piece I mean something different — a small internal service you build to run your own operation.
The shape is:
- One specific operational task (bulk-format 200 blog images into 5 social formats; enrich a lead list with company size + tech stack; personalize 50 contracts from one template)
- 200–500 lines of code, usually Python or TypeScript
- Hosted on a $6/month VPS as a long-running process or cron job
- Talks to one or two external APIs (an LLM, a data provider, a storage service)
- Called by the operator either via CLI, a tiny internal web UI, or a Slack slash command
- Built in a weekend, maintained in 30–60 minutes a month
It's not productized. It's not pretty. It's not marketed. It runs the one task it was built for, and it runs it for the cost of the VPS plus the API tokens.
The mental model that helps: every SaaS the agency pays for is a hosted version of a script someone else wrote. The script is doing one thing. The hosting plus the UI plus the multi-tenant infrastructure plus the marketing plus the SaaS company's margin — that's what the €99/month tag is paying for. If the operator only needs the script and the operator can already script, the rest of the stack is overhead.
Three internal tools we built in a weekend each
Concrete examples from our own operation, with the SaaS each one replaced.
Tool 1: bulk content formatter. Replaced a €69/month "AI-powered social media content adapter" subscription. Input: one source article. Output: 5 formatted versions (LinkedIn long, LinkedIn carousel script, Twitter thread, Instagram caption, TikTok script), all in our brand voice. Stack: 240 lines of Python, calls the Anthropic API with our voice-guide prompt and the article body. Hosted as a Slack slash command — /format-content [article-url]. Build time: one afternoon. Monthly cost: roughly €3 in API tokens plus the VPS share.
Tool 2: lead enrichment pipeline. Replaced a €149/month "AI lead enrichment platform" subscription. Input: a CSV of email addresses from any source. Output: enriched rows with company name, employee count, tech stack, recent funding events, and a fit-score against our ICP. Stack: 380 lines of Python, calls one paid enrichment API at €0.02/lead and Claude for the fit-score reasoning. Hosted as a CLI tool — enrich-leads input.csv output.csv. Build time: a weekend. Monthly cost: roughly €18 at our typical 400-lead-per-month volume.
Tool 3: contract personalizer. Replaced a €99/month "contract automation" subscription. Input: client name, project type, deal terms. Output: a personalized contract PDF generated from our master template, delivered to DocuSign for signature. Stack: 190 lines of TypeScript using pdf-lib for the template, the DocuSign API for delivery. Hosted as an n8n workflow triggered by our CRM. Build time: one afternoon. Monthly cost: zero beyond the existing DocuSign account we'd kept.
Aggregate: €317/month of subscriptions replaced with €21/month of run costs. The three tools together took a long weekend of operator time to build. Break-even on the build investment: roughly six weeks. Everything after that is recovered margin.
We've watched this same pattern run cleanly at three other agencies we audit. The tools differ by vertical; the economics don't.
The build stack: VPS + Node/Python + LLM API
The stack is shorter than the framework choice usually suggests.
VPS. Hetzner Cloud at €4.51/month (CX22, 2 vCPU, 4GB RAM) is what we run almost everything on. DigitalOcean droplets at $6, OVH at €3.50, Vultr at $6 — all fine. A single $6 VPS comfortably hosts 5–10 small internal tools running as long-running Node/Python processes or hourly cron jobs. We've never needed to scale up.
Runtime. Node + TypeScript for anything that needs to talk to a lot of external APIs (the type system saves debugging time). Python for anything with data processing, CSV manipulation, or scientific work. Bun if you want fast startup and don't mind the slightly smaller ecosystem. The choice matters less than the discipline of keeping each tool to one runtime.
LLM API. Anthropic Claude (Sonnet 4.6 for default, Haiku for high-volume cheap calls) and OpenAI GPT-4o for the work where it's stronger. We run both. Spend tracking via a single shared API key per provider so we can see exactly which tool costs what each month. Median monthly spend per tool: €3–€8.
Storage. Postgres on Neon (free tier covers most internal tools at our scale, paid tier at €15/month for the larger ones) or just JSON files on the VPS for the simplest tools.
Auth. For tools that need a UI: magic-link auth via Resend, or just basic auth behind a Cloudflare Tunnel. Most internal tools we build don't need auth at all — they're CLIs run from the operator's terminal.
Deployment. GitHub repo per tool, deploy via git pull && systemctl restart on the VPS. No Docker, no Kubernetes, no CI/CD pipeline. The discipline that pays back is keeping the build chain as boring as possible.
Total infrastructure cost across our 11 internal tools: €43/month including the single Hetzner VPS, the shared LLM API spend, the Neon Pro tier, and the one paid enrichment API we use. The same workload as off-the-shelf SaaS: €890/month.
When buying SaaS is still the right answer
The case for buying is real for three categories. We pay for these without internal debate.
Regulated or compliance-bound workflows. Payments (Stripe), accounting (Xero), payroll, anything HIPAA-bound. The regulatory surface area you'd need to own makes the SaaS worth the price purely as risk transfer. The Stripe €18/month subscription buys not just the payment processing but the PCI compliance, the fraud detection, the legal team that fights chargebacks. Replicating that internally would cost ten times what you save.
Deep-integration platforms with multi-year R&D moats. Slack, Notion, the search engines (Ahrefs/Semrush), the email infrastructure providers (Resend, SendGrid), the foundation model providers (Anthropic, OpenAI). These tools' value isn't a single workflow — it's the cumulative result of years of engineering you couldn't reproduce in any reasonable timeframe.
Tools where the team's ongoing R&D is the actual product. The major LLM providers, the video generation models (Seedance 2, Kling 3), the design tools that ship meaningful capability every quarter (Figma, v0). The reason to pay isn't the current snapshot of features; it's the next twelve months of releases that you couldn't possibly build in-house.
The categories we don't buy: anything that's a UI on top of an API we already pay for separately, anything that's a workflow we use weekly that scripts in under 500 lines, anything that bundles five features when we'd use two.
The maintenance question — honest answer
The fear that stops most operators from building is maintenance. "I'd rather pay €99/month than spend an hour a month fixing my own code."
The honest maintenance cost across 11 internal tools we've run for 18 months: 30–60 minutes per tool per month, on average. The variance is high — some tools have needed zero maintenance for entire quarters, others needed a half-day of work when a downstream API changed.
The maintenance-heavy tools, in our experience, are the ones that scope-crept beyond a single workflow. The bulk content formatter that started as "format one article into 5 social posts" and grew into "also schedule them and track engagement and generate next month's calendar" — that's the tool that breaks every other week because each new capability introduces a new failure mode. The discipline that keeps maintenance low is keeping each tool scoped to one job.
The maintenance-light tools are the ones that look almost embarrassingly simple. A 200-line script that does one thing rarely breaks. When it does break, the fix is usually 15 minutes because the failure mode is obvious.
The total monthly maintenance across our 11 tools: roughly 8–12 hours, distributed across the team. At our blended operator rate, that's €600–€900/month of operator time. The subscriptions those tools replaced: €890/month. The labor cost of maintenance roughly matches the savings — but the operator owns the tool, can shape it to the actual workflow, and isn't locked into a vendor's roadmap. The net is positive even at break-even pure-cost, because of the leverage gain.
For agencies that don't have an operator who can ship code in a weekend, the math flips: hiring someone to build and maintain custom tools costs more than the subscriptions. The "build vs buy" decision genuinely depends on whether you have the in-house operator skill. We do; many agencies don't. Pick based on your actual team composition.
— our finance lead, after I showed her the recovered margin on the Q1 auditYou spent a quarter shipping internal tools and the business looks 14% more profitable on paper. The math is real. The thing I underestimated was how much you stopped thinking about the stack — the audit you used to run every six months, you stopped running because the stack stopped growing.
What we'd build first if starting today
The ordered path I'd give any agency standing in front of a €1,500+/month SaaS stack.
Week 1: audit. Pull every subscription. Categorize each by what it actually does (not what the vendor's marketing claims). Note the monthly cost. Total it. This step alone is the part most operators skip — the number is usually larger than they expect.
Week 2: pick the easiest cancellation. The single highest-cost subscription in Category 1 (AI-content wrapper) is usually the easiest first replacement. The script is shorter than the script for any other category and the SaaS's cost is high enough to justify the build immediately. Replacement build: one afternoon.
Weeks 3–4: cancel and ship. Run the new internal tool in parallel with the SaaS for two weeks. If the output is good, cancel the SaaS. The recovered budget covers the VPS for the next year, with change.
Months 2–6: one tool per month. Pick the next-highest-cost Category 1 or Category 2 subscription. Build, run in parallel, cancel. Do not try to ship more than one tool per month — the operator attention to QA each replacement matters more than the speed.
Month 6 audit. Pull the stack again. Compare to month-1 baseline. The number should be meaningfully smaller. The recovered margin should be visible on the P&L.
By month 6 at our pace, we'd cleared roughly €890/month from the books across the four businesses. The 11 internal tools that replaced them sit on one VPS and rarely need touching. The discipline of running this audit annually means the stack stops sprawling.
This isn't a story about AI making everything cheaper. It's a story about the SaaS industry's pricing model meeting an operator with a coding agent — the Claude Code-style leverage we've documented previously — and the operator winning because the underlying labor cost of scripting has dropped 10x in two years. The SaaS prices haven't dropped. The math has changed; most operators haven't run it yet.
Three more from the log.

Business automation isn't just cost savings — it's revenue
Workflow automation as a revenue driver, not a cost cutter. The taxonomy, the operator math, and the customer-facing AI that actually earns.
May 05, 2026 · 11 min
The agency business model is dead. Or is it?
Every six months LinkedIn announces the death of the agency. I've run one for five years — the future of digital agencies, honestly.
Oct 27, 2025 · 6 min
AEO playbook: getting cited by ChatGPT, Perplexity, Gemini
The 2026 answer engine optimization playbook. Six AEO levers, measured citation rates across ChatGPT and Perplexity, and the work that compounds.
May 15, 2026 · 11 min