20 KiB
Demo2 — Merged Plan: Customer Demo Enablement + Trustee Tooling
Beschreibung und Kontext
Zusammenführung der beiden Pläne:
- Customer Demo Enablement (Bling, PWG, Quid/ServiceHunter) — Analyse-Use-Cases, Prompt-Templates, CommCoach, Neutralisierung
- Trustee Tooling Overhaul & PWG Demo Preparation — Agent-Tools, Graph-Editor Nodes, Performance, Workflow
Drei potenzielle Kunden haben konkrete Use Cases formuliert. Parallel wurde das Trustee-Tooling grundlegend überarbeitet. Dieses Dokument konsolidiert beide Pläne und zeigt den aktuellen Umsetzungsstand gegen die Codebase.
Kunden:
| Kunde | Branche | Hauptinteresse | Status |
|---|---|---|---|
| Bling (Kevin, Julian, Silvan) | Treuhandbüro | Belegverarbeitung, Budget, Dashboards, Mandantenmanagement | Trial geplant |
| PWG (Markus Brütsch) | Stiftung (Immobilien/Wohnen, 200+ Liegenschaften) | Belegverarbeitung Abacus, KI-Arbeitsplatz, Coaching, Neutralisierung | Workshop 16.04.2026 |
| Quid/ServiceHunter (David Christen) | SaaS/Dienstleistung | KPI-Dashboard, Zeiterfassung, Prognosen, Konsolidierung | Follow-up geplant |
Abhängigkeiten:
- UI-Enhancements:
c-work/1-plan/2026-04-porta-ui-enhancements-team-meeting.md - INT-Stabilität:
c-work/1-plan/2026-04-gateway-int-stability-and-bugfixes.md - Automation Unification (done):
c-work/3-validate/2026-04-automation-unification.md
Codebase-Abgleich: Was ist bereits umgesetzt?
Legende
| Symbol | Bedeutung |
|---|---|
| ✅ done | Im Code vorhanden und funktional |
| 🔧 teilweise | Grundstruktur vorhanden, Anpassung/Ergänzung nötig |
| ❌ offen | Noch nicht umgesetzt |
A. Trustee Tooling (aus tooling-plan)
| # | Item | Status | Evidenz in Codebase |
|---|---|---|---|
| A1 | refreshTrusteeData / trustee.refreshAccountingData Action |
✅ done | workflows/methods/methodTrustee/actions/refreshAccountingData.py — async Action, prüft lastSyncAt, triggert AccountingDataSync, cleart Feature-Query-Cache |
| A2 | aggregateTable Tool im Sub-Agent |
✅ done | serviceAgent/featureDataAgent.py (Zeilen ~186–231) + featureDataProvider.py — SUM/COUNT/AVG/MIN/MAX mit GROUP BY |
| A3 | Kategorie trustee in nodeRegistry.py |
✅ done | graphicalEditor/nodeRegistry.py — {"id": "trustee", "label": "Treuhand"} in categories-Liste |
| A4 | Node trustee.refreshAccountingData |
✅ done | graphicalEditor/nodeDefinitions/trustee.py — erster Node in TRUSTEE_NODES, Ports + Parameter korrekt |
| A5 | Toolbox trustee in toolboxRegistry.py |
✅ done | serviceAgent/toolboxRegistry.py — id="trustee", Label "Trustee / Accounting", Tool trustee_refreshAccountingData |
| A6 | DB-Connection-Pooling | ✅ done | serviceAgent/coreTools/_featureSubAgentTools.py — _featureDbConnPool Dict, _getOrCreateFeatureDbConnector() |
| A7 | Sub-Agent Result-Caching | ✅ done | coreTools/_featureSubAgentTools.py — _featureQueryCache, TTL 300s, MD5-Key, clearFeatureQueryCache() nach Sync |
| A8 | Output-Chaining Fix (processDocuments) | ✅ done | methodTrustee/actions/processDocuments.py — _resolveDocumentList() erkennt Graph-Editor-Dicts + Chat-Fallback |
| A9 | Output-Chaining Fix (syncToAccounting) | ✅ done | methodTrustee/actions/syncToAccounting.py — _resolveFirstDocument() mit Dual-Path-Logik |
| A10 | Node trustee.importAndProcess (Convenience) |
✅ übersprungen | Bewusst übersprungen — bestehende 3 Nodes funktionieren dank Output-Chaining-Fix |
B. Prompt-Templates & Analyse-Flows
| # | Item | Status | Evidenz in Codebase |
|---|---|---|---|
| B1 | Quick Actions (Budget, KPI, Cashflow, Prognose, Jahresabschluss) | ✅ done | features/trustee/mainTrustee.py Zeilen 260–319 — 5 Quick Actions als Dashboard-Links mit actionType: "link" |
| B2 | Template Workflows (Graph-basiert) | ✅ done | mainTrustee.py — TEMPLATE_WORKFLOWS mit _buildAnalysisWorkflowGraph(), eingebettete deutsche Prompt-Strings für alle 5 Analyse-Typen |
| B3 | Budget-Vergleich Prompt | ✅ done | Im Code als Python-String in mainTrustee.py (Graph: trigger → refreshAccountingData → ai.prompt) |
| B4 | KPI-Dashboard Prompt | ✅ done | Analog zu B3 |
| B5 | Cashflow-Rechnung Prompt | ✅ done | Analog zu B3 |
| B6 | Prognose/Trend-Analyse Prompt | ✅ done | Analog zu B3 |
| B7 | Jahresabschluss-Checks Prompt | ✅ done | Analog zu B3 |
C. Graph-Editor Workflow & Templates
| # | Item | Status | Evidenz in Codebase |
|---|---|---|---|
| C1 | System-Template "Treuhand: PDF-Klassifizierung & Trustee-Import" | ✅ done | interfaces/interfaceBootstrap.py — _buildSystemTemplates() seedet bei Bootstrap: sharepoint.listFiles → loop → readFile → ai.prompt (classify) → extractFromFiles → processDocuments |
| C2 | SharePoint-Nodes | ✅ done | nodeDefinitions/sharepoint.py — 6 Nodes (findFile, readFile, uploadFile, listFiles, downloadFile, copyFile) |
| C3 | Flow-Nodes (Loop etc.) | ✅ done | nodeDefinitions/flow.py — ifElse, switch, loop, merge, delay |
| C4 | Demo-Workflow (SharePoint → Trustee Pipeline) manuell im Editor bauen | ❌ offen | System-Template existiert (C1), aber kein dedizierter Demo-Workflow mit trigger.manual + syncToAccounting am Ende |
D. Demo-Infrastruktur
| # | Item | Status | Evidenz in Codebase |
|---|---|---|---|
| D1 | Demo-Config Infrastruktur (Base + Admin API) | ✅ done | demoConfigs/_baseDemoConfig.py, routes/routeAdminDemoConfig.py — load/remove via Admin-API |
| D2 | investorDemo2026.py (Referenz-Template) |
✅ done | Mandanten, User, Features, Accounting-Config, Neutralisierung, Billing — vollständiges Muster |
| D3 | Demo-Mandant "Bling Demo" | ❌ offen | Kein blingDemo2026.py oder ähnliches |
| D4 | Demo-Mandant "PWG Demo" | ❌ offen | Kein pwgDemo2026.py oder ähnliches |
| D5 | Demo-Mandant "Quid Demo" | ❌ offen | Kein quidDemo2026.py oder ähnliches |
E. Testdaten
| # | Item | Status | Evidenz in Codebase |
|---|---|---|---|
| E1 | Fiktives Mieterdossier (PDF) für Neutralisierung | ✅ done | platform-core/demoData/neutralizer/tenant-dossier.pdf + Generator _generateTenantDossierPdf.py |
| E2 | Knowledge-Base Demo-Dateien | ✅ done | platform-core/demoData/knowledge-base/ — 4 Dateien (investor-orientiert) |
| E3 | Budget-Excel (Soll-Werte) | ❌ offen | Kein .xlsx im gesamten Repo |
| E4 | Musterbelege (Rechnung, Spesen, Bank, Versicherung) | ❌ offen | demoData/invoices/, demoData/expenses/, demoData/trustee/ fehlen (Tests erwarten sie) |
| E5 | Quid-Testdaten (CSV: Umsatz, Kunden, Support) | ❌ offen | Keine kundenspezifischen CSV/Excel-Testdaten |
| E6 | Bling-Testdaten (Bexio-kompatibel) | ❌ offen | Keine Bexio-spezifischen Testdaten |
| E7 | PWG-Testdaten (Abacus-kompatibel) | ❌ offen | Keine Abacus-spezifischen Testdaten |
F. CommCoach Immobilien-Personas
| # | Item | Status | Evidenz in Codebase |
|---|---|---|---|
| F1 | CommCoach Feature (Grundstruktur) | ✅ done | features/commcoach/ — Routes, Services, AI, Personas, Gamification, Scheduler, Export, Indexer |
| F2 | Builtin-Personas (generisch) | ✅ done | serviceCommcoachPersonas.py — 10 Personas (Coach, CFO, Mitarbeiter, Vorstand, Kunde, etc.) |
| F3 | Persona: Mieter mit Zahlungsrückstand | ✅ done | tenant_payment_arrears_m in BUILTIN_PERSONAS |
| F4 | Persona: Mieter mit Nebenkostenfragen | ✅ done | tenant_utility_costs_f in BUILTIN_PERSONAS |
| F5 | Persona: Neuer Mieter (Einzugsfragen) | ✅ done | new_tenant_move_in_m in BUILTIN_PERSONAS |
| F6 | Persona: Schwieriger Nachbar (Lärmbeschwerde) | ✅ done | difficult_neighbor_noise_m in BUILTIN_PERSONAS |
| F7 | Persona-Seeding Mechanismus | ✅ done | seedBuiltinPersonas() synct BUILTIN_PERSONAS mit userId: "system" in DB |
G. Neutralisierung
| # | Item | Status | Evidenz in Codebase |
|---|---|---|---|
| G1 | Neutralisierung Feature (komplett) | ✅ done | features/neutralization/ — Routes, Services, Playground, PII-Masking, Private-LLM |
| G2 | Fiktives Mieterdossier | ✅ done | demoData/neutralizer/tenant-dossier.pdf |
| G3 | Demo-Flow dokumentiert | ❌ offen | Kein Schritt-für-Schritt Demo-Skript |
| G4 | Neutralisierungs-Config auf Demo-Instanz | 🔧 teilweise | investorDemo2026.py konfiguriert Neutralisierung für Alpina — analog für PWG nötig |
H. Demo-Skripte & Dokumentation
| # | Item | Status | Evidenz in Codebase |
|---|---|---|---|
| H1 | Use-Case-Inputs Kunden | ✅ done | local/notes/demo-tue-use-cases-inputs-customers.md |
| H2 | Demo-Skript Bling | ❌ offen | |
| H3 | Demo-Skript PWG | ❌ offen | |
| H4 | Demo-Skript Quid | ❌ offen | |
| H5 | Mail-Update 12.04 | ✅ done | local/notes/demo-tue-mail-update-2026-04-12.md |
Zusammenfassung: Was ist erledigt, was fehlt?
Erledigt (aus beiden Plänen)
| Bereich | Items | Kommentar |
|---|---|---|
| Trustee Agent-Tools | A1–A2 | refreshTrusteeData + aggregateTable vollständig |
| Graph-Editor Nodes | A3–A5, A8–A10 | Kategorie, Nodes, Toolbox, Output-Chaining — alles done |
| Performance | A6–A7 | Connection-Pooling + Result-Caching implementiert |
| Prompt-Templates | B1–B7 | Alle 5 Analyse-Typen als Quick Actions + Template Workflows in mainTrustee.py |
| System-Template | C1–C3 | Bootstrap-Template für PDF-Import-Pipeline vorhanden |
| Neutralisierung | G1–G2 | Feature komplett, Mieterdossier-PDF vorhanden |
| CommCoach Grundstruktur | F1–F2, F7 | Feature + generische Personas + Seeding-Mechanismus |
Offen (priorisiert nach Demo-Relevanz)
P0 — Blocker für PWG-Demo (16.04.2026)
| # | Item | Aufwand | Beschreibung |
|---|---|---|---|
| F3–F6 | CommCoach Immobilien-Personas | Klein | 4 neue Persona-Definitionen in BUILTIN_PERSONAS (Mieter Zahlungsrückstand, Nebenkosten, Einzug, Lärmbeschwerde) |
| D4 | Demo-Mandant "PWG Demo" | Mittel | Neues pwgDemo2026.py analog zu investorDemo2026.py — Trustee (Abacus), CommCoach, Neutralisierung, Workspace |
| G3 | Neutralisierungs-Demo-Flow | Klein | Schritt-für-Schritt Dokumentation: PDF → Neutralisierung → AI-Analyse → Re-Personalisierung |
P1 — Wichtig für alle Kunden-Demos
| # | Item | Aufwand | Beschreibung |
|---|---|---|---|
| D3 | Demo-Mandant "Bling Demo" | Mittel | blingDemo2026.py — Trustee (Bexio), Workspace, Graph-Editor |
| D5 | Demo-Mandant "Quid Demo" | Klein | quidDemo2026.py — Workspace, Graph-Editor (kein Trustee-Connector) |
| E3 | Budget-Excel | Klein | Soll-Werte 2026 pro Konto (10–15 Konten), passend zu Demo-Buchhaltungsdaten |
| E4 | Musterbelege | Klein | 3–5 PDFs: Handwerkerrechnung, Nebenkostenabrechnung, Bankbeleg, Versicherungsbeleg, Spesenbeleg |
| C4 | Demo-Workflow im Graph-Editor | Mittel | Dedizierter Workflow: trigger.manual → sharepoint.listFiles → loop → download → extract → process → sync |
P2 — Nice-to-have für erste Demos
| # | Item | Aufwand | Beschreibung |
|---|---|---|---|
| E5 | Quid-Testdaten (CSV) | Klein | Umsatzdaten 6 Monate, Kundenliste mit Margen, Support-Zeiterfassung |
| E6 | Bling-Testdaten (Bexio) | Mittel | Journal, Kontoplan, Bilanz/ER im Bexio-Format |
| E7 | PWG-Testdaten (Abacus) | Mittel | Abacus-kompatible Daten (oder Sandbox-Zugang) |
| H2–H4 | Demo-Skripte | Klein | Schritt-für-Schritt pro Kunde mit Notizen |
| G4 | Neutralisierungs-Config PWG | Klein | Analog zu investorDemo — in pwgDemo2026.py integrieren |
P4 — Explizit nicht im Scope
| Item | Grund |
|---|---|
| Zendesk-Connector (Quid 3.2) | Zu gross, CSV-Upload-Workaround reicht |
| Gastro-Echtzeit-Integration (Bling 1.6) | Wartet auf Kevin-Input |
| Regelbasierte Konsolidierung (Quid 3.4) | Wartet auf Lars-Meeting |
| Neue Frontend-Features | Separater Plan |
| Abacus-Produktivzugang | Demo mit Sandbox/Mockdaten |
Umsetzungs-Checkliste (konsolidiert, nur offene Items)
Phase 1: PWG-Demo Vorbereitung (URGENT — Workshop 16.04)
-
F3–F6: CommCoach Immobilien-Personas in
serviceCommcoachPersonas.py→BUILTIN_PERSONAS- Persona
tenant_payment_arrears_m: René Bachmann, 3 Monate Rückstand, defensiv, Ratenzahlung möglich - Persona
tenant_utility_costs_f: Fatima El-Amin, Nebenkostenabrechnung unklar, emotional, braucht geduldige Erklärung - Persona
new_tenant_move_in_m: Luca Steiner, Erstbezug, viele Fragen, kooperativ - Persona
difficult_neighbor_noise_m: Kurt Zürcher, Lärmprotokoll, droht mit Mietminderung, Deeskalation nötig
- Persona
-
D4: Demo-Config
pwgDemo2026.pyinplatform-core/modules/demoConfigs/- Mandant "PWG Demo" mit Features: Trustee (Abacus), CommCoach, Neutralisierung, Workspace, Graph-Editor
- Demo-User mit passenden Rollen
- Neutralisierungs-Config analog zu investorDemo
- Billing/Trial-Modus
-
G3: Neutralisierungs-Demo-Flow dokumentieren (Markdown in
local/notes/)- Schritt 1: Mieterdossier-PDF hochladen
- Schritt 2: Neutralisierung zeigen (Namen → Platzhalter)
- Schritt 3: Neutralisierten Text an AI → Analyse
- Schritt 4: Re-Personalisierung demonstrieren
Phase 2: Bling & Quid Demo-Configs
-
D3: Demo-Config
blingDemo2026.py- Mandant "Bling Demo" mit Features: Trustee (Bexio), Workspace, Graph-Editor
- 2–3 Demo-User (Admin, Buchhalter, Mandant)
-
D5: Demo-Config
quidDemo2026.py- Mandant "Quid Demo" mit Features: Workspace, Graph-Editor
- Kein Trustee-Connector (Daten via CSV/Excel-Upload)
Phase 3: Testdaten & Musterbelege
-
E3: Budget-Excel erstellen
- Soll-Werte 2026, 10–15 Konten, passend zu Demo-Buchhaltungsdaten
- Ablage:
platform-core/demoData/trustee/budget-2026.xlsx
-
E4: Musterbelege (PDFs) erstellen
- Handwerkerrechnung, Nebenkostenabrechnung, Bankbeleg, Versicherungsbeleg, Spesenbeleg
- Ablage:
platform-core/demoData/invoices/,platform-core/demoData/expenses/
-
E5: Quid-Testdaten (CSV)
- Umsatzdaten 6 Monate, Kundenliste mit Margen, Support-Zeiterfassung
- Ablage:
platform-core/demoData/quid/
Phase 4: Demo-Workflow & Skripte
-
C4: Demo-Workflow im Graph-Editor bauen
- trigger.manual → sharepoint.listFiles → flow.loop → sharepoint.downloadFile → trustee.extractFromFiles → trustee.processDocuments → trustee.syncToAccounting
- Als System-Template speichern (
templateScope: system) - Testen mit Musterbelegen aus E4
-
H2: Demo-Skript Bling — Schritt-für-Schritt
-
H3: Demo-Skript PWG — Schritt-für-Schritt
-
H4: Demo-Skript Quid — Schritt-für-Schritt
Querschnitt-Checks
- API-Endpunkte: keine neuen nötig
- DB-Schema / Migration: nein
- Frontend-Komponenten: nein (separater Plan)
- RBAC / Permissions: Demo-User mit passenden Rollen
- Billing-Impact: Demo-Mandanten brauchen Trial-Modus / Guthaben
Akzeptanzkriterien (konsolidiert)
| # | Kriterium (Given-When-Then) | Prio | Quelle | Status |
|---|---|---|---|---|
| 1 | Given Trustee-Instanz mit Abacus-Config, When Agent refreshTrusteeData aufruft, Then werden Daten importiert und Summary zurückgegeben |
must | Tooling A1 | ✅ implementiert |
| 2 | Given gecachte Daten (lastSyncAt < 1h), When Agent refreshTrusteeData ohne forceRefresh aufruft, Then kein externer Sync |
must | Tooling A2 | ✅ implementiert |
| 3 | Given Trustee-Daten, When Sub-Agent aggregateTable mit SUM/GROUP BY aufruft, Then korrekte Aggregationen |
must | Tooling A2 | ✅ implementiert |
| 4 | Given identische Query innerhalb 5 Min, When queryFeatureInstance erneut, Then gecachtes Ergebnis |
should | Tooling A7 | ✅ implementiert |
| 5 | Given Graphical Editor, When Node-Palette geladen, Then Kategorie "Treuhand" mit allen Trustee-Nodes | must | Tooling A3 | ✅ implementiert |
| 6 | Given Workflow mit SharePoint → Trustee Pipeline, When manuell gestartet, Then PDFs extrahiert und synced | must | Tooling C4 | ❌ Workflow noch nicht gebaut |
| 7 | Given Trustee-Pipeline im Flow, When Output-Chaining, Then documentList korrekt aufgelöst | must | Tooling A8–A9 | ✅ implementiert |
| 8 | Given Budget-Excel + Trustee-Daten, When Budgetkontrolle-Prompt, Then Soll/Ist-Vergleich mit Charts | must | Demo B3 | 🔧 Prompt done, Budget-Excel fehlt |
| 9 | Given Bling-Demo-Mandant, When KPI-Dashboard-Prompt, Then 3+ Kennzahlen-Charts | must | Demo B4 | 🔧 Prompt done, Demo-Mandant fehlt |
| 10 | Given PWG-Demo mit CommCoach, When Session mit "Mieter Zahlungsrückstand", Then realistischer Immobilien-Dialog | must | Demo F3 | ✅ Persona implementiert |
| 11 | Given PWG-Demo mit Neutralisierung, When Mieterdossier hochgeladen, Then PII neutralisiert + re-personalisiert | must | Demo G1–G2 | 🔧 Feature done, Demo-Config fehlt |
| 12 | Given Quid-Demo mit CSV-Upload, When KPI-Analyse, Then Margen- und Support-Charts | should | Demo E5 | ❌ Testdaten fehlen |
| 13 | Given Demo-Mandant mit 2+ Mandaten, When Admin wechselt, Then nur Daten des aktiven Mandanten | must | Demo D1 | ✅ Plattform-Kernfunktion |
Entscheidungen (konsolidiert)
| Datum | Entscheidung | Begründung |
|---|---|---|
| 2026-04-07 | refreshTrusteeData als separate Action (nicht Erweiterung von queryFeatureInstance) |
Separation of Concerns: Sync = schreibend, Query = lesend |
| 2026-04-07 | aggregateTable im Sub-Agent statt SQL in queryTable |
Saubere Trennung row-level vs. aggregate, SQL-Injection-Schutz |
| 2026-04-07 | DB-Connection-Pooling statt Connection-per-Call | Grösster Performance-Hebel (~200ms pro Connection) |
| 2026-04-07 | Result-Cache auf WorkflowMemory-Ebene | Agent kann gecachte Ergebnisse wiederverwenden |
| 2026-04-09 | Prompt-Templates als Code statt externe Dateien | In mainTrustee.py als Template Workflows — wartbar und versioniert |
| 2026-04-09 | Quid-Demo ohne Zendesk-Connector — CSV/Excel-Upload | Gleicher Analyse-Mehrwert, viel weniger Aufwand |
| 2026-04-09 | Gastro-UC und Konsolidierung auf P4 | Warten auf Kunden-Input (Kevin) bzw. Lars-Meeting |
| 2026-04-09 | CommCoach-Personas als schnellster Wow-Effekt für PWG | Feature ist gebaut; nur Persona-Definitionen nötig |
Betroffene Module
- Gateway:
features/commcoach/(Persona-Seeding),features/trustee/(done + Demo-Daten),features/neutralization/(Demo-Config),features/graphicalEditor/(done),serviceCenter/serviceAgent/(done),demoConfigs/(neue Demo-Configs),workflows/methods/methodTrustee/(done) - Frontend: keine Änderungen
- DB-Migration: nein
- Andere: Testdaten (Excel, PDF, CSV), Demo-Skripte (Markdown)
Links
- Kundenwünsche:
local/notes/demo-tue-use-cases-inputs-customers.md - Automation Unification (done):
wiki/c-work/3-validate/2026-04-automation-unification.md - UI-Enhancements (parallel):
wiki/c-work/1-plan/2026-04-porta-ui-enhancements-team-meeting.md - INT-Stabilität (parallel):
wiki/c-work/1-plan/2026-04-gateway-int-stability-and-bugfixes.md - Original-Plan 1:
wiki/c-work/1-plan/2026-04-customer-trustee-demo-enablement.md - Original-Plan 2:
wiki/c-work/1-plan/2026-04-customer-trustee-tooling-and-demo-prep.md - Investor-Demo (Referenz):
platform-core/modules/demoConfigs/investorDemo2026.py - CommCoach Personas:
platform-core/modules/features/commcoach/serviceCommcoachPersonas.py - Trustee Main (Prompts + Quick Actions):
platform-core/modules/features/trustee/mainTrustee.py - Neutralisierung:
platform-core/modules/features/neutralization/ - Demo-Daten:
platform-core/demoData/
Abschluss
- Original-Pläne als "merged" markieren (Verweis auf dieses Dokument)
- b-reference/ aktualisiert (ggf. neue Feature-Docs)
- TOPICS.md aktualisiert (falls neues Thema)
- Dieses Dokument → z-archive/ verschoben