What I automated

seitenhebel.de

Audits a small business website in sixty seconds and rebuilds it: crawl, scoring, revenue estimate, the whole report.

580 commits · first 25 Feb 2026 · last 21 Oct 2026 · 238 days · seitenhebel.de

commits per week, counted from the repository when this page was last built

The seitenhebel.de front page on a phone: your website loses customers, in sixty seconds we show you where

A website audit used to take a day

Small businesses in the German-speaking market have websites that lose customers in ways their owners cannot see: slow, unreadable, no clear next step. Auditing one by hand took me a day, and the report was the easy part; the rebuild was the work.

The idea was to make the audit free and instant, so that the conversation starts with a measured score rather than an opinion, and to make the rebuild a pipeline rather than a project.

First commit

34295bc 25 Feb 2026

The first day added the analysis pipeline with token counting and cost tracking built in. Before it had a name, before it had a landing page, it knew what every run cost. That habit is the reason I can quote numbers on this site.

A report for every job

62780f6 4 Jun 2026

In June every analysis started producing a consultancy-style PDF automatically: scores, findings, a prioritised list. The report is what a business owner forwards to a colleague, and it turned the analyser from a tool into a first conversation.

The example on the front page: a dated bakery website with findings marked, and a score of 38 rising to 86
The example on the front page: a fictional bakery site with the findings pinned to the page, and the score today against the score possible.

The name arrives

922eed4 6 Jun 2026

For three months the product was called what it did. This commit rebranded the customer-facing side to seitenhebel, a lever for pages, and wrote down why. The engine kept its working name; only the door got the sign.

An honest message when a site cannot be reached

6c18c89 13 Jun 2026

Some sites block crawlers, some are down. The analyser used to fail silently or, worse, score a blank page. From here on the customer gets a plain message: we could not reach your site, here is why, here is what to do. A refusal is better than a made-up score.

The free check on a phone: a field for the address and a button
The free check. One field, one button, no account, no card.

Security tests before customers

7e10979 14 Jun 2026

A tool that fetches arbitrary URLs on request is an invitation. This commit added tests for server-side request forgery, mass assignment, and access to other people’s jobs. They run on every change, and they were written before the first paying customer, not after the first incident.

288 alerts a day were possible

3929cef 5 Aug 2026

The health watchdog could push an alert every five minutes, forever, for the same outage. Now it sends one per episode: one when it breaks, one when it recovers. An alert channel is only useful while people still read it.

The partner page on a desktop screen
The partner page. Agencies run the audit under their own name; the rebuild stays with me.

Every failed job left a browser running

e64a477 302647c 16 Aug 2026

The whole extraction sat between opening a browser and closing it again, with nothing to guarantee the close. Anything that threw in between skipped it, and things do throw: other people’s websites are other people’s websites. Measured rather than assumed — one failure in the middle of extraction left four browser processes behind. After the fix, none.

On a machine that runs jobs one after another, that accumulates until a perfectly healthy job is slow. The same day, one level up, the same shape: on a rate limit the retry loop repeated immediately, so all three attempts were spent within seconds — at exactly the moment when waiting was the only thing that would have helped.

What it does tonight

The free check runs on demand for anyone who types an address. The blog is written by the factory, one article per topic that a business owner would search for. The rebuild is still a conversation, which is where I want it.

Runs on its own

  • the crawl, the scoring, the revenue estimate, the PDF report
  • the honest refusal when a site cannot be reached
  • the blog: topics, research, drafts, images, pushed by the factory
  • a health watchdog with one alert per episode

Stays with me

  • the rebuild offer and the rebuild itself
  • partner conversations
  • every article’s release

Per-analysis cost is tracked inside the tool since the first day; it is not restated here because it changes with the models used.

Where this goes

Two things are measured next: how many free checks turn into a conversation, and whether the machine-readable version of the site that went up in September changes who cites it. Both are counts I do not have yet.