Zero CMS: Updating the company website from WhatsApp
- Astro
- Hetzner
- LLM
- Node.js/Python
Updating a company website should not require a control panel, a seven-step ritual, or the moon in the correct phase. The flow here is simple: send a photo on WhatsApp, add two lines, the website updates.
The problem: The control panel is the bottleneck
For a small business, time is the scarcest resource. Telling a craftsman, a restaurant owner, or a small operator to “log into the CMS, upload the image, crop it, fill in the alt tag, write the SEO text, and hit publish” means one thing: the website will not be updated.
The usual answer is a small apartment block of tools: SaaS subscriptions to make two apps talk, maintenance, and plugins stacked on more plugins. All of that to move a photo and two lines from a phone to a website.
The goal is to remove friction for the person doing the work, and remove rent from the tools in the middle. Pay for infrastructure, not unnecessary steps.
The solution: WhatsApp as the only CMS
The only “control panel” left is the app already open all day: WhatsApp.
- The trigger: The entrepreneur takes a photo of a newly completed job or product and sends it to a dedicated WhatsApp number, adding a rough description. The human work ends here.
- The webhook: The message triggers a webhook that wakes up our custom script, hosted on a very small proprietary virtual machine.
- Image processing: The script takes the photo, resizes and compresses it for the web (e.g., in WebP format), optimizing it at the source so it doesn’t weigh down the final site’s loading.
- Low-cost artificial intelligence: The rough description is sent via API to an inexpensive language model. No magic: it tidies the text, extracts a title and tags, and returns structured data.
- Generation and deployment: The script takes the language model’s response and the WebP image, compiles a perfect new
.md(Markdown) file complete with frontmatter, and updates a site built with Astro. From there, the pipeline kicks in and updates the static site in production in a few seconds.
The Anti-SaaS approach: Pay for silicon, not buttons
This system follows one rule: pay for hardware, not colourful dashboard logos.
Instead of spending €30-50 per month on Zapier or Make just to make two apps talk, or stacking expensive CMS plugins, the cost stays close to the bone:
- Infrastructure: A micro-VM on Hetzner (about €4 per month). It’s the only fixed cost and acts as the “brain” for the script and webhooks.
- AI calls: A few thousandths of a cent per call (via API) for the structural formatting of text. You only pay for actual consumption, not overpriced monthly subscriptions.
- Site hosting: Completely free on edge networks (like Cloudflare Pages), leveraging Astro’s static and ultra-light architecture.
For a single use case, a purpose-built script remains the right choice. If the integrations grow over time, the same micro-VM can host self-hosted n8n, an open-source visual automation platform with no subscriptions: for one automation, though, it’s overkill.
No “vendor lock-in”, no third-party platform that can decide to raise prices from one year to the next or impose artificial limits on monthly tasks.
The static architecture behind this site is the same one described in A (nearly) zero-cost showcase website: no server or database, free hosting and near-zero maintenance.
The final balance: Costs and complexity compared
An operation that took 20 minutes on a computer, and was therefore always postponed, becomes a 10-second action on a smartphone.
How much does that change compared to standard market solutions? Let’s do the math.
The traditional approach glues together a classic CMS, commercial automation platforms, and ongoing maintenance. Here is what happens to fixed costs:
| Cost item | “Anti-SaaS” Solution (Ours) | Traditional Approach (SaaS/CMS) |
|---|---|---|
| Site Hosting | €0 (Cloudflare Pages on free plan) | €120 - €300 (Traditional server for CMS) |
| Automation Platform | €48 (Hetzner micro-VM at €4/month, reusable) | €360 - €720 (Average Zapier/Make plan) |
| Data Processing (LLM) | ~€5 (consumption-based API) | Included in SaaS (but with task limits) |
| Estimated Annual Total | ~€53 | From €680 to €1500+ |
Infrastructure costs collapse and become predictable. The system runs on a handful of euros per month: silicon, not brand.
The paradox of competence
The Anti-SaaS approach is not more trivial. Complexity does not disappear: it moves away from the person doing the work and into code, where it can be controlled. The difference is where the money and time go:
- The SaaS model: hours spent on triggers, plugins, screens to configure, and instructions on how not to break anything. You pay to live inside a fragile recurring ecosystem.
- The custom model: technical competence concentrated upfront. Small code, straight to the point, AI-assisted where it genuinely accelerates. Fewer interfaces, fewer dependencies, less friction.
On one side, you pay for a dependency that keeps billing. On the other, you build a small machine you own, with almost invisible maintenance costs and no premium button left to unlock.
The best technology is the one that disappears.
Got a similar problem?
If this made you think of a task you postpone, repeat, chase, or double-check, send it over. Sometimes removing one step changes the whole day.