Zum Inhalt springen

So arbeiten wir: von der Projektbeschreibung bis zur Abnahme

2 Einträge

Wie wir arbeiten und was Sie unterwegs bekommen

Sechs Zeitpunkte, und zu jedem eine Datei oder eine Adresse, die Sie tatsächlich bekommen. Darunter sechs Entscheidungen aus unseren eigenen Systemen — für die technisch zuständige Person bei Ihnen, die wissen will, wie wir unsere Entscheidungen treffen.

01

Was Sie bekommen und wann

Sechs Zeitpunkte, zu jedem eine Datei oder eine Adresse, die Sie bekommen. Eine Liste zum Abhaken.

01026 Momente · Liste zum Abhaken

  1. Projektbeschreibung

    Tag 0

    Was Sie tunSie senden die Projektbeschreibung

    Was wir tunwir antworten innerhalb von 2 Arbeitstagen

    Was Sie bekommenFragen oder einen Vorschlag für Umfang und Termin

    Antwort per E-Mail
  2. Analyse

    Woche 1–2

    Was Sie tunzwei Online-Termine à 2 Stunden

    Was wir tunSkizzen der Bildschirmansichten, Liste der Risiken, Liste der Daten, die das System speichern soll

    Was Sie bekommenden Festpreis für die Umsetzung im Analysedokument

    Analysedokument
  3. Start

    Woche 3

    Was Sie tunSie wählen den Kontaktkanal: E-Mail, Teams oder Slack

    Was wir tunein Konto mit dem Programmcode und dem Änderungsverlauf, angelegt auf den Namen Ihrer Firma

    Was Sie bekommeneine Testversion unter Ihrer eigenen Internetadresse

    die Adresse der Testversion
  4. Vorführung

    Jede Woche

    Was Sie tun30 Minuten Vorführung pro Woche

    Was wir tunwir zeigen die funktionierende Version

    Was Sie bekommeneine Liste der Änderungen auf Deutsch

    die Liste der Änderungen
  5. Abnahme

    Abnahme

    Was Sie tunSie nehmen die neue Version ab — die alte läuft weiter, bis die neue die Prüfung besteht

    Was wir tunKopie der Datenbank und der Website vor der Umstellung, Prüfung der wichtigsten Bildschirmansichten danach

    Was Sie bekommendie Anleitung für den Start, Benutzernamen und Passwörter für alle Konten

    die Anleitung für den Start
  6. Nach der Abnahme

    Nach der Abnahme

    Was Sie tunSie wählen: Betreuung im Abo oder wir übergeben Ihnen alles

    Was wir tun30 Tage Nachbesserung im Preis enthalten

    Was Sie bekommenBetreuung oder alle Unterlagen: Programmcode, Anleitung, Zugänge und die Liste der Programme

    alle Unterlagen
02

Sechs Entscheidungen aus unseren eigenen Systemen

Jede davon hat uns Zeit in zaflache oder in FufuTool gekostet, bevor sie einen Kunden etwas kosten konnte. Die Überschrift sagt, was Sie davon haben; die technischen Details stehen darunter, für alle, die es nachprüfen wollen.

02026 Entscheidungen · zaflache und FufuTool

Ein Netzausfall mitten im Vorgang kostet Sie kein Geld

FufuTool · Aufgaben im Hintergrund und Veröffentlichung

In FufuTool läuft die Veröffentlichung eines Angebots bei Allegro über drei voneinander unabhängige Sicherungen gegen ein doppeltes Angebot, denn bei Allegro ist ein Duplikat ein kostenpflichtiges Angebot und ein Verstoß gegen die Nutzungsbedingungen.

Was wir getan haben
drei unabhängige Absicherungen
Warum
ein Duplikat bei Allegro ist ein kostenpflichtiges Angebot

Ohne diese Entscheidung

Abgebrochene Verbindung → das Programm versucht es noch einmal → bei Allegro entsteht ein zweites, kostenpflichtiges Angebot, von dem Sie aus der Rechnung erfahren.

Mit dieser Entscheidung

Drei unabhängige Absicherungen: Jeder Auftrag hat in unserer Datenbank seinen Fingerabdruck, der nicht zweimal durchgeht; denselben Fingerabdruck bekommt das Portal; vor jedem weiteren Versuch fragen wir das Portal, ob das Angebot schon entstanden ist. So entsteht genau ein Angebot.

Ausgangslage
Das Programm schickt das Angebot an Allegro, das Portal legt es an, aber die Antwort geht in einer abgebrochenen Verbindung verloren. Das Programm sieht einen Fehler und versucht es noch einmal. Ohne Sicherung entsteht ein zweites, kostenpflichtiges Angebot, von dem der Nutzer erst aus der Rechnung erfährt. Abgebrochene Verbindungen zu einem fremden System sind der Normalfall, nicht die Ausnahme.
Entscheidung
Ebene 1: Jede Aufgabe in der Warteschlange hat einen Fingerabdruck des Auftrags (Fachbegriff: Idempotenzschlüssel) aus dem Gegenstand, auf den sie sich bezieht, aus der Version der Anzeige und aus der Art des Vorgangs; die Datenbank nimmt keine zwei Aufgaben mit demselben Fingerabdruck an, ein Doppelklick oder zwei offene Tabs im Browser erzeugen also keine zweite Aufgabe. Ebene 2: Wo das Portal das unterstützt (zaflache nimmt den Fingerabdruck an und merkt sich ihn 24 Stunden), geben wir ihn weiter; bei Allegro übernimmt diese Rolle die Angebotsnummer, die wir vor jedem weiteren Versuch bei uns speichern. Ebene 3: Bevor wir uns beim Portal melden, schreiben wir den Versuch mit dem Ergebnis „unbekannt“ mit, und nach einer abgebrochenen Verbindung fragen wir zuerst das Portal, ob das Angebot entstanden ist, und senden nur dann erneut.
Was wir nicht getan haben
Wir fragen das Portal nicht nach jedem Fehler: Wenn das Portal geantwortet und den Fehler beschrieben hat, ist das Angebot nicht entstanden; wir fragen also nur dann nach, wenn überhaupt keine Antwort kam. Wir wiederholen die Versuche auch nicht endlos: Wie viele Versuche es gibt und in welchen Abständen sie erfolgen, legen feste Regeln je nach Art des Fehlers fest; eine Aufgabe, deren Versuche aufgebraucht sind, landet mit dem Grund im Protokoll.

Künstliche Intelligenz (KI) kommt nur dort zum Einsatz, wo ein Test mit Ihren Daten zeigt, dass sie hilft

zaflache · Zuordnung von Nachfrage und Angebot

Bevor wir in zaflache das Zusammenführen von „Suche“-Anzeigen mit „Verkaufe“-Anzeigen eingeschaltet haben, haben wir an echten Anzeigen gemessen, wie gut diese Zuordnung trifft; das Ergebnis hat entschieden: Das KI-Modell entscheidet nicht, es legt nur die Reihenfolge in der Liste fest.

Was wir getan haben
die KI legt die Reihenfolge fest, sie entscheidet nicht
Warum
keine Grenze trennte die Treffer von den Fehlgriffen

Ohne diese Entscheidung

Die Vorführung der „intelligenten Zuordnung“ sieht gut aus; bei echten Nutzern bestätigt das Modell 6 von 6 falschen Paaren und schlägt unpassende Anzeigen vor.

Mit dieser Entscheidung

Das Modell legt nur die Reihenfolge der vorgeschlagenen Anzeigen fest; ob zwei Anzeigen zusammenpassen, entscheiden Kategorie, Preis, Ort und die Markenliste. Ein Test mit Ihren Daten, bevor es eingeschaltet wird.

Ausgangslage
Der Vergleich der Anzeigen über eine maschinell errechnete Ähnlichkeit der Beschreibungen stellte einen falschen Treffer über einen richtigen: Eine Bosch-Waschmaschine und ein Werkzeugset erhielten 0,606, „Auto bis 10.000 PLN“ und ein Hyundai für 5.000 PLN erhielten 0,543. Es gibt keine Grenze, die diese beiden Fälle voneinander trennt.
Entscheidung
Die Bewertung nach der reinen Bedeutung der Wörter haben wir aus der ersten Version der Funktion entfernt. In der zweiten dient die Ähnlichkeit der Beschreibungen nur noch dazu, die Reihenfolge der vorgeschlagenen Anzeigen festzulegen; ob zwei Anzeigen zusammenpassen, entscheiden harte Bedingungen: Kategorie, Preis, Ort und eine Markenliste, die noch vor der Frage an das Modell geprüft wird. Das Modell bewertet eine vorgeschlagene Anzeige pro Frage, denn im Test bestätigte es bei sechs Anzeigen auf einmal 6 von 6, einzeln gefragt 0 von 5.
Was wir nicht getan haben
Wir haben keine „intelligente Zuordnung“ allein auf der Ähnlichkeit der Beschreibungen eingeführt, auch wenn die Vorführung gut aussah. Wir verschweigen diese Messung unseren Kunden auch nicht: Wenn wir künstliche Intelligenz in Ihrem Projekt vorschlagen, zeigen wir zuerst einen solchen Test mit Ihren Daten, mit Zahlen.

Ein Fehler im Formular legt keine Abrechnungsdaten offen

zaflache und FufuTool · Rechte in der Datenbank

In unseren beiden Systemen entscheidet die Datenbank selbst darüber, wer was sieht und was er ändern darf, nicht der Programmcode. Ein Fehler in einem Formular öffnet deshalb weder fremde Daten noch ein fremdes Guthaben.

Was wir getan haben
über den Zugriff entscheidet die Datenbank, nicht der Programmcode
Warum
ein Fehler im Formular öffnet keine fremden Daten

Ohne diese Entscheidung

Ein Fehler im Formular oder im Code, der die Anfragen bearbeitet, legt fremde Daten offen, weil nur der Bildschirm über die Rechte wacht.

Mit dieser Entscheidung

Über die Rechte wacht die Datenbank: eine Zugriffsregel für die einzelne Zeile und ein Schreibrecht auf einzelne Spalten. Nach jeder Änderung am Aufbau der Datenbank vergleichen wir die Rechte — dabei darf kein einziger Unterschied herauskommen.

Ausgangslage
Wenn in einer Tabelle eine Spalte über die Rechte oder über die Bezahlung entscheidet (Tarif, Rolle, Status, Limit) und der Nutzer ein umfassendes Schreibrecht hat, kann er sich diesen Wert selbst eintragen: Die Zugriffsregel für die einzelne Zeile (fachlich: Row Level Security, RLS) prüft, ob die Zeile dem Nutzer gehört, aber nicht, welche Spalten er geändert hat.
Entscheidung
Jede Tabelle hat eine Zugriffsregel für die einzelne Zeile, und ausdrücklich erteilte Rechte bekommen nur die Kontoarten, für die es eine solche Regel gibt. Das Schreibrecht erteilen wir auf einzelne, benannte Spalten, nie auf die ganze Tabelle; die Spalten mit Tarif, Rolle und Guthaben ändert ausschließlich eine Funktion auf dem Server. Nach jeder Änderung am Aufbau der Datenbank vergleichen wir die Rechte in der live laufenden Version mit den Rechten in unserer Testversion; die Liste der Unterschiede muss leer sein.
Was wir nicht getan haben
Wir verlassen uns nicht auf eine Prüfung der Rechte auf dem Bildschirm oder im Code, der die Anfragen bearbeitet; das ist Bequemlichkeit, kein Schutz. Wir verwenden auch kein Passwort mit allen Rechten, um Kontodaten im Namen eines Nutzers zu lesen: Der KI-Assistent in zaflache liest das Guthaben mit den Rechten genau dieser Person.

Eine neue Version schalten wir nur ein, wenn der Weg zurück zur alten offen ist

FufuTool · Inbetriebnahme neuer Fassungen und Kopien

Jede Inbetriebnahme einer neuen Version von FufuTool beginnt mit einer Kopie der Datenbank. Die neue Version startet getrennt, parallel zu der Version, die läuft, und übernimmt deren Arbeit erst nach einem Test; die Kopien haben wir geprüft, indem wir sie am 29. August 2026 zurückgespielt haben.

Was wir getan haben
Kopie, neue Version neben der laufenden, Test, Umschaltung
Warum
eine Kopie, die niemand je zurückgespielt hat, ist keine Kopie

Ohne diese Entscheidung

Die Kopie ist da, aber niemand hat sie je zurückgespielt; bei einer Störung stellt sich heraus, dass sie unvollständig ist oder sich nicht einspielen lässt.

Mit dieser Entscheidung

Eine Kopie vor jeder Inbetriebnahme, die neue Version neben der laufenden, Prüfung der wichtigsten Masken und eine zurückgespielte Kopie, Zeile für Zeile mit der live laufenden Version verglichen.

Ausgangslage
Eine Kopie, die niemand je zurückgespielt hat, ist keine Kopie. FufuTool kopiert die ganze Datenbank täglich um 3:15 Uhr, hält sie 7 Tage auf dem Server und eine zweite Kopie außerhalb des Servers; bis zum 29. August 2026 hatte niemand geprüft, ob sich aus dieser Kopie der alte Zustand wiederherstellen lässt.
Entscheidung
Die Reihenfolge jeder Inbetriebnahme: Kopie der Datenbank und der Website vor der Änderung, Aufbau der neuen Version neben der Version, die die Nutzer verwenden, Prüfung der wichtigsten Masken in der neuen Version, und erst danach schalten wir die Nutzer darauf um. Die Kopie haben wir in eine eigene Datenbank zurückgespielt und die Zahl der Zeilen — auf eine Zeile genau — mit der live laufenden Version verglichen, in den Tabellen der Konten, der Anzeigen, der Veröffentlichungsziele und der Verbindungen zu den Portalen.
Was wir nicht getan haben
Wir halten die Kopien nicht zusammen mit dem Code: Sie enthalten personenbezogene Daten und die Zugangspasswörter zu den Portalen. Eine Kopie an einem dritten Ort, außerhalb des Servers und außerhalb des Rechners des Mitinhabers, haben wir noch nicht; das ist geplant, und so schreiben wir es auch.

Ein Programm weniger, das nachts ausfallen kann

FufuTool · Aufgaben im Hintergrund

Die Aufgaben, die FufuTool im Hintergrund erledigt (Veröffentlichung, Erneuern der Verbindungen zu den Portalen, Wiederholungsversuche), laufen in derselben Datenbank wie der Rest des Systems. Es gibt also keinen eigenen Server für die Warteschlange, den man überwachen, aktualisieren und kopieren muss.

Was wir getan haben
die Warteschlange liegt in derselben Datenbank wie der Rest
Warum
ein eigener Server heißt eigene Kopien und eigene Störungen

Ohne diese Entscheidung

Ein eigener Server für die Warteschlange: eigene Kopien, eigene Störungen und noch eine Sache, die man nachts im Auge behalten muss.

Mit dieser Entscheidung

Die Warteschlange in derselben Datenbank, Veröffentlichungsziel und Aufgabe gemeinsam gespeichert oder gar nicht; der Rest des Systems sieht drei Funktionen: einplanen, entnehmen, abschließen.

Ausgangslage
Die übliche Antwort auf „Aufgaben im Hintergrund“ ist ein eigenes Programm für die Warteschlange (Redis, RabbitMQ). Für ein System mit nur einem Programm, das im Hintergrund arbeitet, ist das ein weiterer Bestandteil mit eigener Überwachung, eigenen Kopien und eigenen Störungen — und durch diese Warteschlange laufen einige tausend Aufgaben am Tag, nicht Millionen.
Entscheidung
Die Warteschlange ist eine gewöhnliche Tabelle in der Postgres-Datenbank. Eine Aufgabe wird mit einer Sperre auf der Zeile entnommen — wer zuerst kommt, nimmt sie, die anderen überspringen die gesperrte Zeile, statt zu warten — und sie wird der Reihe nach aus den Konten aller Nutzer entnommen, damit nicht einer die Warteschlange für die anderen belegt. Wiederholungsversuche haben immer längere Abstände, je nach Art des Fehlers; hängen gebliebene Sperren räumt eine Funktion auf, die regelmäßig läuft; und jede Änderung des Zustands einer Aufgabe landet im Protokoll. Veröffentlichungsziel und Aufgabe werden gemeinsam gespeichert oder gar nicht, es entsteht also keine Aufgabe ohne Ziel und kein Ziel ohne Aufgabe.
Was wir nicht getan haben
Wir haben kein eigenes Programm für die Warteschlange „auf Vorrat“ hinzugefügt. Wenn die Zahl der Aufgaben über das hinausgeht, was eine Tabelle in der Datenbank tragen kann, betrifft die Änderung einen einzigen gesonderten Teil des Systems, denn der Rest sieht nur drei Funktionen: einplanen, entnehmen, abschließen.

Gesetzliche Pflichten erfüllt das System, nicht ein PDF mit Nutzungsbedingungen

zaflache und FufuTool · Einhaltung des Rechts

In zaflache sind die Meldung einer unzulässigen Anzeige, die Begründung der Entscheidung und die Beschwerde Funktionen des Systems, so wie es das Gesetz über digitale Dienste (Digital Services Act, DSA) verlangt. FufuTool erstellt für Bauträger (Firmen, die Wohnungen bauen) den Preisbericht in dem Format von dane.gov.pl, das das polnische Gesetz vorschreibt.

Was wir getan haben
Meldung und Beschwerde als Funktionen des Systems
Warum
eine gesetzliche Pflicht ist eine Schaltfläche oder eine Funktion

Ohne diese Entscheidung

Die Einhaltung des Rechts steckt in Nutzungsbedingungen als PDF, die niemand liest; Meldungen und Beschwerden werden von Hand in der Datenbank bearbeitet.

Mit dieser Entscheidung

Meldung, Begründung der Entscheidung und Beschwerde sind Funktionen des Systems; Inhalte, die mit Hilfe von künstlicher Intelligenz geschrieben wurden, tragen eine dauerhafte Kennzeichnung.

Ausgangslage
Das Gesetz über digitale Dienste (Digital Services Act, DSA) verlangt von Portalen, Meldungen zu Inhalten anzunehmen (Art. 16), Entscheidungen zu begründen und dabei auf die Beschwerdemöglichkeit hinzuweisen (Art. 17) und ein eigenes Beschwerdeverfahren zu führen (Art. 20); die Verordnung über künstliche Intelligenz (AI Act) verlangt, Inhalte zu kennzeichnen, die mit Hilfe von künstlicher Intelligenz entstanden sind (Art. 50). Das polnische Gesetz über die Offenlegung von Wohnungspreisen (Art. 19a–19b) verpflichtet Bauträger (Firmen, die Wohnungen bauen), jeden Tag eine Preisliste in einem Format zu veröffentlichen, das dane.gov.pl selbst lesen kann.
Entscheidung
In zaflache kann eine Meldung auch abschicken, wer nicht angemeldet ist; die Entscheidung über einen Inhalt geht zusammen mit der Begründung und dem Hinweis auf die Beschwerdemöglichkeit in eine Tabelle, aus der sich nichts löschen und nichts ändern lässt; die Beschwerde hebt die Einschränkungen von selbst auf, ohne Handarbeit in der Datenbank; und wer gemeldet hat, erhält eine Nachricht über das Ergebnis. Anzeigen, die mit Hilfe des KI-Assistenten geschrieben wurden, tragen eine dauerhafte Kennzeichnung. In FufuTool führt ein gesonderter Teil des Systems für Bauträger den Preisverlauf der einzelnen Wohnungen und stellt unter einer festen Adresse ein Verzeichnis der Dateien sowie die Preisliste des Tages bereit, passend zur Musterdatei von dane.gov.pl.
Was wir nicht getan haben
Wir haben die Einhaltung des Rechts nicht in Nutzungsbedingungen als PDF gepackt, die niemand liest: Wo das Gesetz eine Handlung verlangt, ist sie eine Schaltfläche oder eine Funktion. Wir bewerten auch nicht den Inhalt, der mit der Anfrage mitgeschickt wurde, sondern den, den wir in der Datenbank unter der betreffenden Nummer haben — damit niemand die eigene Anzeige mit untergeschobenem Inhalt selbst freigeben kann.