`LIVIA_PROFIL_UND_PROMPT.md` hält Livia als Exposé Master fest, wie sie vor Runde 8 war: Personalblatt, Aufgabenkatalog, Kanäle und Systeme, das Exposé-Dossier mit elf Bereichen und neun Pflichtfeldern, die `missingFacts`-Regel der Textmaschine — dazu ein System-Prompt, mit dem sich diese Fassung ausserhalb des Repositories rekonstruieren lässt. `archive/livia/` ergänzt die Beschreibung um die Wiederherstellung: die 23 Dateien der Exposé-Funktion als wörtliche Kopie im Original-Pfadlayout sowie ein Manifest jeder Stelle, an der Livia in geteilten Dateien verdrahtet war. Beides ist mit Runde 8 nicht überholt, sondern der Referenzstand: die Exposé-Funktion wurde nicht entfernt, sondern nachgeordnet. Das Manifest beschreibt allerdings den Rückbau eines vollständigen Entfernens und damit ein Szenario, das so nicht eingetreten ist. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
451 lines
23 KiB
Markdown
451 lines
23 KiB
Markdown
# Property On — Agenten-Ansatz: Entwicklungsstand
|
||
|
||
> **Zweck dieses Dokuments:** Vollständiges Briefing über den Agenten-Ansatz der Plattform
|
||
> «Property On» (Repository `property-match`), Stand **5. August 2026**.
|
||
> Alle Angaben sind direkt aus dem Quellcode ausgelesen, nicht aus Konzeptpapieren.
|
||
>
|
||
> **Wenn du (ChatGPT) dieses Dokument liest:** Es ist die Faktenbasis für eine Präsentation
|
||
> zum Entwicklungsstand. Abschnitt 8 trennt ausdrücklich zwischen *gebaut und lauffähig* und
|
||
> *bewusst als Demo simuliert*. Diese Trennung bitte niemals verwischen — die Präsentation
|
||
> muss Nachfragen standhalten.
|
||
|
||
---
|
||
|
||
## 1. Produktvision in einem Satz
|
||
|
||
Property On ist keine Immobilienplattform mit angeflanschtem Chatbot, sondern eine
|
||
**Decision-Intelligence-Plattform**, deren Arbeit von fünf **digitalen Mitarbeitenden**
|
||
erledigt wird — jeder mit Namen, Porträt, Personalnummer, Abteilung, definiertem
|
||
Aufgabenprofil und einer festgelegten Autonomiestufe.
|
||
|
||
Der konzeptionelle Kern, der den Ansatz von «KI-Features» unterscheidet:
|
||
|
||
| Klassischer KI-Ansatz | Property-On-Agentenansatz |
|
||
|---|---|
|
||
| Ein Assistent, überall derselbe | Fünf Rollen mit je eigenem Arbeitsplatz und Zuständigkeit |
|
||
| «AI»-Knopf an bestehender Oberfläche | Die Seite *ist* der Arbeitsplatz des Agenten |
|
||
| Blackbox-Ausgabe | Jede Aussage mit Quelle, Fundstelle und Konfidenz |
|
||
| Autonom oder gar nicht | Drei abgestufte Autonomiestufen je Agent |
|
||
| Wird als Technologie verkauft | Wird als Personal eingeführt — inkl. «Personalverwaltung» |
|
||
|
||
Die drei Leitprinzipien aus der Projektdokumentation (`CLAUDE.md`), die jede
|
||
Designentscheidung schlagen:
|
||
|
||
1. **Explainability-first** — jeder Score, jedes Badge, jede Empfehlung ist rückverfolgbar.
|
||
Wenn nicht nachvollziehbar ist *warum*, ist das Feature nicht fertig.
|
||
2. **Trust-first** — Konfidenz, Datenaktualität und Datenlücken werden aktiv angezeigt.
|
||
Nichts wird sicherer dargestellt, als die Datenlage hergibt.
|
||
3. **Better-than-Google** — ranken, Zielkonflikte erklären, Zukunftssignale zeigen und eine
|
||
konkrete nächste Handlung empfehlen; nicht bloss Treffer auflisten.
|
||
|
||
---
|
||
|
||
## 2. Die fünf Agenten im Überblick
|
||
|
||
Der Menüpunkt heisst **«Meine Agenten»**. Die Reihenfolge folgt dem Arbeitsablauf, nicht dem
|
||
Alphabet.
|
||
|
||
| # | Agent | Funktion | Abteilung | Pers.-Nr. | Autonomiestufe | Route |
|
||
|---|---|---|---|---|---|---|
|
||
| 1 | **Ferdi** | Fristen-Wächter | Bewirtschaftung | PO-ZD-02 | Freigabe erforderlich — «autonom beim Erinnern, Freigabe bei Eskalationen» | `/supply/reminder-manager` |
|
||
| 2 | **Bruno** | Besichtigungsassistent | Vermarktung | PO-ZD-13 | Autonom | `/supply/besichtigungen` |
|
||
| 3 | **Livia** | Exposé Master | Vermarktung | PO-ZD-21 | Autonom | `/supply/my-listings` |
|
||
| 4 | **Nora** | Marktchancen / Leads | Marktbeobachtung | PO-ZD-19 | Nur Vorschlag | `/supply/market-intelligence` |
|
||
| 5 | **Sina** | Datenpflege | Bewirtschaftung | PO-ZD-03 | Autonom, ausschliesslich lesend | `/supply/data-quality` |
|
||
|
||
**Die Autonomiestufen sind das stärkste Argument der Präsentation.** Sie sind kein Etikett,
|
||
sondern im Datenmodell verankert (`AgentAutonomyLevel`) und je Agent begründet:
|
||
|
||
- **Nora darf nichts entscheiden** — sie erkennt Marktsignale und schlägt vor. Ein Mensch
|
||
entscheidet, ob daraus ein Lead wird.
|
||
- **Ferdi darf erinnern, aber nicht eskalieren** — die Eskalation gegenüber einem Mieter ist
|
||
eine geschäftliche Handlung mit Aussenwirkung und braucht eine Freigabe.
|
||
- **Sina darf autonom arbeiten, weil sie ausschliesslich liest** — sie beantwortet Fragen aus
|
||
hinterlegten Dokumenten und belegt jede Aussage mit Fundstelle. Ohne Schreibrecht kein Risiko.
|
||
- **Bruno und Livia arbeiten autonom**, weil ihr Ergebnis (Briefing, Exposé-Entwurf) dem
|
||
Menschen vorgelegt wird, bevor es nach aussen geht.
|
||
|
||
---
|
||
|
||
## 3. Die fünf Agenten im Detail
|
||
|
||
### 3.1 Ferdi — Fristen-Wächter
|
||
|
||
**Problem:** Optionsfristen, Break-Klauseln und Anpassungstermine verschwinden in Verträgen,
|
||
Nachträgen und Excel-Listen. Wer eine Frist verpasst, verliert Geld oder eine Fläche.
|
||
|
||
**Was Ferdi tut** (aus dem Personaldossier):
|
||
- Liest Mietverträge, Nachträge und Zusatzvereinbarungen der Standorte Zürich, Winterthur,
|
||
Basel, Zug, Bern und St. Gallen ein
|
||
- Extrahiert Fristen, Optionen und Break-Klauseln **mit Fundstelle im Dokument**
|
||
- Lässt jeden neu gefundenen Termin **einmalig durch die Bewirtschaftung bestätigen**
|
||
(Human-in-the-Loop an der Datenquelle, nicht erst am Ergebnis)
|
||
- Gleicht den bestätigten Bestand jeden Morgen mit dem Kalender ab
|
||
- Erinnert gestaffelt: 12, 9, 6 und 3 Monate vor Stichtag
|
||
- Meldet nach fünf Arbeitstagen ohne Reaktion ein zweites Mal
|
||
- Legt bei anhaltendem Ausbleiben eine **Eskalation zur Freigabe** vor
|
||
|
||
**Ergebnisse:** Fristen-Alerts, Wochen-Pipeline montags 07:00 Uhr, Eskalationsvorschläge,
|
||
lückenloses Meldeprotokoll je Vertrag.
|
||
|
||
**In der Oberfläche:** Chat-Einstieg, darunter Filterleiste und Reminder-Liste, seitliche
|
||
Detailansicht. Zusätzlich gebaut: **Kalender-Terminplanung** — aus einem Reminder lässt sich
|
||
ein Kalendereintrag erzeugen (Titel-Schema `Ferdi: {Typ} – {Objekt}`, mit strukturiertem
|
||
Anhang aus den Reminder-Daten).
|
||
|
||
---
|
||
|
||
### 3.2 Bruno — Besichtigungsassistent
|
||
|
||
**Problem:** Vor einer Besichtigung fehlt dem Makler die Vorbereitung, nach der Besichtigung
|
||
verschwindet das Gesagte. Beides kostet Abschlüsse.
|
||
|
||
**Zwei Auftragstypen, ein Arbeitsplatz:**
|
||
|
||
**Vorbereitung** — Bruno liefert vor dem Termin ein Briefing:
|
||
- Objektbild, Adresse, Fläche, Mietpreis, Verfügbarkeit, Parkplätze
|
||
- Objektbeschrieb
|
||
- **Lagebericht von Livia** (Agent-zu-Agent-Zulieferung — ein wichtiger Punkt: die Agenten
|
||
arbeiten einander zu, sie stehen nicht nebeneinander)
|
||
- **Verkaufsargumente**
|
||
- **Mögliche Einwände mit vorbereiteter Antwort** — je Einwand ein Antwortvorschlag
|
||
- **Rechercheergebnisse zum Interessenten aus öffentlichen Quellen** — und hier die
|
||
entscheidende Regel: *jede* Angabe steht mit Quellenangabe da. Findet Bruno nichts
|
||
Belegbares, steht «Keine belegbaren öffentlichen Angaben gefunden» — nicht eine plausible
|
||
Vermutung. Begründung im Code: *«Eine Vermutung im Briefing wird am Termin zur Behauptung.»*
|
||
- Optional: Audiofassung des Briefings (für die Fahrt zum Termin)
|
||
|
||
**Nachbereitung** — nach dem Termin:
|
||
- Der Makler diktiert oder schreibt formlos (Eingangskanal wird protokolliert)
|
||
- Bruno zeigt transparent, **welche Verarbeitungsschritte** er daraus gemacht hat
|
||
- Ergebnis ist eine benannte Datei (Protokoll / Kundennotiz) plus Bemerkungen
|
||
|
||
**Eingebaute Kontrolle:** Steht eine Besichtigung in **weniger als 24 Stunden** an und wurde
|
||
noch kein Bericht angefordert, erscheint eine Warnung mit direktem Handlungsknopf
|
||
«Bericht anfordern». Das ist ein konkretes Beispiel für einen Agenten, der nicht nur
|
||
ausführt, sondern die Lücke im Prozess selbst meldet.
|
||
|
||
---
|
||
|
||
### 3.3 Livia — Exposé Master
|
||
|
||
**Problem:** Ein vollständiges Gewerbe-Exposé zu erstellen ist ein Tagesgeschäft von mehreren
|
||
Stunden — Daten zusammensuchen, Texte schreiben, Bilder sortieren, exportieren.
|
||
|
||
**Arbeitsplatz:** Leadliste (aktiv / archiviert). Leads kommen aus Noras Signalen, sobald ein
|
||
Bewirtschafter sie zur Exposé-Erstellung weitergeleitet hat. Beim Öffnen eines Leads gleitet
|
||
die Zeile nach oben und der dreistufige Arbeitsbereich klappt auf.
|
||
|
||
**Der Drei-Schritt-Ablauf: Hochladen → Exposé → Export**
|
||
|
||
**Schritt 1 – Hochladen:** Objektdaten und Bilder aus «Meine Objekte» vorbefüllen oder
|
||
Unterlagen hochladen.
|
||
|
||
**Schritt 2 – Exposé:** Ein Dossier aus **11 fachlichen Bereichen** — das ist der inhaltliche
|
||
Beweis, dass hier eine echte Fachdomäne abgebildet ist und keine generische Formularmaske:
|
||
|
||
| # | Bereich | Beispielfelder | Datenquellen |
|
||
|---|---|---|---|
|
||
| 1 | Eckdaten & Vermarktung | Objektart, Vermarktungsart, Status, Objektreferenz | — |
|
||
| 2 | Lage | Strasse, PLZ, Ort, Gemeinde, Kanton | — |
|
||
| 3 | Koordinaten & Distanzen | ÖV-Haltestelle, Einkauf, Schule, Autobahn (in m) | Swisstopo, ÖV-Fahrplan, OpenStreetMap |
|
||
| 4 | Gebäude- & Gemeindedaten | ÖV-Güteklasse, Solareignung, Einwohner, Steuerbelastung, Leerwohnungsziffer | ARE, BFE Sonnendach, BFS, ESTV |
|
||
| 5 | Flächen & Gebäude | Nutzfläche, Raumhöhe, **Kubatur SIA 416** | — |
|
||
| 6 | Gebäude & Verfügbarkeit | Stockwerk, Baujahr, letzte Renovation, Zustand | — |
|
||
| 7 | Grundstück & Baurecht | Nutzungszone, Überbauungsziffer, Ausnützungsziffer | geodienste / Swisstopo |
|
||
| 8 | Preise & Kosten | Nettomiete CHF/m²/J, Nebenkosten, NK-Art, Kaution, Parkierung | — |
|
||
| 9 | Ausstattung & Merkmale | Photovoltaik, Wärmepumpe, E-Ladestation, Minergie, Seesicht … | — |
|
||
| 10 | Energie & Technik | Heizsystem, Wärmeverteilung, GEAK, kWp | — |
|
||
| 11 | Texte & Beschriebe | Titel, Kurzbeschrieb, Objekt-/Lage-/Gemeinde-/Ausstattungsbeschrieb, Highlights | **KI-Textentwurf** |
|
||
|
||
Zwei Details, die den Qualitätsanspruch zeigen:
|
||
- **Schweizer Fachnormen sind eingebaut** — Kubatur nach SIA 416, GEAK, Minergie,
|
||
ÖV-Güteklasse nach ARE, Leerwohnungsziffer. Alle behördlichen Datenquellen sind benannt und
|
||
**die Werte bleiben überschreibbar** — der Mensch behält das letzte Wort.
|
||
- **Pflichtfeldlogik:** 9 Felder sind Pflicht (Objektart, Vermarktungsart, Strasse, PLZ, Ort,
|
||
Nutzfläche, Verfügbarkeit, Nettomiete, Exposé-Titel, Kurzbeschrieb, Objektbeschrieb).
|
||
Fehlt eines, wird es rot umrandet. Begründung im Code: *«Eine Broschüre ohne Kubatur ist
|
||
verkaufbar, eine ohne Mietpreis nicht.»*
|
||
|
||
**KI-Texterstellung mit hartem Leitplanken-Prinzip:** Der Textentwurf nutzt
|
||
**ausschliesslich die erfassten Objektdaten**. Im Backend-Dienst wird die Textgenerierung
|
||
bewusst an einen deterministischen Baustein delegiert, damit **kein Sprachmodell fehlende
|
||
Fakten erfindet**. Das ist die direkte technische Umsetzung des Trust-first-Prinzips.
|
||
|
||
**Schritt 3 – Export:** HTML-Vorschau, PDF (über den Druckdialog) und Word (`.doc`).
|
||
|
||
---
|
||
|
||
### 3.4 Nora — Marktchancen / Leads
|
||
|
||
**Problem:** Marktchancen entstehen aus schwachen Signalen — einer Handelsregister-Mutation,
|
||
einer Baubewilligung, einem Gespräch im Netzwerk. Diese Signale sind verteilt und flüchtig.
|
||
|
||
**Zwei Quellen, zwei Reiter:**
|
||
|
||
**Reiter «KI-Signale»** — automatisch erkannte Signale aus öffentlichen Quellen
|
||
(SHAB, Zefix, Web), je Signal eine Detailansicht mit Einordnung.
|
||
|
||
**Reiter «Netzwerk»** — der menschliche Kanal. Ein Bewirtschafter erfasst selbst einen
|
||
Hinweis aus seinem Netzwerk. Filter nach **Intern** und **Plattform** — d. h. das Wissen
|
||
einzelner Mitarbeitender wird zu Plattformwissen, ohne dass es dafür ein separates CRM-Ritual
|
||
braucht.
|
||
|
||
**Autonomiestufe «Vorschlag»:** Nora entscheidet nichts. Sie erkennt, ordnet ein und legt vor.
|
||
Der Mensch leitet ein Signal per Mehrfachauswahl an **Livia** weiter — dort wird daraus ein
|
||
Exposé-Lead. Das ist die sichtbare Übergabe zwischen zwei Agenten und der beste
|
||
Demo-Moment der Präsentation.
|
||
|
||
**Weitere Ergebnisse laut Dossier:** Wochen-Mails, Leads, Marktbausteine.
|
||
|
||
---
|
||
|
||
### 3.5 Sina — Datenpflege
|
||
|
||
**Problem:** Schlechte Objektdaten machen jede nachgelagerte Auswertung wertlos. Aber niemand
|
||
pflegt Daten «auf Vorrat» — man braucht den konkreten Hinweis, *welches* Objekt jetzt
|
||
angefasst werden muss.
|
||
|
||
**Bewusste Design-Entscheidung, die man in der Präsentation zeigen sollte:** Die Seite hatte
|
||
früher Auswertungskarten und eine Qualitätsverteilung. Beide sind **entfernt** worden. Die
|
||
Begründung steht im Code: *Kennzahlen beantworten «wie steht es insgesamt?», auf dieser Seite
|
||
zählt aber «welches Objekt muss ich anfassen?».* Das ist Prinzip 1 der Projektrichtlinien in
|
||
Reinform — jeder Bildschirm wird um **eine Entscheidung** herum gebaut.
|
||
|
||
**Was übrig blieb:** Chat-Einstieg, Freitextsuche, drei Filter (Ort/PLZ, Gewerbetyp, Status)
|
||
und eine nach Objektname oder Datenqualität sortierbare Liste. Datenqualität unter 60 %
|
||
wird rot. Klick auf ein Objekt öffnet die **direkt editierbare** Detailansicht.
|
||
|
||
**Zweites Aufgabenprofil laut Dossier:** Sina beantwortet Vertrags- und Objektfragen
|
||
**ausschliesslich aus hinterlegten Dokumenten und immer mit Fundstelle** — autonom, aber
|
||
ausschliesslich lesend.
|
||
|
||
> ⚠️ **Vor der Präsentation prüfen:** Die Funktionsbezeichnung in der Oberfläche
|
||
> («Datenpflege») und das Aufgabenprofil im Personaldossier (dokumentenbasierte
|
||
> Fragebeantwortung) beschreiben zwei unterschiedliche Schwerpunkte. Wenn jemand nachfragt,
|
||
> ist die saubere Antwort: Sina ist der lesende Daten- und Dokumentenagent; die Oberfläche
|
||
> zeigt heute den Datenpflege-Teil, der Dokumenten-Q&A-Teil ist im Rollenprofil beschrieben
|
||
> und noch nicht als eigener Bildschirm gebaut.
|
||
|
||
---
|
||
|
||
## 4. Das gemeinsame Bedienmuster
|
||
|
||
Alle fünf Agentenseiten sind gleich aufgebaut — das ist eine bewusste Entscheidung, damit die
|
||
Agenten als *ein Team* wahrgenommen werden und nicht als fünf Werkzeuge.
|
||
|
||
**Der Chat-Einstieg** (eine einzige gemeinsame Komponente, `AgentWorkspaceHero`):
|
||
- Porträt 88 px, Name, Funktionsbezeichnung
|
||
- Immer dieselbe Frage: **«Wie kann ich dir heute weiterhelfen?»**
|
||
- Mehrzeiliges Eingabefeld, Platzhalter «Nachricht an {Name} senden»
|
||
- Optional: zusätzliche Kanäle (z. B. WhatsApp) als Hinweis darunter
|
||
|
||
Was bewusst **fehlt** — und warum das ein Argument ist, kein Mangel:
|
||
kein generischer «AI-Assistent»-Knopf, keine Vorschlagskacheln, kein Verlauf.
|
||
Der Chat ist agentenspezifisch und bleibt auf der jeweiligen Seite. Die operative
|
||
Liste beginnt erst unterhalb des Weissraums.
|
||
|
||
**Objektverlinkung:** Jeder Objektname auf jeder Agentenseite ist ein Link in «Meine Objekte»
|
||
(`/supply/properties/{id}`). Alle Verweise zeigen auf **real existierende Objekte im
|
||
Datenbestand** — es gibt keine erfundenen Objektnamen in den Agentendaten. Das ist per Skript
|
||
gegen den Objektbestand geprüft worden (IDs und Titel, null Abweichungen).
|
||
|
||
---
|
||
|
||
## 5. Die Verwaltungsebene — «Agenten als Personal»
|
||
|
||
Unter «Meine Agenten» liegen drei Verwaltungsbereiche als Reiter derselben Seite
|
||
(`/supply/team?section=…`). Sie sind der konzeptionelle Kern des Ansatzes:
|
||
|
||
| Reiter | Inhalt |
|
||
|---|---|
|
||
| **Personalverwaltung** | Personalblatt je Agent: Personalnummer, Abteilung, E-Mail, Zweck, Eingangsdaten, Arbeitsablauf, Ergebnisse, Autonomiestufe |
|
||
| **Bearbeitungsverlauf** | Erledigte Aufträge und pendente Anfragen |
|
||
| **Kanäle & Systeme** | Welcher Agent hängt an welchem System — mit Verbindungsstatus |
|
||
|
||
**Kanäle & Systeme ist der wichtigste Bildschirm für eine kritische Zuhörerschaft**, weil er
|
||
den Realitätsgrad ehrlich ausweist. Jede Anbindung trägt einen Status:
|
||
`CONNECTED` / `DISCONNECTED` / `ROADMAP`.
|
||
|
||
Erfasste Anbindungen (Auszug mit realem Status):
|
||
|
||
| System / Kanal | Status |
|
||
|---|---|
|
||
| Microsoft 365 — gemeinsame Postfächer | Verbunden |
|
||
| WhatsApp Business — Diensthandys | Verbunden |
|
||
| Kalender der Standortteams | Verbunden |
|
||
| Dokumentenablage und Standortbibliotheken | Verbunden |
|
||
| CRM der Vermarktung | Verbunden |
|
||
| Öffentliche Quellen — SHAB, Zefix, Web | Verbunden |
|
||
| Microsoft Teams — Kanal Marktbeobachtung | Nicht verbunden |
|
||
| Bewirtschaftungssystem ImmoTop2 | Nicht verbunden |
|
||
| Telefonanlage und Diktatlinie | Roadmap |
|
||
|
||
Beachte die Formulierung bei der Dokumentenablage — sie beschreibt nicht nur *was*
|
||
angebunden ist, sondern die Belegpflicht: *«Jede Aussage aus einem Dokument wird mit
|
||
Dateiname, Seite und Zitat belegt.»*
|
||
|
||
---
|
||
|
||
## 6. Technischer Stand
|
||
|
||
**Stack:** Vite 8 · React 19 · TypeScript 6 (`strict`) · MUI v9 · Tailwind CSS v4 ·
|
||
React Router v7 · TanStack Query v5 · Zustand v5 · Zod · Playwright · Vitest
|
||
|
||
**Architektur — vier Schichten, keine wird übersprungen:**
|
||
|
||
```
|
||
Provider → Service → Hook (React Query) → Component
|
||
```
|
||
|
||
- **Provider** ist der einzige Code, der Daten anfasst. Jede Entität hat ein Interface
|
||
(`IPropertyProvider`) und eine Mock-Implementierung (`MockupPropertyProvider`).
|
||
Eine echte Implementierung (REST, Supabase) lässt sich einsetzen, **ohne eine einzige
|
||
aufrufende Stelle zu ändern** — das ist der Grund, warum der Mockdaten-Stand kein
|
||
Wegwerfprototyp ist.
|
||
- **Service** kapselt Geschäftslogik, kennt kein React.
|
||
- **Hook** kapselt React Query.
|
||
- **Component** ist reine Darstellung.
|
||
|
||
**Für den Agenten-Ansatz neu gebaute Datenschichten** (je Provider + Service + Hook):
|
||
Kalendertermine · Exposé-Leads · Exposé-Entwürfe · Besichtigungsaufträge · Agenten-Verzeichnis
|
||
|
||
**KI-Anbindung — modellagnostisch:** Der gesamte Zugriff läuft über ein einziges Interface
|
||
`IAIService` mit rund 15 Fähigkeiten (Bedarf parsen, Match erklären, Zielkonflikte
|
||
zusammenfassen, Entscheidungsbriefing, Datenqualität bewerten, Marktsignal klassifizieren,
|
||
Exposé-Text erzeugen …). Kein Bildschirm importiert je einen LLM-Client direkt.
|
||
|
||
Zwei Implementierungen:
|
||
- `MockAIService` — deterministisch, ohne Netzwerk (Entwicklung, CI)
|
||
- `BackendAIService` — ruft `POST /api/ai/chat/completions` auf dem PowerOn-Backend auf
|
||
|
||
**Sicherheitsrelevant und in der Präsentation erwähnenswert:** Der LLM-Schlüssel liegt
|
||
**ausschliesslich serverseitig**. Die frühere Variante mit einem Schlüssel im Frontend-Bundle
|
||
wurde entfernt; der Code weist einen Versuch, sie zu nutzen, aktiv mit einer Warnung ab.
|
||
Fällt das Backend aus, schaltet der Dienst automatisch auf den Mock zurück — **kein
|
||
KI-Ausfall blockiert einen Arbeitsablauf**.
|
||
|
||
**Codequalität, Stand heute:**
|
||
|
||
| Kennzahl | Wert |
|
||
|---|---|
|
||
| Quelldateien (`src/`) | 719 |
|
||
| Codezeilen (`src/`) | 80 936 |
|
||
| Tests | **405 / 405 grün** (25 Testdateien) |
|
||
| Lint-Fehler | 0 |
|
||
| Lint-Warnungen | 0 |
|
||
| `any`-Casts | 0 |
|
||
| Toter Code | 0 |
|
||
| Seiten über dem 300-Zeilen-Limit | 0 |
|
||
| Commits gesamt | 222 |
|
||
| Deployment | Vercel, Produktion (Branch `Agents2`) |
|
||
|
||
Zum Vergleich der Ausgangslage vor der letzten Aufräumrunde: 102 Lint-Fehler,
|
||
1 144 Warnungen, 31 `any`-Casts, ~1 535 Zeilen toter Code, grösste Seite 1 130 Zeilen
|
||
(heute 196). Die Aufräumarbeit wurde mit einem Screenshot-Vergleich über 20 Ansichten
|
||
abgesichert: 14 pixelgleich, 6 mit ausschliesslich den drei beabsichtigten
|
||
Beschriftungsänderungen.
|
||
|
||
---
|
||
|
||
## 7. Warum dieser Ansatz trägt — die Argumente
|
||
|
||
1. **Rollen statt Funktionen.** Ein Bewirtschafter muss nicht lernen, welches KI-Feature was
|
||
kann. Er muss wissen, wen er fragt. Das ist dieselbe kognitive Leistung wie bei
|
||
menschlichen Kollegen — und deshalb keine Einführungshürde.
|
||
|
||
2. **Abgestufte Autonomie macht Akzeptanz verhandelbar.** «Die KI übernimmt» scheitert an
|
||
Vertrauen. «Nora schlägt vor, Sie entscheiden; Ferdi erinnert, die Eskalation gibt der
|
||
Mensch frei» ist verhandelbar — und die Stufe lässt sich pro Agent anheben, wenn sich
|
||
Vertrauen aufgebaut hat.
|
||
|
||
3. **Belegpflicht ist im Produkt verankert, nicht im Marketing.** Fundstelle im Vertrag,
|
||
Quelle bei der Interessentenrecherche, benannte Behördenquelle beim Exposé-Feld,
|
||
deterministische Textgenerierung statt frei erfindendem Modell.
|
||
|
||
4. **Die Agenten arbeiten einander zu.** Nora erkennt → Mensch leitet weiter → Livia erstellt
|
||
das Exposé → Livias Lagebericht taucht in Brunos Besichtigungsbriefing auf. Das ist eine
|
||
Prozesskette, kein Werkzeugkasten.
|
||
|
||
5. **Der Mock-Unterbau ist austauschbar, nicht wegzuwerfen.** Wegen der strikten
|
||
Provider-Schicht ist der Schritt zum Produktivsystem ein Implementierungswechsel hinter
|
||
einem Interface — nicht ein Neubau.
|
||
|
||
---
|
||
|
||
## 8. Ehrliche Abgrenzung: was läuft, was ist Demo
|
||
|
||
**Diesen Abschnitt bitte in der Präsentation nicht weglassen.** Er ist der Grund, warum das
|
||
Gezeigte glaubwürdig bleibt.
|
||
|
||
### Vollständig gebaut und lauffähig
|
||
- Alle fünf Agentenarbeitsplätze mit vollständiger Oberfläche und Interaktion
|
||
- Die drei Verwaltungsbereiche (Personal, Verlauf, Kanäle & Systeme)
|
||
- Das gesamte Exposé-Dossier mit 11 Bereichen, Pflichtfeldprüfung, Vorschau und Export
|
||
(HTML / PDF via Druckdialog / Word)
|
||
- Filtern, Sortieren und direktes Bearbeiten der Objektdaten
|
||
- Besichtigungs-Vorbereitung und -Nachbereitung inkl. 24-Stunden-Warnung
|
||
- Mehrfachauswahl und Weiterleitung von Signalen an Livia
|
||
- Kalender-Terminplanung aus Reminders
|
||
- Objektverlinkung quer über alle Agentenseiten
|
||
- Vier Architekturschichten, 405 grüne Tests, produktiv deployt
|
||
|
||
### Bewusst als Demo simuliert — mit ehrlicher Rückmeldung an den Nutzer
|
||
- **Der Chat hat kein Backend.** Beim Absenden erscheint der Hinweis
|
||
«Nachricht an {Name} vorgemerkt — der Chat ist in dieser Demo noch nicht angebunden.»
|
||
Das war eine bewusste Entscheidung: eine erfundene Agentenantwort wäre schlimmer als eine
|
||
ehrliche Rückmeldung.
|
||
- **Berichtsvorschau, Berichtsdownload und Audiofassung bei Bruno** melden ebenfalls offen,
|
||
dass sie noch nicht angebunden sind.
|
||
- **Alle Fachdaten sind Mockdaten** (Objekte, Leads, Besichtigungsaufträge, Reminder,
|
||
Signale). Sie sind untereinander konsistent und gegen den Objektbestand geprüft, aber sie
|
||
stammen nicht aus einem Produktivsystem.
|
||
- **Systemanbindungen** tragen ihren echten Status — ImmoTop2 und Teams sind als *nicht
|
||
verbunden*, die Telefon-/Diktatlinie als *Roadmap* ausgewiesen.
|
||
|
||
### Noch nicht gebaut
|
||
- Chat-Backend und agentenspezifische Dialogführung
|
||
- Produktive Anbindung an ImmoTop2, Teams, Telefonanlage/Diktat
|
||
- Sinas dokumentenbasierte Fragebeantwortung als eigener Bildschirm
|
||
- Automatisierte Ausführung der Agentenabläufe im Hintergrund (heute wird das Ergebnis
|
||
dargestellt, nicht der Lauf ausgelöst)
|
||
|
||
---
|
||
|
||
## 9. Offene Punkte / Kandidaten für die Roadmap-Folie
|
||
|
||
1. **Chat-Backend** — der grösste sichtbare Schritt zum Produktiverlebnis
|
||
2. **ImmoTop2-Anbindung** — ohne sie bleibt Ferdis Terminbestand ein Import
|
||
3. **Hintergrundausführung der Agentenläufe** (Zeitpläne, Auslöser, Protokoll)
|
||
4. **Sina als Dokumenten-Q&A** mit Fundstellenanzeige
|
||
5. Feinschliff: 23 Komponenten liegen zwischen 250 und 325 Zeilen (über dem weichen
|
||
250-Zeilen-Ziel; alle *Seiten* liegen unter dem harten 300-Zeilen-Limit)
|
||
6. Oberflächen-Testabdeckung ist dünn (4 UI-Tests bei 404 Komponenten; die 405 Tests decken
|
||
vor allem Logik-, Service- und Scoring-Schichten ab)
|
||
7. Der Produktionsbetrieb läuft auf Branch `Agents2`; `main` ist noch nicht nachgezogen
|
||
|
||
---
|
||
|
||
## 10. Vorschlag für den Präsentationsbogen
|
||
|
||
| # | Folie | Kernaussage |
|
||
|---|---|---|
|
||
| 1 | Ausgangslage | Fristen, Exposés, Besichtigungen und Datenpflege sind Handarbeit, verteilt über Systeme |
|
||
| 2 | Der Ansatz | Nicht ein Assistent — **fünf digitale Mitarbeitende** mit Rolle, Abteilung und Autonomiestufe |
|
||
| 3 | Das Team | Die Fünfer-Tabelle aus Abschnitt 2 |
|
||
| 4 | Autonomie als Vertrauensmodell | Drei Stufen, je Agent begründet — die Stufe wächst mit dem Vertrauen |
|
||
| 5 | **Live-Demo: die Kette** | Nora erkennt Signal → Weiterleitung → Livia erstellt Exposé → Export |
|
||
| 6 | Live-Demo: Tiefe | Livias 11 Bereiche mit Schweizer Fachnormen und benannten Behördenquellen |
|
||
| 7 | Live-Demo: Verlässlichkeit | Brunos Interessentenrecherche — jede Angabe mit Quelle, sonst gar nicht |
|
||
| 8 | Agenten als Personal | Personalverwaltung + Kanäle & Systeme mit echtem Verbindungsstatus |
|
||
| 9 | Technischer Stand | 719 Dateien, 405 grüne Tests, 0 Lint-Fehler, produktiv deployt, austauschbare Datenschicht |
|
||
| 10 | Was Demo ist | Abschnitt 8 — offen benannt |
|
||
| 11 | Nächste Schritte | Abschnitt 9 |
|
||
|
||
**Der stärkste Demo-Moment** ist Folie 5: die Übergabe von Nora an Livia. Sie zeigt in
|
||
dreissig Sekunden, dass es sich um ein zusammenarbeitendes Team handelt und nicht um fünf
|
||
nebeneinanderstehende Werkzeuge.
|
||
|
||
**Der stärkste Vertrauensmoment** ist Folie 7: dass Bruno lieber «nichts Belegbares gefunden»
|
||
sagt, als etwas Plausibles zu erfinden.
|