How Pieter Levels Vibe-Coded Away ~$25,000 a Month in SaaS
On 9 September 2026, Pieter Levels posted the kind of screenshot the indie internet has trained itself to stop for: a cancel-subscription streak. One of the scene’s most visible founders said he had replaced about a dozen paid tools — ScrapingBee, a weather API, Mapbox, Google Vision, human moderators, the support desk — and put the savings at roughly $25,000 a month. The number is his. The energy is a cancel button pressed in public.
For a decade, Levels sold the idea that a small company could stay small. Nomad List and Remote OK were the proof that a laptop could be a firm. This week the proof was inverted. The products still run. Most of the vendors in the middle of the stack do not. He published the receipts for making the company lighter than the SaaS bill that used to hold it up.
This is not a guide to ripping out your own stack by Friday. It is the arc he told in public, from a year of coding on a VPS to a scraper that failed for weeks and then shipped, to a ledger of replacements he priced himself.
A year of coding on the server
The replacements did not arrive as a weekend rewrite. They sat on top of a habit he has described for almost a year: Claude Code on a Hetzner VPS. The laptop stays closed. The agent edits on the machine that already serves the sites. He has said it feels like living in the future, and that in twelve months it took production down for seconds, twice. That is his report, not a recommendation to copy the blast radius.
What he wants left on the card is short. Domains and outbound email at Cloudflare. Object storage on R2. Backups on Backblaze B2. The VPS fleet at Hetzner. xAI for the language-model work that now covers moderation, mail, and anything else he used to buy as a product. Everything else, in his telling, was a candidate for cancellation.
That is the AI shipping bargain taken all the way down the cost base. Building got cheap enough that a solo operator could look at a scraper invoice and treat it as a prompt. Attention is still the scarce thing on the demand side. On the supply side, the scarce thing became the willingness to own the ugly jobs vendors used to own.
26 July was the manifesto: cancel the subscriptions, vibe-code the jobs, keep domains, servers, storage, and AI APIs. 9 September is the receipts — the same leftover list, a scraper finally crossed off, and a founder-reported total of about $25,000 a month.
The scraper that would not die
Hotelist needs Google search results. Levels has said about 80% of his scraping is SERP data for that product. For weeks he tried to stop paying for it.
He tried OpenSERP. He tried residential proxies. He tried CAPTCHA solvers. The models kept telling him they could not make it work at the volume he needed. On 4 September he wrote the surrender note: he would keep paying ScrapingBee $99 a month. A good test, he said, of which services might survive once generation got this cheap. ScrapingBee was still on the “remaining SaaS” list, next to Cloudflare, Backblaze, Hetzner, and xAI.
Five days later the fail flipped to a succeed. With help from @javilopen and a circle of Spanish scraping contacts, he shipped his own scraper. That write-up names Playwright, a headful real Chrome on the VPS, a persistent browser context, residential proxies, and a crawl pace on the order of one request every thirty seconds. The 9 September replacement list names Patchright for the same job. Both are his words. This page does not pick one stack as exclusive.
The open-source headless path, he said, was worse than curl. Google spotted vanilla headless Chrome immediately. OpenSERP’s browser, in his telling, was blocked 100% of the time while plain curl was blocked about 7%. Residential IPs from at least one vendor arrived already tainted; he put the block rate around 60%. The thing that worked was the boring, slightly human version — a real browser, sitting there, clicking slowly, with proxies in the mix.
The 4 September post said he would keep paying $99 a month. The 9 September success post said he replaced a $249 a month plan with about $1 a month, measured in gigabytes of text. Success rate, his number: around 90%, in the same band as the product he cancelled. Both tiers are his, posted five days apart on a fail-then-succeed sequence. This article does not collapse them into one invoice.
That $249-to-$1 line is the story people will screenshot. It is not the whole ledger. The scraper was the last vendor that still looked like a hard product. The rest of the stack had already been quietly replaced.
The ledger
9 September is the receipts. July 26 was the manifesto. What follows is a walk through the replacements he has named, with the savings he attached. Every dollar is founder-reported. None of it is an audit. The named dollar lines sum to about $20,750 a month. Weather and Ghost have no price next to them. He rounds the pile to about $25,000.
| Cancelled | Runs now | Claimed monthly save |
|---|---|---|
| Weather API | Norway meteorology API | Not stated |
| Image resizing API | Sharp + Redis | ~$1,500 |
| Google Vision (NSFW) | NudeNet | ~$2,500 |
| Cloudflare Streaming | Nginx | ~$250 |
| API Flash | Own screenshots | ~$250 |
| New Relic + IPHub | error2telegram | ~$250 |
| Human moderators | xAI | ~$10,000 |
| IFTTT | Telegram | ~$100 |
| Photopea | Own editor | ~$100 |
| Mapbox | OpenFreeMaps | ~$500 |
| UptimeRobot | Uptime Kuma / Canary | ~$50 |
| Ghost | Own blog | Not stated |
| Human support | Featurebase + AI bot (still SaaS) | ~$5,000 |
| ScrapingBee / SerpAPI | Patchright / Playwright scraper | ~$250 |
All dollar figures are founder-reported by Levels. Named priced lines add to about $20,750 a month. Weather API and Ghost are unpriced. The headline is his “about $25,000,” not a sum this page can re-run.
The weather line is almost comic in its humility. A paid Weather API became a call to Norway’s public meteorology service. He did not name the vendor he left. An Image resizing API, a job that used to justify a bill, became Sharp in front of Redis. He has put that save around $1,500 a month. He did not name the old image API either.
NSFW filtering for Photo AI and related products used to go through Google Vision. He ran NudeNet himself — a local detector he has wired into his own APIs — and later leaned on xAI when he wanted a stricter check. He has put the Vision-shaped save around $2,500 a month. Cloudflare Streaming became Nginx. API Flash, the screenshot-as-a-service, became his own capture job. New Relic and IPHub collapsed into a Telegram error pipe he calls error2telegram. Those three he has priced in the $250-a-month band each.
The largest single cut is people. Human moderators, in his accounting, were about $10,000 a month. The work moved onto xAI — the same vendor he already wanted to keep. Support, once a human queue, became Featurebase plus a bot. He has called that about $5,000 saved. Featurebase is still a SaaS. The move is compress the stack toward infra and models, not pay zero.
IFTTT became Telegram. Photopea became a small editor of his own. Mapbox became OpenFreeMaps, about $500. UptimeRobot became Uptime Kuma and his own canary, about $50. Ghost, the CMS, became the blog he already knew how to ship — another unpriced line, like Weather.
Add the scraper. Add the odds and ends. The priced names come to about $20,750. He rounds the pile to about $25,000 a month. Treat both the way you treat any public revenue screenshot: founder-reported, useful as a shape, not a spreadsheet you can re-run.
The interesting pattern is not that every line found an open-source twin. Some did — NudeNet, Uptime Kuma, OpenFreeMaps, the Norway meteorology API. Some are just Nginx and Sharp, which were never SaaS, only jobs someone else was being paid to remember. The expensive lines are the ones that used to be labor: moderators, and support that still sits on a product bill plus a model. Those did not become a clever library. They became tokens, and in one case another SaaS.
What he still pays for
The leftover list is a statement of taste as much as architecture. He has said, plainly, that he does not want to become an ICANN registrar, run his own mail, keep a pile of drives at home, or stand up a GPU rack in a spare room. Cloudflare stays because domains and sending mail are jobs he does not want. R2 and B2 stay because object storage and off-site backups are cheaper to rent than to love. Hetzner stays because the VPS is the factory floor. xAI stays because the model layer is now the one vendor he is willing to concentrate on.
That is not “pay zero.” It is a smaller surface: registry, mail, bytes, compute, tokens — and a leftover product or two, Featurebase among them. The scrapers, the vision APIs, the uptime dashboards, the CMS were the ones the vibe-coding year made look optional. He will rent the settlement layer. He will not rent every job he can now describe to an agent sitting on the same box as production.
There is a limit he is not romantic about. Registrar, mail, home storage, home GPUs: those are the lines where “owning it” stops being craft and starts being a second company. He has said he does not want that company. The about-$25,000 claim is a claim about the middle of the stack, founder-reported, not an empty card.
The same trick, pointed the other way
The same trick points the other way. In a 21 July post he watched a customer vibe-code a clone of an app they liked so they would not have to keep paying — then only remit tokens to the model host. He cancelled vendors and noticed customers could cancel him. BigAI, he wrote that same week, is eating the old indie app layer, including on his own traffic.
The cost base is the craft
The useful part of the $25,000 headline is not the invitation to clone his VPS. Most makers do not have Hotelist’s SERP bill, or a decade of PHP on one server, or a public audience that will watch a cancel screenshot. The useful part is the settlement: after a few years of treating “can I build it?” as the whole game, the operators who stay are the ones who know what they actually pay for.
Levels’ version of staying is a short vendor list and a long list of jobs he now owns. Some of those jobs are a Norway weather endpoint. Some are a headful Chrome that only clicks every thirty seconds. Some are a model bill that replaced a room of moderators. The craft is no longer only the landing page. It is the cost base — what you rent, what you run, and what you refuse to become the registrar for.
A note on the numbers
The about-$25,000 monthly total, the $99 keep-paying line, the $249-to-about-$1 succeed line, the ~90% success rate, the ~$20,750 named-line sum, and every other figure in the ledger are Levels’ own reporting, as stated in his public posts. This article is commentary, not an audit. If a figure matters to you, read the September receipts and the scraper post from him.