#Webcomic
Technik, gezeichnet.
Software ist unsichtbar – das macht sie schwer zu erklären. In diesem Comic zeigt Patrick, ein ernster kleiner Systemarbeiter, Schritt für Schritt, was im Hintergrund passiert. Den Anfang macht diese Webseite selbst.
- Kapitel 1So funktioniert 2tiptop.de
- Kapitel 2So funktioniert fixoffer.de
- Baldwohnpilot24.de
- Baldrenoshot.de
- Bald123papierfrei.de
Kapitel 16 Bilder
So funktioniert 2tiptop.de
Was passiert eigentlich zwischen Klick und fertiger Seite? Patrick, als kleiner schwarzer Systemarbeiter gezeichnet, begleitet eine Anfrage durch die PHP-Webseite – vom Türsteher bis zur Antwort.
-
Der Türsteher
Jede Anfrage landet zuerst beim Apache-Webserver. Die .htaccess ist seine Gästeliste: Sie sperrt geheime Dateien wie .env, interne Ordner wie /inc/ und SQL-Dumps, leitet www und alte Adressen um und übersetzt schöne Adressen wie /blog/ki-agent in den eigentlichen PHP-Aufruf artikel.php?slug=ki-agent.
- .htaccess
-
Das Fundament
Bevor eine Seite etwas anzeigt, lädt sie die bootstrap.php. Die holt Passwörter und Zugangsdaten aus der .env, baut bei Bedarf die Verbindung zur MySQL-Datenbank auf (PDO, nach 3 Sekunden ist Schluss) und stellt kleine Helfer bereit – etwa e(), das jeden Text vor der Ausgabe „wäscht“, damit niemand fremden Code einschleusen kann.
- inc/bootstrap.php
- .env
-
Der Baukasten
Kopf, Navigation, Footer und das Grunddesign stehen nur einmal in der layout.php. Jede Unterseite ruft oben page_head() und unten page_foot() auf und füllt nur die Mitte. Ändert sich ein Menüpunkt – wie dieser Webcomic-Reiter –, ändert er sich auf allen Seiten gleichzeitig.
- inc/layout.php
-
Der Brunnen
Blogartikel liegen in der Datenbanktabelle blog_posts. artikel.php holt genau den Artikel zum Slug aus der Adresse – aber nur, wenn er veröffentlicht ist und sein Datum erreicht ist. Entwürfe bleiben unten im Brunnen und liefern eine 404. Der Treffer wird in HTML gegossen, mit Lesezeit, Datum und Daten für Google.
- blog/artikel.php
- blog/index.php
-
Der Briefprüfer
Schickt jemand das Kontaktformular ab, prüft PHP jede Nachricht, bevor sie rausgeht: Ein unsichtbares Honigtopf-Feld entlarvt Bots, ein signierter Zeitstempel (Token) verhindert Fälschungen und zu schnelles Absenden, mehr als fünf Nachrichten pro Stunde werden gebremst. Erst dann verschickt smtp.php die Mail – ganz ohne Cookies oder Session.
- inc/contact-form.php
- inc/smtp.php
- assets/js/kontakt.js
-
Die Antwort
Am Ende schickt der Server ein fertiges HTML-Dokument zurück – CSS steckt direkt drin, Skripte und Bilder kommen vom eigenen Server und werden lange zwischengespeichert. Keine Cookies, kein Tracking, keine fremden Dienste. Darum ist die Seite schnell und die Datenschutzerklärung kurz.
- inc/layout.php
- .htaccess
Kapitel 28 Bilder
So funktioniert fixoffer.de
Malermeister Max spricht nach dem Kundentermin eine WhatsApp-Sprachnachricht ein – und bekommt wenige Minuten später ein Angebots-PDF zurück, kalkuliert mit seinen eigenen Leistungen und Preisen. Patrick versteht die Sprache, sein kantiger Kollege Robbi ist der Einzige, der rechnen darf.
-
Einlernen: der eigene Katalog
Einmalig richtet Max fixoffer.de ein: Gewerk, Stundensatz, Aufschläge, Mehrwertsteuer, WhatsApp-Nummer. Dann lädt er mindestens zehn alte Angebote hoch. Die KI liest sie wörtlich ab – sie darf nichts erfinden oder umrechnen. PHP rechnet jede Zeile nach; was nicht aufgeht, wird markiert statt „korrigiert“. Max bestätigt die Positionen, und daraus entsteht sein eigener Leistungskatalog. Aus Preis und Stundensatz rechnet das System zurück, wie viele Minuten er pro Einheit braucht. Kein anderer Betrieb sieht oder beeinflusst diese Preise.
- PHP
- MariaDB
- Claude
-
Einsprechen
Nach dem Termin schickt Max eine ganz normale WhatsApp-Sprachnachricht an den fixoffer-Bot. Meta leitet sie über die WhatsApp Cloud API an bot.fixoffer.de weiter – einen Angebotsbot in Python (FastAPI), der in Docker auf einem eigenen Server läuft. Max braucht keine App und kein Formular.
- WhatsApp Cloud API
- Python · FastAPI
- Docker
-
Zuhören
Ein Transkriptionsdienst macht aus der Sprachnachricht Text. Damit Fachbegriffe richtig ankommen, bekommt er die häufigsten Leistungen aus Max’ Katalog als Hinweise mit. Die Sprachnachricht selbst wird nach einer Frist (Standard 30 Tage) gelöscht.
- Transkription
- Fachbegriff-Hinweise
-
Suchen und zuordnen
Aus dem Katalog werden bis zu 60 passende Leistungen herausgesucht. Erst dann kommt die KI ins Spiel: Claude wählt aus genau dieser Liste die richtigen Positionen und Mengen und antwortet in einem festen JSON-Schema. Positionen, die nicht auf der Liste stehen, werden verworfen – erfundene Leistungen landen nie im Angebot.
- Claude (Anthropic)
- JSON-Schema
-
Rechnen: nur der Code
Die wichtigste Regel: Die KI rechnet nie. Nennt Max Raummaße wie „Wohnzimmer 4 mal 5 Meter“, berechnet Python Wand-, Decken- und Bodenfläche. Jeder Preis entsteht in Python nach der Formel des Betriebs – Lohn plus Material plus Aufschläge, gerundet auf den Cent. Unplausible Preise werden markiert. Claude sieht und erzeugt keine einzige Zahl im Angebot.
- Python
- Kalkulationsformel des Betriebs
-
Rückfragen und Arbeitsweise
Fehlt etwas Wichtiges, fragt der Bot gezielt nach – per Button oder Auswahlliste, höchstens drei Runden. Auch der Kunde wird erkannt, neu angelegt oder nachgefragt („Müller in Mannheim oder in Heidelberg?“). Was laut „Meine Arbeitsweise“ bei Max immer dazugehört, kommt automatisch ins Angebot. Vor dem PDF fragt der Bot einmal: „Fehlt noch etwas?“
- WhatsApp-Buttons
- Meine Arbeitsweise
-
Das PDF entsteht
Claude schreibt Betreff, Einleitung und Schlusstext im Stil des Betriebs – ohne Zahlen. Python liefert die Positionen und Summen. WeasyPrint setzt beides zu einem Angebots-PDF mit Logo, Netto, MwSt. und Brutto, angelehnt an DIN 5008. Per FTPS lädt der Bot das PDF auf den Webspace, wo es im Dashboard auf fixoffer.de zum Download bereitliegt.
- WeasyPrint
- FTPS
- PHP-Dashboard
-
Freigeben – und der Bot lernt mit
Max bekommt den Entwurf mit drei Buttons: Freigeben vergibt die Angebotsnummer, Ändern („Boden doch sechs Quadratmeter“) erzeugt eine neue Version, Verwerfen löscht den Entwurf. Verschickt wird das Angebot von Max selbst – kein Angebot geht ohne ihn raus. Fehlt eine Leistung im Katalog, legt der Bot sie mit Einheit und Preis an; „Merk dir das“ landet als Regel in „Meine Arbeitsweise“.
- WhatsApp-Buttons
- Versionen
- Meine Arbeitsweise
Technik in Kürze
- Website, Einrichtung, Dashboard
- PHP, MariaDB, HTML/CSS/JS ohne Build-Schritt (All-Inkl)
- Angebotsbot
- Python (FastAPI) in Docker auf einem VPS – bot.fixoffer.de
- Chat
- WhatsApp Cloud API (Meta)
- Sprache zu Text
- Transkriptionsdienst mit Fachbegriff-Hinweisen aus dem Katalog
- KI
- Claude (Anthropic) mit festem JSON-Schema für jede Antwort
- WeasyPrint, an DIN 5008 angelehnt
- Bezahlung
- Stripe
- Übergabe der PDFs
- Upload per FTPS vom Bot auf den Webspace
Die Grundregeln
- Die KI rechnet nie – Preise, Flächen und Summen rechnet der Code.
- Nur eigene Daten – jeder Betrieb hat seinen eigenen Katalog.
- Nichts wird erfunden – beim Einlesen wird nur abgelesen und nachgerechnet.
- Der Mensch entscheidet – kein Angebot ohne Freigabe, versendet vom Handwerker selbst.
- Datensparsam – Sprachnachrichten werden nach 30 Tagen gelöscht.
DemnächstWeitere Kapitel
Als Nächstes: die Projekte
Jedes Projekt bekommt ein eigenes Kapitel – mit dem Problem, der Lösung und dem, was technisch dahintersteckt.
Bald
wohnpilot24.deWie ein Objekt einmal angelegt wird und daraus Exposé, Website-Eintrag und Portal-Inserat entstehen.
Bald
renoshot.deWie aus einem Handyfoto vom Garten ein fotorealistisches Nachher-Bild wird.
Bald
123papierfrei.deWie aus Regalmetern Papier durchsuchbare PDFs werden – offline, ohne Cloud.