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

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 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.

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.

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.