ProduktMietpreisbremseSicherheitRechtsprechungCorpusDenkenLoginDemo →
Mila / Changelog Was wir bauen, während wir bauen.

Changelog.

Jede Woche, manchmal zweimal. Was wir geliefert haben, was sich verändert hat, was als Nächstes ansteht. Ohne PR-Floskeln.

Warum öffentlich
Die meisten Legal-Tech-Anbieter schreiben Roadmaps für ihre Investoren und Release-Notes für ihre Support-Teams. Wir nicht. Was wir bauen, wofür wir uns entschieden haben, und welche Wette wir gerade laufen — alles steht hier. Kanzleien, Konkurrenten, Presse: gleicher Zugriff, gleicher Tag.
24
Releases · 2026
1.178
Verifizierte Entscheidungen
v1.4.2
Aktuelle Version

Forderungsaufstellung fürs Gericht: kein Modell rechnet mit.

Aus dem geprüften Zahlungs-Ledger schreibt Mila jetzt eine gerichtsfeste Forderungsaufstellung — die fertige Übersicht, die der Anwalt liest, nicht das Raster, das er deutet. Und für dieses eine Dokument haben wir die KI mit Absicht draußen gelassen.

Forderungsaufstellung
Juli 2026     Doppelzahlung   →  Guthaben, verrechnet
August 2026   keine Belege    →  nicht gefordert (0 €)
…

Rückstand (rechnerisch)
Verzugszinsen (§ 288)  — nur auf den belegten Rückstand,
                         ohne Zinseszins (§ 289)
Was nicht belegt ist, wird nicht gefordert. Ein Monat ohne Belege liest »keine Belege« und trägt 0 € — auch bei den Zinsen. »Rechnerisch«, nicht »nachgewiesen«: gerechnet, nicht behauptet.

Bei einem Zahlungsstreit braucht der Anwalt eine Forderungsaufstellung — die Rückstände, die Zinsen, Monat für Monat aufgeschlüsselt —, um sie ans Gericht zu hängen. Die schreibt Mila jetzt aus ihrem eigenen, geprüften Zahlungs-Ledger: die fertige Übersicht, nicht die Tabelle zum Deuten.

Und hier steckt die eigentliche Entscheidung. Man könnte das Modell schreiben lassen — es kann Tabellen, es kann Zahlen. Wir tun es bewusst nicht. Ein Gerichtsdokument ist genau die Stelle, an der eine halluzinierte Zahl echten Schaden anrichtet: eine erfundene Fälligkeit, ein geratener Zinssatz, und die Forderung steht auf Sand. Deshalb ist das Geld-Dokument von Grund auf modellfrei — ein deterministischer Renderer über belegte Daten. Jede Zahl entsteht aus einer Rechnung, die man Zeile für Zeile nachvollziehen kann, und ist bei jeder Erzeugung gleich. Für das Dokument, das vor den Richter kommt, ist die KI mit Absicht draußen.

Feiertage sind Rechts-Geografie

Das Heikle sind die Daten. Eine Fälligkeit hängt an Werktagen, Werktage hängen an Feiertagen, und Feiertage sind je Bundesland verschieden — ein falscher Feiertag verschiebt die Fälligkeit, die verschiebt den Verzugsbeginn, der verschiebt die Zinsen. Also rechnet Mila die Feiertage für alle 16 Länder als Geografie, gegen Quellen geprüft statt aus dem Gedächtnis — und ein nicht auflösbares Land fällt sauber in den Pfad »nicht bestimmt«, statt einen Feiertags-Satz zu raten.

Zinsen, konservativ gebaut

Die Zinsen rechnen zugunsten der Nachvollziehbarkeit: kein Zinseszins (strukturell — Zinsen fließen nie in die Basis zurück), Teilzahlungen zuerst auf die Hauptforderung, und — die Zeile, die für eine Gerichtsanlage zählt — Zinsen nur auf den belegten Rückstand. Ein Monat ohne Belege trägt 0 €, weil man auf einen Betrag, den die eigene Aufstellung ausnimmt, keine Zinsen fordern kann, ohne sich zu widersprechen.

  • Spine Das Geld-Dokument erzeugt sich beim Öffnen selbst und bleibt schreibgeschützt — so hält es sich immer an das Ledger, aus dem es stammt. Der Anwalt prüft und gibt frei.

Feinschliff: viele kleine Verbesserungen.

Viele kleine Dinge, die ein Produkt stimmig machen — jedes zu klein für eine eigene Überschrift, zusammen der Unterschied. Aus den letzten Wochen.

Vieles, was ein Produkt rund macht, ist zu klein für eine eigene Überschrift und zu wichtig, um es wegzulassen. Eine Auswahl aus dem, was zuletzt besser geworden ist:

  • UI Die Anrede im Onboarding grüßt mit Namen.
  • UI Die Auswahl-Chips starten neutral — die Wahl trifft die Person selbst — und stehen in klarer, aufrechter Schrift.
  • UI Die Vermieter-Bestätigung merkt sich geräteübergreifend, dass sie erledigt ist — einmal bestätigen reicht.
  • UI Die Erinnerungs-Frage bietet nur an, was auch zugestellt werden kann — E-Mail, WhatsApp oder beides; WhatsApp, sobald eine Nummer vorliegt.
  • UI Freitext im Mandant:innen-Chat geht immer an Mila und beantwortet jede Formulierung, nicht nur erkannte Stichwörter.
  • UI »Erstkontakt-Quelle« nennt die echte Quelle; die Unterschriften-Vorschau zeigt nur die Dokumente, die zählen.
  • UI »Meine Dokumente« zeigt einen frisch hochgeladenen Beleg sofort.
  • Spine Jede Fallart landet zuverlässig auf ihrer eigenen Fläche — die Bindung an die Fall-Definition sitzt schon beim Anlegen, mit Wächter.
  • Spine Ein Gericht-Export nimmt jeden Baustein sichtbar mit — unerwartete Knoten fallen auf, statt lautlos zu fehlen.
  • Copy Rückfragen an die Mandantschaft tragen durchweg klares Deutsch, nie einen technischen Bezeichner.

Jeder Bildschirm zeigt, was die Daten wirklich hergeben.

Jede Fläche leitet ihren Stand jetzt aus den echten Daten ab — der Status aus der Unterschrift, der Zähler aus den Dokumenten, die Konfliktprüfung aus dem Vertrag. Und wo etwas offen ist, sagt der Bildschirm das, statt zu raten.

Ableiten, nicht behaupten
Status          ←  aus Unterschrift · §43a · Analyse
Schritt-Zähler  ←  aus den echten Dokumenten
Konfliktprüfung ←  aus dem Mietvertrag

nicht bekannt?  →  »1 von 2«, nie ein erfundenes »2 von 2«
Jede Fläche folgt aus einem echten Datensatz — und wo der fehlt, sagt sie es offen, statt eine Zahl zu erfinden.

Eine Fläche sollte nur zeigen, was ihre Daten hergeben. Genau das haben wir zum Prinzip gemacht und durch das ganze Produkt gezogen: jeder Status, jeder Zähler, jede Statuszeile folgt aus einem echten Datensatz — und wo die Wahrheit offen ist, sagt der Bildschirm das, statt zu raten.

Konkret: Die Statuszeile liest die drei echten Tore — unterschrieben, §43a-geprüft, analysiert — statt einer festen Formel. Der Schritt-Zähler zählt die Dokumente, die wirklich angekommen sind; ein Dokument, das der Mandant nicht hat, liest »hat der Mandant nicht«. Hat eine Fallart keine Schritte, sagt der Bildschirm das ruhig; ist sie unbekannt, nennt er sie und bittet die Kanzlei um Meldung — keine tote Kachel, denn der Leser ist Anwält:in.

Eine Wahrheit pro Fakt

Die Regel darunter: ein Datensatz pro Tatsache. Ein Balken, der die Dokumente liest, kann ihnen nicht widersprechen; ein Status, der aus der Unterschrift folgt, kann sie nicht verfälschen. Und wo die Wahrheit offen ist, gibt der Bildschirm es zu — ein leeres Bezirks-Feld liest 1 von 2, nicht ein erfundenes 2 von 2. Es ist dieselbe Ehrlichkeit, die wir den Zitaten abverlangen, jetzt auf der Oberfläche.

Ein Beispiel, das für die Anwält:in zählt: In der Konfliktprüfung steht die Gegenseite jetzt mit Namen — gelesen aus dem Mietvertrag der Mandantschaft, noch bevor die Prüfung läuft. Man sieht, gegen wen man prüfen würde, bevor man prüft.

  • UI »KI-Analyse« heißt in der Kanzlei-Ansicht jetzt durchgehend Mila-Analyse — 23 Stellen, auch in der Datenbank.
  • Email Zustellung erstmals Ende-zu-Ende belegt: gesendet 14:15:49 → zugestellt 14:15:56, Status »delivered«, mit der Kennung, an der die Rückmeldung andockt.

Zwei Cent gespart, die Antwort verloren.

Wir wollten pro Frage zwei Cent sparen, indem wir einen Teil des Textes ans Modell wiederverwenden. Das Modell fing daraufhin an auszuweichen — »lässt sich nicht beantworten«, drei von drei Mal, bei Wort für Wort gleicher Anweisung. Also haben wir die Ersparnis gelassen.

Dieselbe Anweisung, andere Stelle
Belege direkt an der Antwort:
   … Belege …  →  [ Antwort beginnt hier ]
                                      → klare Antwort

Belege weggeschoben:
   [ Antwort beginnt hier ]   … Belege, weit weg …
                                      → »lässt sich nicht sagen«
Dieselben Worte, andere Stelle — andere Antwort. Rückte der Beleg-Block weg von der Stelle, an der die Antwort beginnt, wich das Modell aus. Die Anweisung war Byte für Byte gleich; nur die Geometrie hatte sich geändert.

Wenn du Mila etwas fragst und die Antwort in den Unterlagen steht, dann antwortet Mila — sie duckt sich nicht hinter ein »das lässt sich nicht sagen«. Diese Direktheit ist nicht selbstverständlich; sie hängt, wie sich zeigte, an etwas fast Unsichtbarem.

Wir wollten eine kleine Ersparnis heben: einen Teil des Textes, den wir dem Modell schicken, wiederverwenden, statt ihn jedes Mal neu aufzubauen — rund zwei Cent pro Frage. Dafür musste der Block mit den Belegen ein Stück weg von der Stelle, an der das Modell zu schreiben beginnt. Und das Modell änderte sich: in drei von drei Testläufen wich es aus — »lässt sich nicht beantworten«, genau die Ausflucht, die wir ihm verboten hatten. Die verbietende Anweisung war Wort für Wort dieselbe. Nur die Position hatte sich verschoben.

Die Anweisung war Wort für Wort dieselbe. Nur die Position hatte sich verschoben.

Geometrie, nicht Bauchgefühl

Also ist es nicht allein das, was man dem Modell sagt, das es bei einer echten Antwort hält — es ist, wo der Beleg steht. Direkt neben der Stelle, an der die Antwort beginnt, bleibt es geerdet und klar; schiebt man ihn weg, verliert es den Mut, bei gleicher Anweisung. Das Halten der Linie ist Geometrie, nicht nur Text.

Zwei Cent pro Frage sind im Maßstab echtes Geld. Wir haben sie liegen lassen. Und einen Riegel davorgeschoben: Niemand verschiebt den Beleg-Block wieder, ohne den Dreifach-Test erneut zu fahren, der das hier gefangen hat. Eine Ersparnis, die dich eine klare Antwort kostet, ist keine.

Lieber sichtbar unsicher, als falsch sicher.

Mila hatte in einem echten Schreiben ein gültiges Zitat gelöscht — und beim Nachbessern eines aus dem Gedächtnis erfunden. Für ein Produkt, das Halluzinationsfreiheit verspricht, ist genau das die eine Sache, die nicht passieren darf. Jetzt wird ein unsicheres Zitat sichtbar markiert, nie stillschweigend ersetzt.

Entwurf · unsicheres Zitat
»… gemäß § 5 Abs. 2 WiStG handelt ordnungswidrig, wer …«

    ⚠  UNGEPRÜFT · nicht im Corpus bestätigt · SELBST PRÜFEN
Nicht gelöscht, nicht heimlich ersetzt — markiert. Ein Zitat, das Mila nicht bestätigen kann, bleibt sichtbar im Text und trägt seinen Warnhinweis. Die Markierung ist bewusst nur am Bildschirm: die sichtbare Naht ist genau die Stelle, an der die Garantie endet.

In einem echten Schreiben, das Mila für Immi baute, verschwand ein Zitat — ein gültiges, § 5 Abs. 2 WiStG. Das Tor, das die Zitate bewacht, las es falsch und strich es heraus. Schlimmer noch: als Mila nachbesserte, um die Lücke zu füllen, erfand sie aus dem Gedächtnis einen Ersatz. Für ein Produkt, dessen ganzes Versprechen halluzinationsfrei heißt, ist das die eine Sache, die nicht passieren darf — ein echtes Zitat gelöscht, ein erfundenes an seiner Stelle.

Also haben wir geändert, was ein Veto bedeutet. Weist das Tor ein Zitat zurück, wird diese Zurückweisung jetzt festgehalten und dem Gespräch erklärt — Mila weiß, dass eine Fundstelle zurückgehalten wurde und warum, und behandelt die Lücke nie als Leerstelle, die sie aus dem Gedächtnis füllt.

Unsicher, aber sichtbar

Und ein Zitat, das wahrscheinlich stimmt, sich aber nicht bestätigen lässt, wird weder gelöscht noch heimlich eingesetzt. Es bleibt im Text, genau dort, wo es hingehört, und trägt eine Warnung: ⚠ UNGEPRÜFT · SELBST PRÜFEN. Du siehst es, prüfst es, entscheidest. Die Markierung lebt bewusst nur am Bildschirm — die sichtbare Naht ist genau die Stelle, an der die Garantie endet und dein Urteil beginnt.

Und der Auslöser von allem? § 5 Abs. 2 WiStG wird inzwischen sauber bestätigt — ein Fix in der Corpus-Suche sorgt dafür, dass das Tor die Norm erkennt und nie wieder streicht. Ausgerechnet der Fall, der alles anstieß, ist keiner mehr.

Sechs Wochen kaputt — und das war gut so.

Ein wöchentlicher Generator für unsere Ratgeber-Seiten lief sechs Wochen ins Leere. Als wir nachsahen, war der Ausfall ein Glücksfall — und wir haben ihn ausgelassen, statt ihn zu reparieren.

Der stille Schutz
erfundene Fundstellen, einmal
38
von einem ungeprüften Generator
seither veröffentlicht
0
er bleibt aus, bis er prüft
Der Ausfall war der Schutz. Derselbe Generator produzierte einmal 38 erfundene BGH-Fundstellen; seit er kaputt ist, kommt nichts Ungeprüftes mehr durch — und so bleibt es, bis er seine Zitate belegt.

Ein leiser wöchentlicher Job baut die Ratgeber-Seiten auf unserer Website. Jeden Montag lief er seit sechs Wochen ins Leere — er zeigte auf ein KI-Modell, das es nicht mehr gibt. Die naheliegende Reparatur: auf ein aktuelles Modell umstellen, fertig. Wir haben es nicht getan.

Denn als wir hinsahen, fanden wir das eigentliche Problem: diese Seiten-Generatoren schreiben juristischen Inhalt — Paragraphen, Urteile, Fundstellen — und prüfen davon nichts. Anfang des Jahres haben genau sie 38 erfundene BGH-Fundstellen auf Seiten gesetzt, bevor wir es fingen. Jeder andere Teil von Mila schickt seine Zitate durch ein Tor, das prüft, ob das Urteil existiert und ob es trägt, was der Satz behauptet. Diese Generatoren tun das nicht.

Der Ausfall war ein Sicherheitsgurt

Also war die sechswöchige Panne kein Fehler — sie war ein Schutz. Ein Generator, der seine eigenen Zitate nicht prüfen kann, saß da und konnte nichts veröffentlichen, und das war genau richtig. Wir lassen ihn aus. Zurück kommt er erst, wenn er zitiert wie alles andere bei Mila: durch dasselbe Tor, oder gar nicht.

Was seine Zitate nicht prüft, darf nicht schreiben — auch nicht für uns selbst.

Erbrecht auf eine Mietrechts-Frage: die Suche, neu gezogen.

Eine Frage zum Erstbezug holte zwölf Quellen — alle aus dem Erb- und Familienrecht. Mila hat daraus nichts geantwortet, sondern die Frage verweigert. Dann haben wir die Suche repariert: das falsche Gesetz kommt jetzt gar nicht erst in die Auswahl.

match_chunks · vorher
Frage: »was gilt als Erstbezug?«

§ 1374  Anfangsvermögen   0,8394   ← Erbrecht, gewinnt
§ 556f  Erstbezug         0,8196   ← die richtige Norm, verliert
0,02 Punkte trennen die richtige Norm von einem Nachlass-Paragraphen. Da hilft keine Schwelle — das falsche Gesetz darf gar nicht erst zur Auswahl gehören.

Immi stellte eine Mietrechts-Frage: was gilt als Erstbezug? Die Suche gab zwölf Quellen zurück — und alle zwölf kamen aus dem Erb- und Familienrecht. Das Anfangsvermögen bei der Scheidung, der Dreißigste beim Nachlass, kein Wort über Miete. Und hier ist der Teil, auf den es ankommt: Mila hat daraus nichts geantwortet. Sie hat die Frage verweigert, statt auf Recht zu antworten, das nicht passt. Die Antwort-Ebene war richtig — falsch war, was ihr vorgelegt wurde.

Warum lag Erbrecht auf dem Tisch? Weil das gesamte BGB — Erbrecht, Familienrecht, Sachenrecht, Kaufrecht — bei jeder Frage mitkonkurrierte. Und die richtige Norm verlor knapp: § 556f, der den Erstbezug wörtlich definiert, kam auf 0,8196; § 1374 Anfangsvermögen, eine Erbrechts-Norm, auf 0,8394 — und gewann. Zwei Hundertstel. Das lässt sich nicht mit einer Schwelle beheben: das falsche Gesetz darf schlicht nicht im Rennen sein.

Was ein Gesetz ist, und was es darf

Die Lösung ist eine Trennung. Ob ein Urteil Mietrecht ist, ist eine Tatsache. Ob ein Gesetz für die Suche infrage kommt, ist eine Entscheidung — und die haben wir getrennt festgeschrieben. Wir haben nicht das Erbrecht zu »Mietrecht« erklärt, um es rauszuhalten — das wäre eine falsche Tatsache; wir haben jeder Norm eine Such-Freigabe gegeben. Nach Belegen gewählt, in zusammenhängenden Blöcken, aus einer einzigen unterschriebenen Quelle — mit einer Kontrolle, die den Start verweigert, wenn die Karte lückenhaft ist. Beim ersten Lauf hat sie sechs übersehene Gesetze gefangen. Immi hat 23 vielzitierte Normen gegengezeichnet, die zu Unrecht gefehlt hatten — und zwei ganze Gesetze, die schlicht fehlten, kamen dazu: das Wohnungseigentumsgesetz und Art. 14 Grundgesetz, der Anker der Sozialbindung.

Das Ergebnis auf Immis Frage: von 12 aus 12 falsch auf 0 aus 12. Die richtige Norm steht jetzt oben.

  • Corpus Ein Zitat wie »§ 5 Abs. 2 WiStG« band nicht mehr richtig — die Norm wurde erkannt, aber der §-Filter strich sie, weil das Gesetz nicht direkt an der Nummer stand; fünf gültige Zitate in einem echten Schreiben ans Wohnungsamt fielen so weg. Jetzt binden auch Zitate mit Abs., Satz oder Nr. dazwischen. Im Zweifel fällt der Filter zu, nie auf.
  • Corpus »§ 721« band das BGB (Gesellschafterhaftung) statt der ZPO (Räumungsfrist) — in einer Räumungsklage die glatt falsche Norm. Behoben.
  • Corpus Eine Regressions-Batterie an echten Fällen ist jetzt das Tor für jede Änderung an der Suche — ein Rückschritt bricht den Build, nicht die Beratung.

Frag die Bibliothek — und frag weiter.

Aus der einmaligen Frage ist ein Gespräch geworden: Nachfragen bauen auf denselben Belegen auf, alles speichert sich von selbst, und du kommst jederzeit dorthin zurück. Belegt bleibt jede Antwort — und wo Mila unsicher ist, sagt sie es.

Ein Gespräch mit der Bibliothek
Frage:     »Wann greift die Kappungsgrenze bei § 558?«
           → Antwort, belegt mit [1] … [4]

Nachfrage: »Und bei einer Modernisierung?«
           → baut auf denselben Belegen auf,
             kein neuer Griff ins Regal

  ↩  jederzeit unter »Recherchen« wieder da
Eine Frage wird ein Faden. Die Nachfrage denkt über dieselben Fundstellen weiter, statt neu zu suchen — und das ganze Gespräch speichert sich von selbst.

»Frage an die Bibliothek« war bisher ein Einzelschuss: Frage rein, eine Antwort raus, vorbei. Jetzt ist es ein Gespräch. Du fragst, Mila antwortet — belegt, mit Fundstellen. Und wenn du nachfragst, baut die Nachfrage auf denselben Belegen auf, die Mila gerade gefunden hat, nicht auf einer frischen Suche. »Und bei einer Modernisierung?« führt den Faden weiter, statt von vorn anzufangen.

Verloren geht dabei nichts. Jedes Gespräch speichert sich von selbst, während es läuft — es gibt keinen Speichern-Knopf, den man vergessen könnte. Unter Recherchen wartet jede frühere Unterhaltung, benannt nach ihrer ersten Frage; ein Klick, und du bist wieder mittendrin.

Belegt bleibt belegt

Durch alles zieht sich eine Regel: die Bibliothek erfindet keine Fundstelle. Jede Aussage trägt ihre Quelle; wo Mila ein Zitat nicht bestätigen kann, erfindet sie keines. Sogar die Zählung ist ehrlich geworden — früher schätzte sie »12 Urteile«, jetzt zählt sie die tatsächlich belegten Quellen. Eine Recherche, der man nicht hinterherprüfen muss, ist der ganze Punkt.

  • Spine Recherchen — jede Unterhaltung, ob mit Nachfragen oder einzeln, taucht danach in einer Liste auf, nach ihrer ersten Frage benannt; »Meine« und »Kanzlei« als Ansicht.
  • UI Kopieren nimmt die Antwort mit Überschriften, Fett und Tabellen mit ins Word-Dokument oder die E-Mail; eine frühere Recherche öffnet die gespeicherte Antwort sofort, statt sie neu zu berechnen.
  • Corpus 278 falsch beschriftete Quellen korrigiert — Gesetze, die als BGH-Linien liefen, tragen wieder das richtige Etikett; mit einer trockenen Simulation vorab, die Byte für Byte prüfte, bevor irgendetwas geändert wurde.
  • UI Übergänge etwas ruhiger (400 ms Überblendung), Zuklappen überall, eine saubere Trennung zwischen Bibliothek und Mila-Chat — aus Live-Feedback in derselben Sitzung.

Deine Fotos gehören zu deiner Akte — und zu keiner anderen.

Mängel-Fotos und Falldokumente sind jetzt fest an ihre Akte gebunden: sichtbar nur dort, und gelöscht, sobald die Akte gelöscht wird. Und die Prüfung, die unsere Trennwände bewacht, sieht jetzt auch den Datei-Speicher.

In einem Mietrechts-Fall werden Beweise hochgeladen — Fotos vom Schimmel, von der Feuchte, von der kaputten Heizung. Die gehören zu diesem Fall und zu keinem anderen. Jetzt sind sie genau dort gebunden: nur die Beteiligten dieses Falls sehen sie, eine fremde Anmeldung bekommt nichts.

Sie waren zuvor breiter zugänglich, als sie sein mussten — das haben wir enger gezogen, noch bevor die erste echte Kanzlei kommt: Fotos wie Dokumente sind jetzt fest auf ihren Fall begrenzt, geprüft in der Datenbank selbst, nicht erst in der Oberfläche.

Gelöscht heißt gelöscht

Und wenn ein Fall gelöscht wird, gehen seine Dateien mit. Das taten sie nicht — das meiste, was im Speicher lag, waren verwaiste Reste längst gelöschter Fälle, fast 500 Megabyte. Löschen räumt jetzt auch die Dateien ab.

Was die Prüfung nicht sieht, kann sie nicht schützen

Der feine Teil zum Schluss. Unsere Kontrolle für die Trennung zwischen Kanzleien liest an jeder Zeile eine Markierung, wem sie gehört. Dateien im Speicher tragen diese Markierung nicht — die Kontrolle war für sie also strukturell blind. Wir haben sie erweitert, damit sie auch den Datei-Speicher abdeckt. Eine Prüfung, die eine Fläche überspringt, ist keine Prüfung.

  • UI Foto-Galerie im Mandant:innen-Konto lädt jetzt über signierte Links (der Foto-Speicher ist privat) — Bilder erscheinen wieder, statt zu brechen.
  • Infra 240 verwaiste Dateien (486 MB) aus längst gelöschten Fällen entfernt.

16 Fallarten, und die Reihe ist komplett.

Mila führt jetzt alle 16 Mietrechts-Fallarten durchgängig — von der Mietpreisbremse bis zur Nebenkosten-Rückforderung, der zuletzt gebauten. Keine ist ein Einzelstück: jede läuft denselben geprüften Weg.

Matters · komplett
Fallarten, live
16
die Reihe ist komplett
Ablauf
1
derselbe Weg für alle 16
Kein Sonderfall. Zuletzt dazugekommen: der Mietspiegel-Wechsel und die Nebenkosten-Rückforderung — beide rechnen, statt nur zu prüfen.

Als Mila mit der Mietpreisbremse anfing, war das eine Fallart. Jetzt sind es 16, und mit der letzten — der Nebenkosten-Rückforderung — ist die Reihe komplett: von der Mietpreisbremse über Kündigung, Eigenbedarf und Mieterhöhung bis zur Räumungsklage, alle über denselben Weg: Einstieg, KI-Analyse, Anwalts-Freigabe, Schriftsatz.

Der Punkt ist nicht die Zahl — es ist, dass keine davon ein Sonderfall ist. Eine neue Fallart hinzuzufügen heißt nicht, ein neues Produkt zu bauen; es heißt, aus derselben Form zu gießen. Für die Kanzlei liegt darin das Eigentliche: jede Fallart bekommt dieselbe Sorgfalt — dieselbe Analyse, dieselbe Pflicht zur Anwalts-Freigabe an jeder einzelnen Stelle — und keine ist zweite Klasse, weil sie neuer ist.

Die interessanteste: Modernisierung

Bei den meisten Fallarten liest Mila die Unterlagen und prüft, was rechtlich gilt. Modernisierung ist die erste, bei der sie zusätzlich rechnen muss — die Zahl des Vermieters selbst nachrechnen. Die Modernisierungs-Umlage nach § 559 hat eine echte Rechen-Mechanik: der 8-%/11-%-Schnitt am Stichtag 2019, umlagefähige Kosten minus Instandhaltung minus Drittmittel, die Kappung bei 3 bzw. 2 € pro Quadratmeter. Das läuft als deterministischer Code, nicht als Modell-Schätzung — und wenn eine nötige Angabe fehlt, etwa die Ausgangsmiete, sagt Mila »zu klären« statt zu raten.

Warum die Trennung hier zählt: eine falsch gerundete Umlage ist kein Stilfehler, sondern ein falscher Betrag im Schreiben an den Vermieter. Deshalb rechnet an dieser Stelle kein Sprachmodell, sondern Code, den man Zeile für Zeile prüfen kann. Das Modell liest und ordnet ein, die Mathematik rechnet — sechzehn Mal jetzt, immer nach derselben Trennung.

  • Spine Milas Fall-Chat denkt jetzt auf Basis der freigegebenen Befunde mit — nur was der Anwalt bestätigt hat, fließt in die Antwort ein.
  • Email Zustellung wird verfolgt: Postmark meldet Zugestellt, Bounce und Spam-Beschwerde zurück — live in ~12 Sekunden bestätigt.
  • Spine Alle 8 vor der Bibliothek gebauten Fallarten gegen den Corpus nachgeprüft — 5 sauber, 3 mit additiven Lücken, 0 Fehler: keine live Fallart war kaputt.
  • UI Sende-Dialog scrollt auf kleinen Bildschirmen jetzt intern, statt den Footer abzuschneiden.

Jeder Test bestanden, und trotzdem kaputt.

Eine winzige Änderung bestand jeden automatischen Test — und ließ die Analyse in der Praxis trotzdem nicht mehr starten. Für dich zählt das Ende: solche Ausfälle fallen nur im Test auf, nicht mitten im Mandat.

Vorfall · Verlauf
Änderung geht live
ein Feld mehr — alle Tests grün
Analyse bricht ab
alle 13 Fallarten, im selben Moment
Bemerkt und zurückgesetzt
beim ersten Fehlversuch, in Minuten
Wächter eingebaut
misst die Grenze jetzt bei jeder Änderung
Vier Schritte vom Feld zum Feuer und zurück. Kein einziger echter Fall war betroffen — der Ausfall war laut, sofort sichtbar und in Minuten behoben.

Für eine Kanzlei ist die KI-Analyse kein Extra — sie ist der erste Schritt jeder Akte. Startet sie nicht, steht der Fall. Genau das wäre an einem Tag im Juli fast passiert, und die Geschichte lohnt sich, weil ihr Ende die eigentliche Zusage ist.

Für die neue Modernisierungs-Fallart musste Mila zum ersten Mal richtig rechnen — und dafür brauchte ein kleiner, geteilter Baustein der Analyse ein zusätzliches Feld. Winzig, ein einziges. Alle automatischen Tests liefen durch: die Ergebnisse sahen aus wie vorher, der Code war sauber.

Und trotzdem war es kaputt. Dieses eine Feld hat eine unsichtbare Grenze überschritten. Vor jeder Antwort baut die Analyse ein festes Regelwerk auf, das dem Modell genau vorschreibt, welche Form die Antwort haben darf — und dieses Regelwerk wurde ein Stück zu groß, um überhaupt gebaut zu werden. Ab da startete die Analyse gar nicht mehr: nicht nur für die Modernisierung, sondern für alle damals 13 Fallarten. Und kein Test bemerkt das, denn Tests prüfen die Antwort — hier aber gab es keine Antwort, die Anfrage kam nie durch.

Ein Test, der die Antwort prüft, merkt nicht, dass die Anfrage gar nicht erst durchgeht.

Bemerkt, zurückgesetzt, abgesichert

Gleich beim ersten Fehlversuch aufgefallen. Die Analyse zuerst auf den Stand von vorher zurückgesetzt — in Minuten, ein ehrliches »läuft gerade nicht« statt ein Flicken unter Druck. Dann die Ursache in Ruhe belegt und die Änderung kleiner nachgebaut: dieselbe Rechnung, weniger Regelwerk.

Und das ist der Teil, der dich angeht. Nicht, dass ein Fehler passiert ist — den macht jede Software. Sondern dass die Sorte Fehler, die dich mitten im Mandat treffen könnte, jetzt schon beim Bauen anschlägt, lange bevor sie in die Nähe einer echten Akte kommt: eine Kontrolle misst dieses Regelwerk bei jeder Änderung und blockiert, sobald es zu groß zu werden droht. Verlässlichkeit ist hier kein Glück — sie ist eine Kontrolle, die anschlagen muss, damit nichts Kaputtes bei dir ankommt.

Wer darf was: die Zulassung, nicht der Rang.

Vier Rollen in der Kanzlei, eine Plattform-Rolle darüber — und ein Tor, das kein Rang öffnet: eine anwaltliche Handlung braucht die Zulassung, nicht die höchste Berechtigung. Dazu: was mit den Akten passiert, wenn eine Kanzlei geht.

Wer darf was
SUPER_ADMIN   verwaltet die Plattform    — keine Anwaltshandlung
ADMIN         verwaltet die Kanzlei      — keine Anwaltshandlung
ANWALT        führt Mandate, gibt frei   — Anwaltshandlung
REFERENDAR    bereitet vor, entwirft     — keine
ASSISTENZ     arbeitet zu                — keine

ist_rechtsanwalt ist die einzige Tür zu BRAO-Handlungen.
Kein Rang öffnet sie.
Die Sperre ist die Zulassung, nicht der Rang. Auch mit den höchsten Rechten kann niemand eine anwaltliche Handlung freigeben, für die er nicht zugelassen ist — es gibt keine Hintertür für den Super-Admin.

Bei einem Rechtsprodukt ist »wer darf was« keine Einstellungs-Kleinigkeit — es ist der Kern. Eine Kanzlei hat jetzt vier Rollen: Admin, Anwält:in, Referendar:in, Assistenz. Darüber steht eine reine Plattform-Rolle, Super-Admin. So weit, so gewöhnlich.

Die tragende Entscheidung ist nicht die Rollenliste — es ist das Tor davor. Eine der BRAO vorbehaltene Handlung, etwa einen Schriftsatz freizugeben oder eine Rüge zu senden, hängt an genau einem Schalter: ist_rechtsanwalt. Nicht an der Rolle, nicht am Rang. Und, das ist der Punkt: es gibt keine Hintertür für den Super-Admin. Selbst wer im System die höchsten Rechte hat, kann keine anwaltliche Handlung freigeben, für die er nicht zugelassen ist.

Praktisch heißt das: die Assistenz kann einen Schriftsatz vorbereiten, aber nicht freigeben; die Referendarin kann entwerfen, aber nicht senden; und selbst die Gründerin kann, wenn sie keine Anwältin ist, die letzte Freigabe nicht setzen. Das ist kein Misstrauen — es ist die Berufsordnung, in Code gegossen.

Die Sperre ist die Zulassung, nicht der Rang.

Was bleibt, wenn eine Kanzlei geht

Dieselbe Frage eine Ebene höher: was passiert mit den Daten, wenn eine Kanzlei Mila verlässt? Sie werden nicht gelöscht — sie werden archiviert. Denn die Aufbewahrungspflicht läuft sechs Jahre, und sie gilt dem Mandanten, nicht dem Abonnement der Kanzlei. Eine verlassene Kanzlei wird stillgelegt, ihre Akten bleiben — lesbar und herausgebbar, falls ein Mandant oder eine Kammer sie verlangt, aber unveränderlich: niemand schreibt mehr hinein. Löschen wäre der bequeme Weg. Er wäre auch der falsche.

  • Spine Jede Kanzlei wählt selbst: beratend (das System warnt) oder erzwungen (das System sperrt) — dieselben Regeln, zwei Härtegrade.
  • Spine »Inhaber:in« wird nicht gesetzt, sondern unterschrieben — die Rolle folgt aus der Signatur des Rahmenvertrags, nicht aus einem Häkchen.
  • Spine Drei Wege, das Zulassungs-Tor zu umgehen, aufgespürt und geschlossen — jeder mit einem Angriffs-Test belegt.

Was Mila schreibt, kannst du jetzt formen.

Milas Entwürfe waren fertiger Text — jetzt sind sie Arbeitsmaterial: kürzer, länger, einfacher auf Knopfdruck, sauber ins Word-Dokument kopiert, im Editor geöffnet. Und was du oder deine Kolleg:innen daran ändern, bleibt auch gespeichert.

Entwurf · Aktionen
Entwurf:  Rüge nach § 556g

  [ Kürzer ]   [ Länger ]   [ Einfacher ]
  [ Kopieren ]     [ Im Editor öffnen ]

  ● Gespeichert
Vom fertigen Text zum Arbeitsmaterial. Kürzer, länger, einfacher formt den ganzen Entwurf an Ort und Stelle; Kopieren nimmt ihn mit Formatierung mit; das Pünktchen sagt jederzeit, ob gespeichert ist.

Mila schreibt — eine Argumentation, eine Rüge, eine Antwort auf eine Frage. Bisher war da Schluss: du bekamst den Text, und alles danach war Kopieren und von Hand nacharbeiten. Das hat sich geändert.

Im Chat bekommt eine schwache Antwort jetzt ein Nochmal, eine gute wird sauber kopiert oder mit einem Daumen bewertet, der in eine echte Rückmeldungs-Übersicht für die Kanzlei fließt. Eine eigene Frage lässt sich ändern und neu stellen. Und Mila erfindet keine Gesprächstitel mehr aus dem Nichts — aus »neuer Fall:« wurde einmal ein selbstbewusstes »Schadensersatz für fehlerhafte Zahnbehandlung«; jetzt steht im Titel, was wirklich gesagt wurde.

Den Entwurf formen, nicht neu tippen

Jeder Entwurf trägt seine eigene Leiste. Kürzer, Länger, Einfacher schreiben den ganzen Text an Ort und Stelle um — Mila meldet »Mila kürzt …« und gibt eine geformte Fassung zurück. Kopieren nimmt ihn mit Überschriften, Fett und Tabellen mit ins Word-Dokument oder die E-Mail. Im Editor öffnen legt ihn in den vollen Editor. Und ein kleines Pünktchen oben sagt jederzeit, ob gespeichert ist.

Und deine Änderungen bleiben

Der stille Teil, auf den es am meisten ankam: den Entwurf einer Kolleg:in zu bearbeiten sah aus wie speichern und war keins — der Vorgang traf null Zeilen und meldete Erfolg, und die Änderung war weg. Das haben wir an der Wurzel geschlossen: ein Speichern, das nichts ändert, ist jetzt ein lauter Fehler, kein stilles Achselzucken — und Entwürfe der Kanzlei sind vom ganzen Team bearbeitbar, nicht nur von dem, der sie angelegt hat. Was du änderst, bleibt.

  • Spine Ein Zeitüberschreiten (504) beim ersten Wort behoben — mehrere angehängte Dokumente werden jetzt parallel statt nacheinander gelesen, sodass sich die Wartezeit nicht mehr aufsummiert.
  • UI »Springe zur neuesten Nachricht« sitzt jetzt mittig über dem Eingabefeld, statt unbemerkt in der Ecke.
  • UI Editor-Aufräumen: »Schreiben« und »Bearbeiten« waren nie verschieden — zu einem Modus zusammengelegt; Felder, die bei Assistent-Entwürfen ins Leere schrieben (Aktenzeichen, Typ, Empfänger), entfernt.

Upload-Gedächtnis: nicht nur gesehen, gemerkt.

Ein Dokument hielt bisher, solange das Gespräch lief — aber wer Tage später zurückkam oder zwischendurch Neues hochlud, verlor seine Daten, gerade die aus Bildern. Jetzt bleiben sie.

Mila · Durchlauf
Turn 1   [Wohnflächen-Gutachten.pdf abgelegt]
         → Kurzbefund: 78,2 / 69,4 m², Abweichung 11,3 %

  … vier Fragen später, ohne erneutes Anhängen …

Turn 6   »Wie lautet die Prüfprotokoll-Nummer?«
         → WFM-2024-LICH-00731-K

Turn 7   »Und was war die festgestellte Abweichung?«
         → 11,3 %  (§ 4 WoFlV, raumweise belegt)
Die Daten, nicht nur das Dokument. Vier Fragen später kommen Prüfprotokoll-Nummer, Quadratmeter und Abweichung zurück — ohne erneutes Anhängen, ohne dass das Gespräch zwischendurch darüber gesprochen hätte. Live durchgelaufen.

»Lies dieses Dokument« hat immer funktioniert — und solange das Gespräch lief, blieb das Dokument auch präsent. Der Bruch kam später: wer Tage darauf an den Thread zurückkehrte oder zwischendurch neue Dateien hochlud, bei dem war der Inhalt fort. Was überlebte, war nur, was Mila vorher in Worten dazu gesagt hatte — nicht das Dokument selbst.

Ein Bild sehen ist nicht, seine Daten behalten

Bei Bildern ist dieser Unterschied am schärfsten. Ein Bild zu sehen und die Daten daraus später abzurufen sind zwei verschiedene Dinge. Mila konnte einen Zählerstand, eine Nummer, eine Tabelle aus einem Foto im Moment des Hochladens lesen — aber einige Fragen später war die Zahl nur noch da, wenn sie sie zufällig ausgeschrieben hatte. Das Bild selbst, und damit seine Daten, war weg.

Jetzt wird der Inhalt jedes Dokuments dauerhaft gespeichert — Text, Tabellen und die aus Bildern und Scans ausgelesenen Daten. Du legst ein Foto oder ein PDF einmal ab und fragst später im Gespräch nach einer konkreten Zahl daraus — ohne erneut anzuhängen, und ohne dass das Gespräch zwischendurch darüber gesprochen haben muss.

Wenn der Platz nicht reicht, sagt es das

Unter der Haube hält jedes Dokument zwei Ebenen: eine immer präsente Kurzfassung mit Identität und Anfang — der Boden, der »ist noch da« wahr macht — und den vollen Inhalt, der den begrenzten Platz im Kontext von neu nach alt füllt. Reicht der Platz nicht, verschwindet ein älteres Dokument nicht stillschweigend: es sagt »frag nach dem Wortlaut« und behält seine Kurzfassung. Bilder und PDFs werden dafür einmal ausgelesen und gespeichert, nicht bei jeder Folgefrage neu.

Die Disziplin ist dieselbe wie überall bei Mila: lieber eine ehrliche Lücke als eine erfundene Antwort. Was nicht mehr in den Kontext passt, wird als fehlend markiert — nie halluziniert.

  • UI Randnotizen an Milas Antworten: markiere eine Stelle in einer Antwort — sie wird gelb hervorgehoben und bekommt einen Notizzettel am Rand, zum Nachschlagen, Prüfen oder Festhalten. Bleibt am Thread, privat.
  • UI Export: jeder Mila-Entwurf lässt sich als PDF oder Word-Datei herunterladen — direkt aus dem Menü über dem Entwurf.
  • UI Datei-Ablage auf der ganzen Fläche: ein Dokument, irgendwo in Mila fallen gelassen, hängt jetzt an — nicht nur über dem kleinen Eingabefeld.
  • UI Denk-Anzeige: zwischen Absenden und erster Antwort erscheint jetzt »Mila denkt nach …« statt einer leeren Pause, die wie ein Fehler aussah.
  • UI Anhänge stapeln über der Nachricht statt gequetscht daneben.
  • UI Zeiterfassung, die mitdenkt: der »Wie lange ohne Mila?«-Dialog fragt jetzt einmal pro Arbeitsblock (ab ~10 Min oder fünf Freigaben) statt nach jeder einzelnen Freigabe — systemweit der neue Standard.
  • Infra Export-Dienst (PDF/Word) fiel bei jedem Titel mit Doppelpunkt — also bei »Rüge: …«, »Memo: …« — auf einen 502; der Titel wird jetzt außerhalb des YAML-Blocks übergeben, der Dienst zusätzlich in den Projekt-Code gespiegelt.
  • UI Export-Menü schließt per Klick daneben und Esc.

In die Bibliothek übertragen: nicht alles ist eine Akte.

Ein guter Mila-Entwurf wird mit einer Aktion zu durchsuchbarem Firmenwissen. Die Frage lautet: wo landet der Entwurf — und warum nicht im »Aktenschrank«?

Wo ein Dokument lebt
Mandant:innen-Dokument   →  Akte
                            BRAO-Aufbewahrung · 6-Jahre-Uhr läuft

Kanzlei-Baustein         →  Bibliothek
                            Firmenwissen · keine Frist · kein Mandantsbezug
Nicht alles, was Mila schreibt, ist eine Akte. Ein gespeicherter Baustein ist Firmenwissen ohne Aufbewahrungspflicht — er gehört in die Bibliothek, nicht in den »Aktenschrank« mit laufender Frist.

Mila schreibt Bausteine — eine Rüge-Argumentation, ein Memo, eine Klausel-Prüfung. Bisher lebten die in dem einen Gespräch, in dem sie entstanden. Jetzt kann eine Kanzlei einen guten Entwurf mit einer Aktion in die Bibliothek übertragen: gespeichert, durchsuchbar, wiederverwendbar — Firmenwissen statt Wegwerf-Antwort.

Der naheliegende Bau wäre gewesen, den Entwurf abzulegen wie jedes andere Dokument. Aber genau da steckt eine mietrechtliche Unterscheidung, die zählt.

Eine Akte hat eine Uhr. Ein Baustein nicht.

Ein Mandantsdokument trägt eine Aufbewahrungspflicht — die Sechs-Jahre-Frist der BRAO, gekoppelt an die Akte. Ein wiederverwendbarer Baustein trägt das nicht: kein Mandant, keine Frist, kein Aktenbezug. Ihn in den »Aktenschrank« zu legen, wäre falsch — er bekäme eine Frist, die ihm nicht zusteht.

Also liegt ein gespeicherter Entwurf im Firmenwissen, nicht in der Akte. »Speichern« setzt nur eine Sichtbarkeit — das Dokument bewegt sich nicht — und die Bibliothek zeigt es als direkten Verweis, schreibgeschützt, nie als Kopie. Eine Quelle, zwei Ansichten.

  • Spine Entwurfs-Typen auf eine Quelle vereinheitlicht — Mila wählt jetzt selbst zwischen Argumentation (Baustein), Schriftsatz, Memo, Zusammenfassung und Prüfung, statt jede Anfrage in einen »Schriftsatz« zu zwängen.
  • UI Bausteine entstehen ohne Mandantendaten — nur Platzhalter, damit sie wirklich wiederverwendbar bleiben.
  • Spine Ehrliche Statusanzeige: ein fehlgeschlagener Entwurf zeigt nicht mehr grün »erledigt« — die Anzeige spiegelt jetzt das echte Ergebnis und wird bei einem Fehler rot.

Mandantengeheimnis, kontinuierlich bewiesen.

Mila prüft ab jetzt täglich und bei jeder neuen Version, dass die Trennwände zwischen- und innerhalb von Kanzleien halten — Mandantengeheimnis, Doppelmandat-Sperre, geschützte Nutzer:innen. Drei Garantien, zwei Ebenen, kein Vertrauen auf »haben wir doch geprüft«.

Vertraulichkeit ist bei einem Mietrechts-Produkt nicht ein Feature — sie ist das Produkt. Eine Kanzlei darf die Akten einer anderen nie sehen. Ein Doppelmandat — dieselbe Gegenseite auf beiden Seiten — muss hart blockiert sein. Geschützte Personen müssen geschützt bleiben. Das alles war schon abgesichert. Aber eine Garantie, die man nicht ständig nachprüft, ist keine Garantie — nur Vertrauen.

Deshalb prüft Mila diese drei Garantien jetzt selbst, fortlaufend, auf zwei Ebenen.

Zwei Ebenen, drei Garantien

Ein täglicher struktureller Scan liest die Zugriffsregeln der Datenbank und schlägt an, wenn sich ihre Form verschiebt — etwa wenn jemand eine Regel von Hand lockert. Eine Verhaltensprüfung bei jeder neuen Version spielt die Angriffe tatsächlich durch: sie versucht, fremde Daten zu lesen, ein Doppelmandat durchzudrücken, eine geschützte Person zu anonymisieren — und schlägt fehl, wenn auch nur eine dieser Mauern nachgibt. Die erste Ebene fängt die Regel, die aussieht wie immer, aber gelockert wurde; die zweite fängt die Regel, die richtig aussieht, aber falsch handelt.

Eine Garantie, die du nicht ständig nachprüfst, ist keine Garantie — nur Vertrauen.

Was der Bau selbst zutage förderte

Als wir uns an die Festigung der Trennwände gemacht haben, hat unser Research zwei Stellen aufgedeckt, an denen eine Trennwand dünner war als sie sein durfte. Beide waren latent — das System trägt noch keine echten Mandatsdaten — und beide wurden geschlossen, bevor die erste Kanzlei jemanden einlädt. Genau dafür baut man den Monitor: nicht damit nie etwas driftet, sondern damit das Driften auffällt, solange es noch nichts kostet.

  • Spine Struktureller Scan über sechs Arten von Abweichung (von Hand gelockerte Regeln, fehlende Schreib-Sperren, wieder freigeschaltete anonyme Zugriffe) — täglich, als priorisiertes Signal der Systemüberwachung.
  • Spine Verhaltens-Prüfungen für alle drei Garantien bei jeder neuen Version: Lesen über Kanzlei-Grenzen hinweg, Doppelmandat-Sperre, Schutz vor Anonymisierung — jede als echter Probe-Angriff, der fehlschlagen muss.

2.993 Verweise zwischen Urteilen: deterministisch, kein Modell.

Wo wird welches Urteil zitiert? Jetzt als Netz aus echten Aktenzeichen — jeder Verweis trifft ein echtes Urteil. Hier hat kein Modell geraten.

corpus_citations · Netz
Zitat-Verweise
2.993
deterministisch extrahiert
Halluziniert
0
kein Modell in der Extraktion
Regex zieht das Aktenzeichen, ein Hash-Join trifft das passende Urteil. Existieren beide, entsteht ein Verweis — sonst nicht. VIII ZR 45/19 ist mit 61 eingehenden Zitierungen das meistzitierte Urteil.

Seit dem Rechtsprechungs-Browser steht der Corpus durchsuchbar da — aber durchsuchbar heißt noch nicht vernetzt. Ein Urteil zitiert andere Urteile, und genau diese Verbindungen waren bisher unsichtbar. Jetzt nicht mehr.

Wir haben 2.993 Verweise aus den Volltexten gezogen: ein Suchmuster liest jedes Aktenzeichen im BGH-Format, ein exakter Abgleich trifft es gegen das Aktenzeichen eines anderen Corpus-Urteils. Keine Konfidenz-Schwelle, keine unscharfe Übereinstimmung, kein Modell. 519 Urteile werden zitiert, 762 zitieren — und das meistzitierte Urteil, VIII ZR 45/19, trägt 61 eingehende Zitierungen.

Welches Urteil gilt hier eigentlich

Die Frage in der Beratung ist selten »existiert das Urteil« — sie ist »welches der zitierenden Urteile trägt meinen Fall«. Dafür gibt es jetzt die Zitations-Vorschau: ein Klick auf ein Aktenzeichen unter »Wird zitiert von« öffnet die Kernpassage, den Sachverhalt und die §§ des zitierenden Urteils — ohne die Seite zu verlassen. Mit ↑ und ↓ blätterst du durch alle Zitierenden, Enter springt auf die volle Seite.

Du musst nicht mehr raten, welches Urteil einschlägig ist. Du blätterst durch die, die es tatsächlich zitieren.

Die Vorschau-Daten sind beim Build in die Seite eingebettet — kein Server-Aufruf zur Laufzeit, keine Fabrikation, dieselben Felder, die auch die Vollseite rendert. Und weil das Netz weiß, wie oft ein Urteil zitiert wird, sortiert die Liste jetzt nach Relevanz statt nach Zufall: das meistzitierte Urteil steht oben.

  • UI Öffentliche Corpus-Flächen auf das Monocle-Register umgebaut — Übersicht, Themen, §-Seiten und Urteils-Detail, auf die Corpus-Seiten beschränkt (.corpus-monocle).
  • Search Instanz-Filter (BGH · OLG·LG · AG) grenzen die Liste ohne Neuladen ein; zusätzlich Sortierung nach Datum neben der neuen Relevanz-Reihung.
  • Corpus stripScraperBoilerplate() entfernt Navigations-Reste und Randnummern-Artefakte — der Volltext öffnet jetzt auf dem echten Tenor statt auf den Resten der Quell-Seite.
  • Corpus Echte Zeilen-Inhalte über headnotes || sachverhalt_summary statt des »Leitsatz aus Corpus«-Platzhalters, der echten Text verdeckt hat.
  • UI Nav-Abstand korrigiert — Inhalt lag unter der fixierten Navigation.
  • Copy Entjargonisiert: »Tier« → Instanz, »Federal« → Bundesweit über Sortier-Label, Marginalien und SEO-Beschreibung.

Denken v3: die Vorschau kann nicht lügen.

Unser Editor für die Denken-Essays rendert Web-Vorschau und veröffentlichten Essay durch dieselbe Komponente; die E-Mail-Vorschau ist das Newsletter-Template selbst, im iframe. Was wir im Editor sehen, ist, was erscheint.

_shared/denken-email-template.ts
// ein Template
export function buildNewsletterHtml(essay) { /* ... */ }

// Konsument 1 — der echte Versand
import { buildNewsletterHtml } from "../_shared/denken-email-template.ts"

// Konsument 2 — die Admin-Vorschau (iframe srcDoc)
import { buildNewsletterHtml } from "../_shared/denken-email-template"
Ein Template, zwei Konsumenten. Versand und Vorschau rendern dieselbe Funktion — die Vorschau ist ein iframe srcDoc genau dieser E-Mail. Für die Web-Seite macht DenkenEssayArticle dasselbe: veröffentlichter Essay und Vorschau, eine Komponente.

Wir schreiben die Denken-Essays in einem eigenen Editor — Werkzeug, kein Produkt, sieht außer uns niemand. Aber eine Vorschau darin ist trotzdem ein Versprechen: so wird es aussehen. Und die meisten Editor-Vorschauen brechen dieses Versprechen leise — sie rendern über einen zweiten, nachgebauten Pfad, und irgendwo zwischen Entwurf und Veröffentlichung driftet die Darstellung. Ein Absatz sitzt anders, ein Pullquote bricht um, die E-Mail sieht anders aus als die Seite.

In der dritten Version des Editors gibt es diesen zweiten Pfad nicht mehr.

Eine Komponente für Web und Vorschau

Der veröffentlichte Essay unter /denken/[slug] und die Vorschau im Editor rendern jetzt durch dieselbe KomponenteDenkenEssayArticle, mit derselben ESSAY_CSS. Es gibt keine zweite Implementierung, die abweichen könnte: die Vorschau ist die veröffentlichte Seite, nur mit anderem Inhalt.

Die E-Mail-Vorschau ist die E-Mail

Newsletter sind die klassische Drift-Falle — Mail-Clients rendern anders als Browser. Also liegt das Versand-Template (tabellenbasiert, Charter/Georgia-Serif, paper-ink, mail-client-sicher) in einem einzigen Modul, das beide Seiten importieren: die Funktion, die wirklich verschickt, und die Vorschau im Admin, die es in einem iframe srcDoc zeigt. Was wir vor dem Versand sehen, ist exakt die E-Mail, die im Postfach landet.

Darunter friert ein Snapshot-Modell jede Veröffentlichung ein: die öffentliche Seite liest append-only Snapshots aus denken_essays_live, sortiert nach source_version. Neu veröffentlichen heißt, einen frischen Snapshot zu prägen, der die Ansicht gewinnt — Versionen gehen nie verloren.

  • UI Pullquote, eins pro Essay: ★ markiert die Auswahl und hebt ein vorheriges Pullquote automatisch auf — kein doppeltes Hervorheben mehr.
  • UI Editorial-Register im Editor: Autosave-Pille, Bestätigungs-Modal, eigene Vorschau-Tabs für Web und E-Mail, sechs Tastaturkürzel.
  • Spine Versionierung erfasst jede Änderung an Titel, Dek und Body als Snapshot (autosave / named / restored / published); Wiederherstellen aus dem Versionen-Panel.
  • UI Essay-Liste nach Reihe → Nummer sortiert mit Reihe · NN-Spalte; eine geänderte Nummer ordnet die Liste neu.
  • UI TipTap-Duplicate-Extension-Warnung (link/underline) stillgelegt.
  • UI Höhe des Pullquote-Buttons im Frontmatter an die Zeile angeglichen.

Unterschriften-Set: was angezeigt wird, wird auch unterschrieben.

Die Einwilligung im Mandant:innen-Konto zählt jetzt genau die Dokumente auf, die das Mandat tatsächlich signiert — aufgelöst über denselben Pfad, der die PDFs rendert.

Eine Einwilligung ist nur so viel wert wie ihre Präzision. Wenn jemand einer Liste von Dokumenten zustimmt, muss diese Liste exakt die Dokumente sein, die danach unterschrieben werden — nicht eine fest verdrahtete Annäherung, die mit der Zeit von ihr abdriftet.

Genau das haben wir geschlossen. Die Unterschriftsfläche im mein-Konto — Desktop wie Mobil — leitet die anzuzeigenden Dokumente jetzt aus derselben Quelle ab, aus der auch die PDFs entstehen. Die Einwilligung zählt die vier echten Dokumente auf: Vollmacht, Honorarvereinbarung RVG, Widerrufsbelehrung, Datenschutzerklärung — und nur diese.

Ein Pfad, eine Wahrheit

Darunter sitzt eine neue, strikt lesende Edge-Function, resolve-case-signing-set: sie holt den Fall RLS-geschützt — die Datenbank erzwingt die Eigentümerschaft, nicht der Client — und läuft durch denselben Auflöse- und Render-Pfad wie die signierten PDFs. Bereits unterschriebene Flächen lesen den eingefrorenen Snapshot in signed_template_keys: was unterschrieben wurde, bleibt, was es war.

Die Liste, der du zustimmst, ist die Liste, die du unterschreibst.

Im Browser durchgelaufen — vier Dokumente, korrekte Einwilligung, PDF-Glyphen, scrollbare Seite. Live.

  • UI Unterschriftsfläche poliert: Platzhalter-Icon durch ein PDF-Glyph ersetzt, Vertretungs-Copy vereinheitlicht.
  • UI mein-Desktop »Mein Fall« war nicht scrollbar — fehlender Scroll-Container im Fall-Tab-Wrapper behoben.
  • Spine Signing-Gate abgeglichen: das Desktop-Gate zählte nicht existierende Dokumente als ausstehend, sodass ein fehlendes Dokument die Unterschrift blockieren konnte — an das Mobile-Verhalten angeglichen.
  • Templates Counterparty-Variablen in Vollmacht und Widerrufsbelehrung auf {{kanzlei_name}} vereinheitlicht; auf prod render-verifiziert.
  • UI /changelog re-stylte versehentlich die echte Nav und den Footer — das eingebettete Fragment wird jetzt unter .changelog-root gescoped, sodass seine Resets nicht mehr global lecken.
v1.4.2

Zitat-Disziplin: keine AZs aus dem Gedächtnis.

Die häufigste Halluzination im Mietrechts-RAG ist nicht das erfundene Aktenzeichen — sondern das echte, an die falsche Aussage geheftet. Wave D schließt das.

UI · CITE-GATE v2
BGH Urteil vom 14.03.2024 · VIII ZR 22/23

»Die qualifizierte Rüge nach § 556g BGB erfordert eine Bezifferung der monatlichen Rückforderung.«

Topic-Match · AZ verifiziert · Behauptung gedeckt
Topic-Match-Enforcement · Jedes AZ wird nicht nur auf Existenz, sondern auf Doktrin-Übereinstimmung mit der Aussage geprüft. Binary success criterion. Regex + 9 Wave-D-Files im Scope.

Die Failure-Mode, die uns am meisten gekostet hat, war nicht die klassische Halluzination. Es war das echte Aktenzeichen — verifiziert im Corpus, sauber geschrieben, mit allem drum und dran — angeheftet an eine doktrinale Behauptung, die das Urteil so nie getroffen hat. Das Cite-Gate ging durch. Der Output sah aus wie sauberes Mietrecht. War es aber nicht.

Wir nennen das Proposition-Misattribution. Es ist gefährlicher als reine Halluzination, weil es nicht nur Vertrauen kostet — es passt auch durch jeden naiven Verifier durch. Das AZ existiert. Das Urteil ist real. Die Verknüpfung ist falsch.

Was sich geändert hat

Wave D fügt einen zweiten Gate-Layer über die existierende AZ-Verifikation. Jedes emittierte AZ muss jetzt zusätzlich einen Topic-Match-Test bestehen: gleicht das doktrinale Thema, das die Behauptung trägt, dem doktrinalen Thema, das durch das Urteil tatsächlich entschieden wurde?

Konkret: wir haben Regex-Patterns über alle cite_emit-Stellen gezogen und neun Wave-D-Files in Scope gebracht. Binary success criterion — entweder Topic-Match passt, oder das AZ wird nicht emittiert. Keine Konfidenz-Schwellen, keine fuzzy matches.

Was als Nächstes kommt

Citation-Integrity-Audit, geplant nach 24h Pipeline-Stabilität. Strukturelle Prüfung über alle bisher emittierten Drafts: existiert das AZ, sagt das Urteil tatsächlich was der Draft behauptet. Audit-Output wird hier veröffentlicht.

  • RAG Reranker-Tuning für Mietpreisbremse-Cluster. Topic-Embeddings priorisieren §§ 556d–g vor allgemeinem Mietrecht.
  • UI Befund-Approval: Sidebar-Spacing erhöht. Editorial-Section-Heads jetzt mit Hairline-Top-Rule statt 2px-Ink.
  • Spine Stage 01 analyse-document handler-coverage von 7 auf 9 doc_type-Familien.
  • Auth Bug behoben: accept-invite erlaubte unter bestimmten Race-Conditions doppelte team_members-Einträge. Datenbank-Trigger jetzt durchsetzend.
  • Email Postmark-Bounce-Logs werden bei Soft-Bounces nicht mehr als Hard-Failures markiert.
v1.4.1

Rechtsprechungs-Browser: 1.178 Entscheidungen, neun Themen, eine Tür.

Was bei Grüneberg in 800–1.200 zitierten Entscheidungen steht, steht jetzt auch bei uns — durchsuchbar, gefiltert, mit Topic-Tags.

/rechtsprechung/corpus
Rechtsprechung · Themen 1.178 Urteile
Mietpreisbremse §§ 556d–g BGB · Kappung, qualifizierte Rüge, Rückforderung
312
Mängelanzeige § 536 BGB · Minderung, Mängelrechte
187
Mieterhöhung §§ 558–559 BGB · Vergleichsmiete, Modernisierung
156
Räumungsabwehr § 543 BGB · außerordentliche Kündigung
98
697 BGH · 481 Regionalgericht. Nur Mietrecht. Nicht inflationiert, nicht hochgerechnet.

Der Grüneberg-Kommentar zitiert je nach Auflage 800 bis 1.200 mietrechtliche Entscheidungen. Das ist die Benchmark, an der wir uns gemessen haben — und an der wir uns weiter messen lassen. Mit 1.178 verifizierten Entscheidungen sind wir auf Augenhöhe.

»Verifiziert« heißt: jede Entscheidung wurde händisch geprüft, die Doktrin getaggt, die Zitate normalisiert. Keine Web-Scrapes, keine LLM-generierten Zusammenfassungen, kein Fluff aus 5.181 Nicht-Mietrechts-Urteilen in der gleichen Datenbank.

Neun Themen-Kacheln

Die Themen-Übersicht auf /rechtsprechung/corpus spiegelt jetzt die echten DB-Counts: Mietpreisbremse, Mängelanzeige, Mieterhöhung, Räumungsabwehr, Betriebskosten, Schönheitsreparaturen, Untermiete, Eigenbedarf, Kaution. Vierzehn § -Landing-Pages dazu. Einschätzungs-Tool unter /rechtsprechung/einschaetzung.

Was das für die Beratung verändert: du musst nicht mehr glauben, dass das Urteil existiert. Du siehst es. Mit Volltext, mit Doktrin-Tags, mit verlinkten Folge-Entscheidungen.

  • UI Themen-Kacheln: Hairline-Hover statt Drop-Shadow. Editorial-Register beibehalten.
  • Search Volltext-Search über alle 1.178 Urteile. Inverted Index mit Postgres FTS.
  • Tags Doktrin-Tags über 47 Sub-Themen. Mehrfach-Tagging möglich pro Urteil.
  • SEO 14 § -Landing-Pages für Long-Tail-Suchen. Strukturierte Daten ausgespielt.
v1.4.0

Editorial-Register, end-to-end.

Mila sieht jetzt wie Mila aussehen sollte. Source Serif 4 überall, Cream-Paper statt Weiß, Hairlines statt Schatten, italische Akzente, kein Rounded.

Canonical · Toggle
Fall-Updates per E-Mail
Mila-Toggle · 36 × 20, solid ink an, #d8d8d6 aus, 14 × 14 White-Knob. Verwendet auf Kanzlei-Settings, Mandant-Konto, Vorlagen-Editor.

Der Reskin hat acht Wochen gedauert. Drei Surfaces, ungefähr fünfzig Templates, ein neuer Token-Layer, ein neuer Komponenten-Katalog. Was vorher wie ein generisches SaaS-Dashboard aussah, sieht jetzt wie ein Editorial-Produkt aus — Schriftgröße, Spacing, Hairlines, Farben.

Die wichtigste Entscheidung: kein Mode-Switch zwischen »Marketing« und »Produkt«. Die Login-Seite, das Dashboard, der Vorlagen-Editor, der Mandant-Widget — alle auf der gleichen Tokensauce. Wenn ein Kanzlei-Mitarbeiter morgens auf der Marketing-Seite war und nachmittags im Admin sitzt, soll sich das wie das gleiche Produkt anfühlen.

Was sich konkret geändert hat

  • TypeSource Serif 4 als Body-Schrift überall, mit opsz 8..60 Mapping pro Tier. Inter nur noch für Chrome, Mono für Codes.
  • ColorCream-Paper #f6f4ef als Default-Background. White nur noch für Inputs und Karten.
  • Rule0px Corners überall. Pills nur für Toggles und Status-Dots.
  • ShadowHairlines statt Shadows. Karten-Schatten entfernt, durch 1px-Rule-Borders ersetzt.
  • VoiceItalic-Akzent-Pattern: Headlines mit upright Body, italic em-Sub. Lifted aus Editorial-Register.
  • UI Vorlagen-Editor: TipTap-Mention-Extension kollidierte mit Editorial-Section-Heads. Event-Scoping mit stopPropagation gefixt.
  • UI Mobile-Nav Burger-Animation jetzt mit korrektem Timing.
  • Auth Passwordless-Login-Code-Slab: Auto-Focus nach Code-Eingang.
  • Email Postmark-Templates auf Editorial-Register umgestellt — Source Serif als Body mit Fallback auf Georgia für Mail-Clients ohne Webfont.
  • A11y Toggle-States lesbar für Screen-Reader (aria-checked).
  • Perf Source Serif 4 variable Font preloaded — FOIT auf erstem Page-View reduziert.
v1.3.6

Postmark statt Brevo.

Brevo hat Zustellungen nach Berlin verschluckt. Postmark nicht.

Postmark · Outbound Log
SENT STATUS
19·05 22:15 rechtsanwalt@kanzlei-pankow.de Delivered
19·05 22:14 m.greinke@icloud.com Delivered
19·05 22:13 immi@immi-rechtsanwaelte.de Delivered
19·05 22:08 k.agatsy@mietrecht-pankow.de Delivered
99,7 % Delivery-Rate seit Migration, ~14 s mediane Latenz. Vorher: 87 %, ~45 s, mit unerklärlichen Bounce-Spitzen am Nachmittag.

Brevo hat funktioniert — bis es nicht funktionierte. Wir hatten Wochen, in denen 13 Prozent unserer Bestätigungsmails nie ankamen, ohne Hard-Bounce, ohne Log-Eintrag. Migration ist nie sexy. Aber für ein Produkt, in dem ein verlorener Bestätigungs-Code bedeutet, dass eine Vollmacht-Signatur 24 Stunden später unterzeichnet wird statt sofort, ist Zustellrate das Produkt.

Postmark ist teurer pro Mail. Es ist auch der Anbieter, den Stripe für ihre Tx-Emails nutzt. Damit können wir leben.

v1.3.0

HARD RULE § 3: Anwalt approves alles.

Die größte Architektur-Entscheidung dieses Quartals ist auch die unbeliebteste — bei den LLM-Maximalisten. Jeder Befund, jeder Draft, jeder Send braucht eine Anwalts-Freigabe. Keine Ausnahmen.

Das ist nicht negotiable, und das ist auch nicht Conservatism — das ist Tatsachenanerkennung. Die Berufsordnung verlangt es. Die Mandanten verlangen es. Und ehrlich gesagt: das LLM ist es noch nicht wert, ohne Aufsicht ein Mandat zu führen. Vielleicht in zwei Jahren. Heute nicht.

Wie das in der Praxis aussieht

Stage 01 ist eine Acht-Schritt-Schleife: Dokumente werden hochgeladen, von der KI analysiert, in Befunde überführt, der Anwalt approves einzelne Befunde oder alle, dann approves er die nächste Stage. Stages 02, 03, 04 folgen einer ähnlichen Choreografie: Draft → Review → Approve + Send → Wait → Classify → Approve Classification + Next Stage → Route.

Was das mit der Geschwindigkeit macht: nichts. Die LLM-Arbeit ist parallelisiert. Die Anwalts-Approval-Zeiten sind Minuten, nicht Stunden. Was es mit der Zurechenbarkeit macht: alles. Jeder Befund hat einen Approver. Jeder Draft hat einen Approver. Jeder Send hat einen Approver. Wenn etwas schiefgeht, weiß man wer.