Automation

Von der Sprachnotiz auf der Baustelle zum Rechnungsposten

Ein Elektriker diktiert, was er verbaut hat, daraus werden Rechnungsposten. In der Gegenprobe trafen feste Regeln 17 von 24 Posten und erfanden keinen; llama3.2 traf 13 und erfand zehn.

Andreas Neugebauer10 Min. Lesezeit

Stand
06. Oktober 2026
Vom Termin zum Angebot
Teilen

Am Abend sitzt der Geselle im Transporter und tippt aus dem Gedächtnis, was er heute verbaut hat. Oder er tippt es nicht, und am Freitag fragt das Büro nach. Diktiert ist es in einer halben Minute: „Zweiundzwanzig Meter NYM, sechs Dosen, vier Steckdosen, nein, fünf.“ Wir bauen den Weg von diesem Diktat zu Rechnungsposten aus der eigenen Artikelliste, ohne Cloud, und messen, wie oft er stimmt. Am Ende steht ein Entwurf mit einer Prüfliste darunter, nie eine Rechnung.

Was du danach in der Hand hast

  • eine Artikel- und Stundensatzliste als CSV, in der steht, wie die Teile auf der Baustelle heißen
  • ein Skript, das aus dem Rohtext eines Diktats Posten mit Menge und Preis macht, regelbasiert und ohne Modell
  • dieselbe Aufgabe mit llama3.2 zum Vergleich, und die Messung beider an vierzehn Diktaten
  • eine Prüfliste „vor dem Übernehmen ansehen“, die das Skript unter jeden Entwurf schreibt
  • einen Ordnerlauf, der neben jede Aufnahme einen Entwurf legt

Was danach nicht geht: eine Rechnung schreiben, Zuschläge berechnen, Dialekt und Baustellenlärm zuverlässig verstehen. Dazu unten mehr.

Voraussetzungen

  • Den ersten Schritt aus dem Beitrag „Sprachnotiz in Text“: faster-whisper auf dem eigenen Rechner (geprüft mit 1.2.1, Modell small). Der Beitrag liegt unter https://ernsthaft.ai/de/automation/sprachnotiz-in-text
  • Python 3.12 (geprüft mit 3.12.2). Regeln, Entwurf und Messung brauchen nur die Standardbibliothek
  • Für den Vergleich mit einem Modell: Ollama mit llama3.2 (3B), geprüft mit Ollama 0.32.15. Für den Betrieb ist es nicht nötig, warum, steht in der Messung
  • Eure Artikelliste mit Preisen. Ein Export aus dem Faktura-Programm reicht als Anfang
  • Kosten: keine. Rechenzeit: rund zwei Sekunden Spracherkennung für ein Diktat von 13 Sekunden, die Regeln brauchen für alle vierzehn Diktate zusammen keine Zehntelsekunde

Der Aufbau

  1. 01

    Aufnehmen

    Sprachmemo auf dem Handy, ein Diktat je Baustelle und Tag. Zuerst Kunde und Ort, dann Material mit Mengen, dann Stunden und wer sie gearbeitet hat. Mehr Vorgabe braucht es nicht, und mehr hält auf der Baustelle auch niemand ein.

  2. 02

    Aufnahme wird Rohtext

    transkribiere.py ist der Schritt 1 aus dem Sprachnotiz-Beitrag: faster-whisper, lokal, Ergebnis als .roh.txt neben der Aufnahme. Den Aufräumschritt von dort lassen wir weg. Ein Modell, das „vier, nein, fünf“ glättet, nimmt der Prüfliste die Stelle, an der sie ansetzt.

  3. 03

    Rohtext wird Entwurf

    posten.py ersetzt bekannte Hörfehler, sucht Mengen und Artikel und rechnet mit den Preisen aus artikelliste.csv. Was keinen Posten ergibt, wird nicht verworfen, sondern steht unter „nicht verwendet“.

  4. 04

    Ein Mensch sieht hin

    Unter jedem Entwurf steht „Vor dem Übernehmen ansehen“ mit offenen Mengen, Posten ohne Preis, Korrekturen, zusammengezählten Angaben und dem Rest des Diktats. Erst danach geht etwas ins Faktura-Programm, von Hand oder über die CSV.

Was wir weglassen: Rechnungsnummer, Umsatzsteuer, Pflichtangaben und Versand. Das macht das Faktura-Programm, und es macht es besser als ein Skript. Ebenso fehlen Aufmaß und Fotos; wer beides braucht, hängt sie an den Auftrag, nicht an das Diktat.

Was die Spracherkennung aus einem Baustellendiktat macht

Wir haben vierzehn Diktate eines erfundenen Elektrobetriebs geschrieben, mit den Stolpersteinen echter Diktate: „zwei Komma fünf Meter“, „anderthalb Stunden“, „ne Handvoll Wagos“, „vier Steckdosen, nein, fünf“, eine Kernbohrung, die in der Liste keinen Preis hat, Hausnummern und B16 als Zahlen, die keine Mengen sind, und „keine Anfahrt“. Gesprochen hat sie die Systemstimme des Mac, abwechselnd Anna und Reed. Erkannt hat sie faster-whisper mit dem Modell small, am 4. Oktober 2026. Zwei Rohtexte:

A1  Baustelle Hofmann in der Golding-Küche. Wir haben 22 Meter Nürnum 3 mal 1,5
    verlegt, 6 Schalterdosen gesetzt, dann 4 Steckdosen, nein, 5 Steckdosen und
    2 Wechselschalter. Ich war 4,5 Stunden da.

B1  Deckerei Siedelmeier, Backstube, neuen 4 und 2 Automaten D16 eingebaut.
    Kabel, 12 Meter 5 Artiges. 3 Stunden, real in 1 Stunde.

Die Zahlen sind das Unproblematische. „Viereinhalb“ wird „4,5“, „acht Meter fünfzig“ wird „8,5 Meter“, „anderthalb“ bleibt stehen. Schwierig sind die Wörter, die kein Wörterbuch kennt. Aus „NYM“ wurde „Nürnum“ und „Nymn“, aus „Wagos“ „Vargos“, „Vagus“ und „Vago-Klemmen“, aus „FI“ einmal „Vinoi“ und einmal die Zahl 4. Aus „Lehrling eine Stunde“ wurde „real in 1 Stunde“. Und „B sechzehn“ hat Whisper in beiden Diktaten, in denen es vorkam, als „D16“ gehört. Einen D16-Automaten gibt es wirklich, er gehört nur nicht in eine Küche.

Darum hat das Paket eine Datei hoerfehler.csv: links, was die Erkennung schreibt, rechts, was gemeint ist. Sie wird vor der Erkennung angewendet. Bei uns stehen dort nur Hörfehler aus den ersten acht Diktaten, und das ist der Normalfall im Betrieb: Die Liste kennt die Fehler, die schon einmal passiert sind.

Die Artikelliste ist die eigentliche Arbeit

kuerzel;bezeichnung;einheit;preis;nennungen
SD;Schalterdose UP;Stk;0,85;schalterdose|schalterdosen|unterputzdose|dose|dosen
STD;Steckdose Schuko UP, komplett;Stk;12,40;steckdose|steckdosen|schuko|schukos
WAGO;Verbindungsklemme 3-fach;Stk;0,45;wago|wagos|wago-klemme|wago-klemmen|klemmen
KB;Kernbohrung bis 100 mm;Stk;;kernbohrung|kernbohrungen
GES;Arbeitszeit Geselle;Std;62,00;

Die Spalte nennungen ist das, was in keinem Faktura-Programm steht: wie das Teil auf der Baustelle heißt. Niemand sagt „Verbindungsklemme 3-fach“, alle sagen „Wagos“. Mehrzahl und Kurzform gehören mit hinein, weil die Regeln nur ganze Wörter vergleichen. Das ist Absicht: „Außensteckdose“ ist keine „Steckdose“ aus der Liste, sondern ein anderes Teil, und ein Vergleich, der Wortteile findet, hätte sie zur Schuko-Steckdose gemacht. Die Kernbohrung hat keinen Preis, weil sie bei jedem Auftrag anders kostet. Im Entwurf steht sie mit Strich statt Betrag, und die Prüfliste meldet sie.

Die Regeln

regeln.py rechnet zuerst Zahlwörter um, dann zerlegt es das Diktat an Satzzeichen, „und“ und „plus“ in Abschnitte und sucht in jedem Abschnitt die längste passende Nennung. Die Menge ist die letzte Zahl davor, die nicht hinter „Haus“, „Wohnung“, „Straße“ oder „Stock“ steht. Die Stelle, an der es fachlich wird, ist die Korrektur:

for nr, a in enumerate(teile):
    if a and a[0] == "nein":
        korrektur, a = True, a[1:]
        if not a:
            continue
    ...
        neu = {"kuerzel": k, "menge": menge, "fundstelle": text_von(a)}
        if korrektur and posten:
            posten.pop()
            korrektur = False
        posten.append(neu)
    ...
    # Abschnitt ohne Artikel: Korrektur der Menge oder lose Menge
    if not treffer and not benutzt:
        zahlen = [(i, t) for i, t in enumerate(a) if ist_zahl(t) and not ist_ortszahl(a, i)]
        if korrektur and zahlen and posten:
            posten[-1]["menge"] = zahlen[-1][1]

Nach „nein“ gibt es zwei Fälle. Steht im nächsten Abschnitt ein Artikel („nein, fünf Steckdosen“), ersetzt er den letzten Posten ganz. Steht dort nur eine Zahl („nein, vier Stück“, „nein, 35 Meter“), ersetzt sie nur die Menge. Ohne diese Unterscheidung werden aus „vier Steckdosen, nein, fünf Steckdosen“ neun.

Drei weitere Regeln tragen mehr, als ihre Länge vermuten lässt. Ein bestimmter Artikel vor der Nennung ist ein Rückbezug und kein neuer Posten: „drei Steckdosen auf den Kanal“ berechnet keinen zweiten Kanal. „Kein“ oder „ohne“ vor der Nennung heißt kein Posten. Und eine unbestimmte Menge wie „Handvoll“ oder „ein paar“ bleibt offen, mit Fragezeichen im Entwurf, statt geschätzt zu werden.

Das Modell

Zum Vergleich haben wir dieselbe Aufgabe llama3.2 gegeben: Anweisung mit zehn Regeln, die Artikelliste, das Diktat, Antwort als JSON, Temperatur 0. Was zurückkommt, wird geprüft, bevor es ein Posten wird. Ein Kürzel, das nicht in der Liste steht, fällt heraus und wird gemeldet. Diese Prüfung ist nicht verhandelbar, denn die Fehler des Modells sehen anders aus als die der Regeln. Diktat A8 lautet: „Lindgruber, Baustromverteiler abgeholt, der muss am Montag zurück. Zwei Stunden, Anfahrt.“ Der Entwurf daraus:

Pos   Menge  Einh.    Artikel                                  Einzel    Gesamt
1       100  m        Kabelkanal 40x60                           6,20    620,00
2         2  Stk      Schalterdose UP                            0,85      1,70
3         1  Stk      Steckdose Schuko UP, komplett             12,40     12,40
4         ?  Stk      Verbindungsklemme 3-fach                   0,45         —
5         2  Std      Arbeitszeit Geselle                       62,00    124,00
6         1  pauschal Anfahrt                                   35,00     35,00
                                                          Summe netto     793,10

Vor dem Übernehmen ansehen (3):
  - nicht zugeordnet (laut Modell): „der muss am Montag zurück“
  - KAN: 2 Angaben zusammengezählt (40 + 60 = 100): „Kabelkanal 40x60“ / „Kabelkanal 40x60“
  - WAGO Verbindungsklemme 3-fach: Menge offen („ein paar Klemmen“)

Richtig sind die letzten zwei Zeilen. Die 100 Meter Kabelkanal hat das Modell aus der Artikelbezeichnung „40x60“ gelesen, als zwei Posten, die zusammen 100 ergeben. Die Klemmen stammen aus dem Beispiel in der Anweisung, dort steht „ein paar Klemmen“. Im Diktat kommt keine Klemme vor. Bei der ersten Fassung der Anweisung war es noch deutlicher: Im Formatbeispiel stand „Bewegungsmelder montiert“, und das Modell hat genau diesen Satz bei Diktat A1 als nicht zugeordnet gemeldet, in dem kein Bewegungsmelder vorkommt.

Wir haben zwei Gegenmittel auf den Diktaten A1 bis A8 ausprobiert. Ohne Bezeichnungen in der Liste halbierte sich die Abweichung der Nettosummen von 1.270,05 auf 613,95 Euro, aber die Treffer gingen von 21 auf 20 von 30 zurück, und erfunden waren weiterhin 11 Posten. Ohne Beispiel in der Anweisung fiel das Modell auf 17 richtige Posten und erfand 28 statt 11. Beides haben wir verworfen. Bei Diktat B6 hat llama3.2 außerdem die Artikelliste in Schleife aufgezählt, bis der Aufruf nach 300 Sekunden abbrach. Seitdem begrenzt das Skript die Antwort auf 1.000 Token; abgeschnittenes JSON wird nicht übernommen, sondern gemeldet.

Was dabei herauskommt

Diktat A2 im Rohtext, regelbasiert:

Wortlaut: Kernhausverwaltung, Trippenhaus Gabelsberger Straße 12, 2,5 Meter Kabelkanal, eine
Kernbohrung durch die Kellerwand und eine Handvoll Vargos, anderthalb Stunden, ich allein,
Anfahrt bitte auch.

Pos   Menge  Einh.    Artikel                                  Einzel    Gesamt
1       2,5  m        Kabelkanal 40x60                           6,20     15,50
2         1  Stk      Kernbohrung bis 100 mm                        —         —
3         ?  Stk      Verbindungsklemme 3-fach                   0,45         —
4       1,5  Std      Arbeitszeit Geselle                       62,00     93,00
5         1  pauschal Anfahrt                                   35,00     35,00
                                                          Summe netto     143,50
(nur Posten mit Preis und Menge; ohne Umsatzsteuer, ohne Zuschläge)

Vor dem Übernehmen ansehen (4):
  - Hörfehler ersetzt: vargos -> wagos
  - nicht verwendet: „trippenhaus gabelsberger straße 12“, „ich allein“
  - KB Kernbohrung bis 100 mm: kein Preis in der Artikelliste
  - WAGO Verbindungsklemme 3-fach: Menge offen („eine handvoll wagos“)

Die Hausnummer 12 ist keine Menge geworden, die Kernbohrung steht ohne Preis da, die Handvoll Wagos mit Fragezeichen. Die Summe von 143,50 Euro ist ausdrücklich unvollständig, und das steht darunter.

Gemessen haben wir je Diktat, ob jeder Soll-Posten mit der richtigen Menge im Entwurf steht, was fehlt und was zu viel da ist, und um wie viel Euro die Nettosumme danebenliegt. Satz A sind die acht Diktate, an denen die Regeln gebaut wurden. Satz B sind sechs Diktate, die vor dem Bauen geschrieben und danach nicht mehr zum Nachbessern der Erkennung benutzt wurden. Zusammengefasst aus messung/2026-10-04.txt:

                       Satz A (daran gebaut)          Satz B (Gegenprobe)
                       richtig  zu viel  Abw. netto   richtig  zu viel  Abw. netto
Regeln, Wortlaut       30/30     0          0,00 EUR  21/24     0        365,80 EUR
Regeln, Whisper        29/30     0         35,00 EUR  17/24     0        385,00 EUR
llama3.2, Wortlaut     21/30    11      1.270,05 EUR  15/24     5        519,80 EUR
llama3.2, Whisper      19/30    12      2.181,20 EUR  13/24    10        802,05 EUR

Die 30 von 30 auf Satz A sind kein Ergebnis, sondern der Ausgangspunkt: An diesen Diktaten sind die Regeln entstanden. Die ehrliche Zahl ist die Gegenprobe. Dort trafen die Regeln auf dem Whisper-Rohtext 17 von 24 Posten, llama3.2 traf 13. Der wichtigere Unterschied steht in der Spalte daneben. Die Regeln haben in keinem Lauf einen Posten erfunden. Was sie nicht verstanden haben, blieb offen oder fehlte und stand in der Prüfliste. Das Modell hat in den vier Läufen zusammen 38 Posten angelegt, die im jeweiligen Diktat nicht vorkamen. Einen fehlenden Posten findet, wer die Zeile „nicht verwendet“ liest. Einen erfundenen findet nur, wer das Diktat neben den Entwurf legt.

Die Hörfehlerliste wirkt, wo sie Fehler kennt. Ohne sie trafen die Regeln auf dem Whisper-Rohtext von Satz A 24 statt 29 Posten, auf Satz B blieb es bei 17, weil dort andere Wörter zerhört wurden.

Vor dem Übernehmen ansehen

Die Prüfliste steht unter jedem Entwurf und liegt als PRUEFLISTE.md zum Ausdrucken im Paket. Das Skript markiert selbst:

  • Menge offen: gesprochen wurde „Handvoll“, „ein paar“ oder keine Zahl. Nachfragen, nicht schätzen
  • kein Preis in der Artikelliste: eintragen oder streichen, nicht 0,00
  • Korrektur im Diktat: Hat das Skript die richtige Zahl ersetzt?
  • Angaben zusammengezählt: Gehören beide wirklich zu diesem Posten, besonders bei Stunden?
  • nicht verwendet: jeder Satzteil, aus dem kein Posten wurde. Dort stehen Erdkabel, Bewegungsmelder und „neuen 4“
  • D16 oder C16 statt B16, Notdienst oder Samstag (Zuschlag?), ein fast leeres Diktat

Ein Mensch sieht zusätzlich an, was das Skript nicht erkennt: ob Kunde und Baustelle stimmen, denn Namen zerhört die Erkennung am häufigsten („Lindgroberbau“, „Kuba-Bau“). Ob Material vom Kunden kam, „den hat der Kunde selbst gekauft“ heißt nur Arbeit. Ob ein Lehrling im Diktat vorkommt und im Entwurf keine Helferstunden stehen. Und ob die Summe zu dem passt, was der Auftrag ungefähr wert ist.

Einhängen in den Ablauf

Wer den Sprachnotiz-Ablauf schon hat, hängt einen Aufruf dahinter. entwuerfe_fuer_ordner.sh sieht in einem Ordner nach Rohtexten ohne Entwurf und legt daneben einen Entwurf als Text und die Posten als CSV:

python3 transkribiere.py ~/Diktate/eingang/
sh entwuerfe_fuer_ordner.sh ~/Diktate/eingang/
A2.entwurf.txt: 4 Punkte zum Ansehen
B1.entwurf.txt: 4 Punkte zum Ansehen
B6.entwurf.txt: 4 Punkte zum Ansehen
3 neue Entwürfe in /tmp/bs_ordner

Ein zweiter Aufruf macht nichts, weil neben jedem Rohtext schon ein Entwurf liegt. In der CSV steht in der Spalte pruefen ein „ja“ bei jedem Posten mit offener Menge oder ohne Preis. Ob die CSV in euer Faktura-Programm importiert wird oder jemand die Posten abtippt, hängt am Programm; der Import ist nicht Teil des Pakets und nicht geprüft. Den Ordner beobachten kann ordner_ueberwachen.sh aus dem Sprachnotiz-Paket. Einen n8n-Ablauf braucht es dafür nicht.

Was das nicht kann

Es versteht nur, was in der Liste steht. Ein Betrieb mit 3.000 Artikeln trägt nicht für jeden die Nennungen ein. Das Verfahren lohnt sich für die zwanzig bis fünfzig Teile, die jeden Tag verbaut werden, und für die Stunden. Alles andere landet unter „nicht verwendet“, und das ist richtig so, aber es bleibt Handarbeit.

Es kennt die Fehler von morgen nicht. Die Hörfehlerliste aus Satz A hat auf Satz B keinen einzigen Posten gerettet. Die ersten Wochen sind Pflege: Zeile „nicht verwendet“ lesen, Hörfehler eintragen. Unsere Diktate hat eine Systemstimme in ruhiger Umgebung gesprochen. Baustellenlärm, Dialekt und ein Geselle, der beim Sprechen die Leiter hochsteigt, haben wir nicht geprüft, und sie werden die Trefferzahl senken.

Es kann keine Rechnung. Zuschläge, Material vom Kunden, Pauschalen nach Absprache, Abschläge: das weiß der, der den Auftrag kennt. Deshalb heißt die Ausgabe Entwurf, und deshalb ist die Prüfliste kein Anhang, sondern der eigentliche Teil des Werkzeugs.

Zum Nachbauen

Das Paket enthält die Skripte, die Beispiel-Artikelliste, die vierzehn Testdiktate mit Aufnahmen, Rohtexten und Sollwerten, die Messung und die Prüfliste. Entpacken, dann:

  • posten.py, regeln.py: Diktat rein, Entwurf mit Prüfliste raus. Mit --csv auch als Tabelle
  • modell.py und prompts/posten.md: die Variante mit llama3.2, zum Vergleich mit eurem eigenen Modell über MODELL=…
  • artikelliste.csv und hoerfehler.csv: die zwei Dateien, die ihr für euren Betrieb füllt
  • transkribiere.py und entwuerfe_fuer_ordner.sh: Aufnahme zu Rohtext, Rohtext zu Entwurf, für einen ganzen Ordner
  • messe.py, testdaten/ und messung/: die Messung aus diesem Beitrag, mit --details jeder Fehler einzeln. erzeuge_diktate.py erzeugt die Diktate neu, mit --audio auch die Aufnahmen
  • PRUEFLISTE.md und AUFTRAG.md: die Prüfliste zum Ausdrucken und die Aufgabenübergabe, aus der das Paket entstanden ist

Stand dieses Artikels

Gebaut und gemessen am 4. Oktober 2026 mit Python 3.12.2, faster-whisper 1.2.1 mit dem Modell small auf dem Prozessor eines Mac, Ollama 0.32.15 mit llama3.2 (3B) bei Temperatur 0; zwei Läufe des Modells mit derselben Anweisung ergaben dieselben Zahlen. Alle Ausgaben in diesem Beitrag stammen aus diesen Läufen. Die vierzehn Diktate sind erfunden, Betrieb, Kunden, Adressen und Preise ebenso, gesprochen von den macOS-Stimmen Anna und Reed, also sauber und ohne Lärm. Die Regeln sind an den Diktaten A1 bis A8 gebaut; die Gegenprobe B1 bis B6 wurde vorher geschrieben, und an der Erkennung wurde ihretwegen nichts geändert. Nach der Gegenprobe ergänzt wurden zwei Hinweise in der Prüfliste (zusammengezählte Angaben, fast leeres Diktat); sie ändern keine Messzahl. Nicht geprüft: echte Aufnahmen von einer Baustelle, Dialekt, andere Gewerke, größere Modelle als llama3.2, der Import der CSV in ein Faktura-Programm.

Häufige Fragen

Warum nicht gleich ein Sprachmodell, das versteht doch Umgangssprache?

Ein großes Modell vielleicht. llama3.2 mit drei Milliarden Parametern hat in unserer Gegenprobe weniger Posten getroffen als die Regeln und zehn Posten erfunden, die nicht im Diktat standen. Wer ein größeres Modell einsetzt, misst es mit messe.py an den eigenen Diktaten, bevor er ihm eine Rechnung anvertraut. Die Prüfung der Kürzel gegen die Liste bleibt in jedem Fall.

Wie viel Arbeit ist die Artikelliste?

Für die zwanzig bis fünfzig Teile, die täglich verbaut werden, ein Nachmittag: Bezeichnung und Preis kommen aus dem Faktura-Programm, die Nennungen schreibt jemand dazu, der auf der Baustelle steht. Danach zwei Wochen lang die Zeile „nicht verwendet“ lesen und Hörfehler eintragen.

Was passiert, wenn der Geselle sich verspricht und es nicht korrigiert?

Dann steht der Versprecher im Entwurf. Das Skript erkennt Korrekturen nur, wenn sie mit „nein“ beginnen. Für alles andere ist die Prüfliste da und die Aufnahme, die neben dem Entwurf liegen bleibt.

  • n8n selbst hosten: was Hetzner Cloud wirklich kostet

    Ein Update-Wächter für selbst betriebene Software

    Zwölf Sicherheitsmeldungen für n8n an einem Tag, und keine nennt die Reihe, die bei uns eingetragen war. Ein Skript fragt jeden Morgen GitHub, schreibt höchstens eine Meldung am Tag und schlägt die Fassung vor, die alle Lücken schließt.

  • Belege an DATEV übergeben

    Belege an DATEV übergeben

    Der Zugang ist niedriger, als sein Ruf vermuten lässt — eine Beraternummer braucht es nicht, die Sandbox kommt mit dem Abonnement. Und elf Stunden Token-Gültigkeit entscheiden über den ganzen Aufbau.

  • Ein Agent, der eure Ablage kennt

    Ein Agent, der eure Ablage kennt

    Das meiste daran ist Suche, nicht Modell. Eine Volltextsuche über die eigene Ablage mit Fundstelle und Begründung — und der Satz, der schlimmer ist als eine leere Trefferliste.

© 2026 ernsthaft.ai, ein Angebot der abi group GmbH

Alle genannten Produktnamen, Logos und Marken sind Eigentum der jeweiligen Inhaber. Ihre Nennung bedeutet keine Empfehlung oder Verbindung zu ernsthaft.ai oder der abi group GmbH.

Build v1.11.0+d3a9d84