Cancelling small SaaS. Here's what replaced them.
A cookie banner, a chat widget, a scheduler, analytics. Each was a vendor dependency. Each is now a file in my repo.
This morning I deleted CookieYes from production. Tiny site, tiny subscription. Ten bucks a month. Not about the price. A cookie banner (something that does almost nothing) was a vendor dependency. That's just dumb.
Over the past few months I've quietly replaced a stack of small SaaS with code I wrote in an afternoon. Each swap kills a subscription, removes a vendor, and leaves me with something I understand and own.
1. CookieYes → 6kb of vanilla JS
Cost: $10–30/month, plus a CDN dependency on cdn-cookieyes.com.
What it does: Shows a "we use cookies" banner. Geo-detects EU/CA. Blocks third-party scripts until consent. Logs consent for audits.
What I built: A 500-line vanilla JS file. GDPR + CCPA aware. Stores consent in localStorage. Rewrites <script type="text/plain" data-consent="..."> tags after opt-in. Floating "Privacy" button to revisit. About 6kb minified.
One prompt. Hosted as a static file on the API server I already pay for. Swapped the CookieYes script tag for <script src="https://api.mysite.com/consent.js">. Done.
Time: ~30 minutes. Subscription dead.
2. Intercom → a simpler chat
Cost: Intercom starts at $74/month and climbs from there.
What it does: Floating chat in the corner. Support conversations. Stored history. Drip campaigns. CRM. The whole combine harvester.
What we did: Replaced it with a small embedded chat (Ladek AI in our case) for a fraction of the cost. Honestly, on most marketing sites a "leave a message" form wired to a Slack channel does the job. Five lines of HTML and a fetch().
Same lesson every time: find the 5% of the SaaS you actually use, build that, drop the other 95%.
3. Mixpanel / PostHog / Amplitude → self-hosted Matomo
Cost: $20 to $150+ per month depending on tier and event volume.
What it does: Pageviews, events, funnels, retention.
What I run: Self-hosted Matomo on a $5 VPS. Running for years. Covers ~80% of what Mixpanel does, gives me SQL access, and the data stays mine.
Setup used to be a painful evening: Nginx config, cron jobs, upgrade scripts. With Claude it's a five-minute conversation.
4. Calendly → a Next.js page with a date picker
Cost: $15–30/month for teams.
What it does: Lets people book time on your calendar.
What I built: A booking page. A date picker (react-day-picker). Availability pulled from Google Calendar. Confirmation email via AWS SES. About 200 lines.
Canonical "AI is great at this" case. Describe the flow, ask for the boilerplate, paste in your Google Calendar credentials. A Calendly clone built around your one specific scenario.
5. Zapier → a folder of webhook handlers
Cost: $20–100/month, more under real automation load.
What it does: When X happens in service A, do Y in service B.
What I write instead: Vercel Functions or AWS Lambdas. Each takes a webhook and does exactly what I need. 30–50 lines each. They live in a small repo. They don't break when a Zap hits a limit or when Zapier rewrites their pricing page for the third time.
Modern hosting (Vercel, Cloudflare Workers) has a generous free tier for this. You're trading a $30 subscription and a UI for a folder of TypeScript files. Which, if you're a developer, is what you wanted anyway.
When NOT to do this
Don't roll your own Stripe. Don't roll your own database. Don't roll your own anything where:
- The failure mode is "you lost money" or "you leaked customer data"
- The compliance surface is huge (HIPAA, PCI, SOX)
- The vendor's moat is real: Stripe's fraud detection, AWS's reliability, Cloudflare's DDoS shield
- Hours to build vastly exceed hours of pain per year saved
Build vs. buy used to lean toward buy because the hidden cost of small services is high: debugging, maintenance, edge cases, weird browser bugs. That's what cheap SaaS charges you to absorb.
AI tools didn't make building free. They collapsed the hidden cost. The 80% case of a "small" SaaS (some HTML/JS, a bit of storage, a URL) is now 30 minutes, not a weekend.
The list of subscriptions on your card is a backlog.
The five-question test
When I look at a $X/month subscription and ask "should I just build this?", I run through this:
- What does it actually do, in one sentence? If I can't compress it, I probably need the SaaS.
- What's the 5% of features I use? Pricing tiers exist because most people only touch the basics. Build the basics.
- What's the failure mode? If it goes down for an hour, what breaks? If "nothing critical", I can probably self-host.
- Whose data is it? If it's mine, I want it on my server. SaaS lock-in is mostly your data sitting in their database.
- Hours to MVP? With current tools, I budget 1–4 hours for the kind of thing above. If it's days, the SaaS wins.
I'm not on a crusade. I still pay for things I use heavily and trust: GitHub, AWS, Vercel, a few niche tools. But for the long tail of $10–50/month subscriptions, the math has changed.
Go work through your card statement.