I Replaced 5 SaaS Tools With One Stack I Own
I was paying $1,200/month for tools that barely talked to each other. Here's how I replaced 5 SaaS tools with one self-hosted stack.
It was 11 PM on a Tuesday when Zapier broke again.
A client had booked a discovery call through Calendly, but the webhook to HubSpot silently failed. No CRM contact created. No notification. The lead sat in limbo for three days before I noticed — by which point they’d gone with a competitor.
That was the moment I decided I was done being the human glue between five SaaS tools that refused to talk to each other.
My monthly stack at the time: HubSpot CRM ($400), WordPress hosting ($150), Calendly Pro ($36), Zapier Professional ($100), Google Analytics 4 (free, but paid with my visitors’ data). Total: $686/month — $8,232/year. According to Productiv’s 2025 SaaS report, the average small business uses over 250 SaaS apps and wastes nearly half their software spend. I was determined not to be that statistic.
So I replaced all five. Here’s what I built, what it cost, and what happened.
Tool #1: HubSpot CRM → Twenty CRM
What I was paying
HubSpot Starter at $400/month for 4 seats. Even on the Starter tier, I was bumping into limitations — no custom reporting, basic automation, and the constant upsell nudges to upgrade to Professional. HubSpot’s own pricing page makes it look reasonable until you start adding seats and features.
What I switched to
Twenty CRM, self-hosted on a Hetzner VPS. Unlimited users. Zero seat fees. Full GraphQL API. Custom objects and fields.
Twenty is an open-source CRM that looks like it was designed in 2025, not 2005. The UI is clean and fast. The data model is built on PostgreSQL, which means I can query my CRM data directly with SQL if I need to. No export requests, no API rate limits, no artificial restrictions.
The migration
Two days total. I exported everything from HubSpot — contacts, companies, deals, notes — and imported it into Twenty. The hardest part was mapping custom fields, and even that was straightforward because Twenty’s custom objects are flexible enough to match whatever HubSpot schema you had.
Monthly cost: $0 (runs on existing infrastructure)
Tool #2: WordPress → Astro + Cloudflare Pages
Before: Managed WordPress hosting at $150/month. A theme that looked fine but loaded in 3+ seconds. A pile of plugins (SEO, forms, caching, security) that conflicted with each other every other update. A developer I paid $500/month to keep it all running.
After: An Astro static site deployed on Cloudflare Pages. Lighthouse score: 100. Load time: under 400ms. Hosting cost: free.
I’m not exaggerating about the hosting cost. Cloudflare Pages is genuinely free — unlimited bandwidth, unlimited requests, automatic SSL, global edge network. The site builds from Markdown and MDX files, which means I write content in a text editor and push to Git. No WordPress admin panel. No plugin conflicts. No security patches.
For content management, I use Strapi as a headless CMS. The team edits content in a visual interface, and deploys trigger a rebuild on Cloudflare. Best of both worlds: the speed of static files and the flexibility of a CMS.
I wrote more about this approach in how I achieve 100 Lighthouse scores.
Monthly cost: ~$15 (Strapi hosting on the VPS)
Tool #3: Calendly → Birbol Scheduler
Before: Calendly Pro at $36/month. It worked well enough for booking, but every new booking was an island — it didn’t know my CRM existed. I had a Zapier workflow that tried to create HubSpot contacts from Calendly bookings, but it broke constantly and missed edge cases.
After: Birbol’s scheduling system, built on Go, running on the same VPS. When someone books a call, the scheduler automatically creates a contact in Twenty CRM, logs the meeting, and tracks the entire journey from “booked a call” to “became a client.”
No Zapier in between. No webhook that silently fails. The scheduler and the CRM share the same database server, and the integration is native — not bolted on.
The booking widget embeds on the Astro site with a single script tag. It matches the site’s design. No “Powered by Calendly” branding. No redirecting visitors to calendly.com.
Monthly cost: $0 (runs on existing infrastructure)
Tool #4: Zapier → Claude MCP
What I was paying
Zapier Professional at $100/month. I had 15 active Zaps connecting HubSpot to Calendly, HubSpot to Google Sheets, Calendly to email, and various other duct-tape automations. Half of them broke every quarter when one of the connected services updated their API. Workato’s integration report found that the average business deals with 12+ broken automations per quarter — I was right on track.
What I switched to
Claude AI connected to my entire stack via MCP (Model Context Protocol) — a standardized way for AI to directly interact with your CRM, CMS, scheduler, and analytics. Instead of rigid “if this, then that” workflows, I have an AI that understands context and can chain actions together.
The difference is fundamental: Zapier connects two tools with a fixed rule. Claude can query my CRM, analyze the data, and take action — all in one conversation. When my needs change, I don’t rebuild 15 Zaps. I just ask Claude differently.
Monthly cost: $0 (Claude API usage is minimal for business queries)
Tool #5: Google Analytics → PostHog
Before: Google Analytics 4. The price was right ($0), but the cost was my visitors’ privacy and my sanity. GA4’s interface is a maze of menus and dimensions that seem designed to make simple questions difficult. And the data? Google uses it to train their ad targeting. Your visitors’ browsing data feeds the machine.
After: PostHog, self-hosted. Privacy-focused analytics that gives me the metrics I actually care about — page views, referral sources, conversion funnels — without sending my visitors’ data to an ad company.
PostHog’s self-hosted option runs on the same VPS. The data stays on my server. No cookie banners needed because there are no third-party cookies. The interface is clean and actually makes sense — I can set up a funnel analysis in minutes instead of the hour it takes in GA4.
And because PostHog is open-source, I’m not one pricing change away from losing my analytics history.
Monthly cost: $0 (self-hosted, within free tier limits)
The New Stack: Total Cost
Here’s what the new monthly bill looks like — the entire stack runs on a single $50/month Hetzner VPS, with Strapi adding ~$15 and Claude API usage adding ~$5:
- Twenty CRM — $0 (self-hosted, unlimited users)
- Astro + Cloudflare Pages — $0 (free hosting, global CDN)
- Strapi CMS — ~$15 (runs on existing VPS)
- Birbol Scheduler — $0 (self-hosted)
- Claude MCP — ~$5 (API usage for business queries)
- PostHog — $0 (self-hosted)
- Hetzner VPS — $50 (hosts everything above)
New total: $70/month ($840/year)
That’s a drop from $686/month to $70/month — a 90% reduction. Annual savings: $7,392. And that’s not counting the WordPress developer I was paying $500/month — add that back in and I’m saving $13,392/year.
What Would Your Stack Replacement Save?
Adjust each tool cost to match what you're currently paying.
With Birbol ($599/mo)
saved per year
Year 1 net
$0
after setup fee
Monthly savings
$587
per month
The Migration Timeline
I didn’t do this overnight. Here’s the honest timeline:
Week 1: CRM migration. Exported HubSpot data, cleaned it up, imported into Twenty. Tested every contact, company, and deal.
Week 2: Website rebuild. Designed and built the Astro site, migrated blog content from WordPress, deployed to Cloudflare Pages.
Week 3: Scheduler setup and integration. Configured booking types, availability rules, and the CRM integration. Killed off Calendly.
Week 4: Analytics and AI. Set up PostHog, configured MCP endpoints for Claude, dismantled all Zapier workflows. Tested everything end to end.
Four weeks, working on it part-time alongside my regular client work. If I’d done it full-time, it would have been two weeks.
What I Didn’t Expect
The cost savings were the reason I started this project. But the unexpected benefits are what made me never look back.
Data ownership. All my business data — contacts, analytics, bookings, content — lives on a server I control. No vendor can hold it hostage. No terms of service change can cut off my access. If I want to switch tools again, I export a PostgreSQL dump and I’m done.
No vendor lock-in. Every component is replaceable. If a better CRM than Twenty comes along, I swap it. If Cloudflare changes their free tier, I deploy to Netlify or Vercel. Nothing is entangled. A Blissfully survey found that vendor lock-in is the #1 concern for businesses evaluating SaaS — and the hardest to unwind once you’re in.
AI-native from day one. Because I own the entire stack, Claude MCP can access everything directly. No API rate limits from a SaaS vendor. No middleware. No Zapier tax. The AI integration is a first-class feature, not an afterthought bolted on through a marketplace integration.
Speed. My website loads in under 400ms. My CRM doesn’t lag because it’s not rendering a React app through three layers of SaaS infrastructure. My scheduler doesn’t redirect users to a third-party domain. Everything is fast because everything is optimized for my specific use case.
Dogfooding: This Site Runs on the Stack
birbol.com is built with Astro, deployed on Cloudflare Pages, managed through Strapi, tracked with PostHog, and backed by Twenty CRM. When you book a discovery call on this site, the scheduler creates your contact in Twenty, logs the meeting, and kicks off the pipeline.
I don’t recommend tools I don’t use. Every recommendation on this site comes from running it myself first.
How Bloated Is Your SaaS Stack?
Is Your SaaS Stack Due for Consolidation?
Answer 6 quick questions to see how your tool sprawl compares.
Question 1 of 6
How many separate SaaS tools does your firm use?
Is This For Everyone?
No. If you have no technical background and no interest in server management, running your own stack isn’t for you. That’s exactly why Birbol exists — I manage the entire stack for clients so they get the benefits without the ops work.
But if you’re a technical founder, an agency, or a small business with a developer on staff — this approach is worth serious consideration. The tools are mature. The setup is documented. And the savings compound every single month. Hetzner’s pricing hasn’t changed in two years — try saying that about any SaaS vendor.
The Bottom Line
I replaced five SaaS tools with one stack I own. I went from $686/month to $70/month. I went from duct-taping tools together with Zapier to having an AI that natively understands my entire business.
The SaaS model works for the SaaS companies. The question is whether it works for you.
Curious how your SaaS bill compares? Check the full breakdown on the SaaS stack comparison page — or jump straight to pricing to see what the managed version costs.