Bauplan — VF Liquiditaets-Cockpit Phase 1

Vorab — Voraussetzungen klaeren (vor Tag 1)

  • 2026-05-18 verifiziert: Papierkram-MCP greift bereits auf VFs Account zu (Mandant vibefactorygmbh). Sparkasse Hamm (Connection id 6) + Standard (id 3) als bank_connections vorhanden. Keine API-Key-Holung noetig.
  • TicketPay-Daten von VF zugaenglich? Test via ticketpay_list_events + ticketpay_list_orders.
  • av-cockpit lokal lauffaehig (Marvin’s normaler Dev-Setup)?

Tag 1 — Daten-Discovery + Modell

Ziel: klar haben, welche Felder aus welchen MCPs wir wirklich brauchen.

  • Papierkram-MCP-Calls durchspielen, real gegen VFs Daten:
    • papierkram_list_bank_connections → Konten + Saldos
    • papierkram_list_bank_transactions mit Date-Range 90d → Cashflow-Historie
    • papierkram_list_invoices mit status=open → Forderungen
    • papierkram_list_vouchers mit status=pending → Verbindlichkeiten
    • papierkram_monatsabschluss letzte 12 Monate → Burn-Rate
  • TicketPay-MCP-Calls durchspielen:
    • ticketpay_list_events upcoming → geplante Events
    • ticketpay_list_orders pro Event → Verkaufs-Stand
    • ticketpay_event_bilanz pro Event → erwartete Auszahlung
  • Daten-Modell skizzieren: finance_snapshots-Tabelle in ~/source/apps/av-cockpit/src/lib/finance-schema.ts

Deliverable: TypeScript-Interface fuer Snapshot + Mock-JSON mit echten VF-Daten als Beispiel.

Tag 2 — Snapshot-Cron-Job

Ziel: Daten kommen automatisch in eine Postgres-Tabelle.

  • Cron-Routine im agents-platform anlegen (via routine-anlegen-Skill): vf-finance-snapshot
    • Schedule: alle 4 Stunden
    • Action: MCP-Calls aus Tag 1 → Aggregation → Insert in finance_snapshots (av-production RDS)
  • finance_snapshots-Tabelle anlegen:
    CREATE TABLE finance_snapshots (
      id uuid PRIMARY KEY,
      tenant text NOT NULL DEFAULT 'vf',
      snapshot_at timestamptz NOT NULL,
      bank_total numeric,
      receivables_open numeric,
      payables_open numeric,
      burn_rate_3mo numeric,
      revenue_mtd numeric,
      expense_mtd numeric,
      upcoming_events jsonb,
      raw jsonb,
      created_at timestamptz DEFAULT now()
    );
    CREATE INDEX ON finance_snapshots (tenant, snapshot_at DESC);
  • Forecast-Annahmen JSON-File in intern/projekte/vf-liquiditaets-cockpit/forecast-assumptions.json anlegen (initial leere Skeleton, Andre fuellt spaeter)

Deliverable: Cron-Routine laeuft, schreibt Snapshots; ein erster echter VF-Snapshot in der DB sichtbar.

Tag 3 — Cockpit-Page Skeleton

Ziel: Route /vf im av-cockpit existiert, drei leere Bloecke, Snapshot-Daten gelesen.

  • Neue Route src/app/vf/page.tsx
  • Server Component liest letzten Snapshot aus finance_snapshots
  • Drei Bloecke als leere Cards:
    • Block A: drei grosse Zahlen (Saldo, Puffer, Runway) — zunaechst nur Saldo gefuellt
    • Block B: Diesen Monat — zunaechst leer
    • Block C: 90-Tage-Forecast — zunaechst leer
  • Layout: Geist-Sans-Typografie, monochrom, Akzent 533afd (av-cockpit-Konvention)

Deliverable: dashboard.agenticventures.de/vf zeigt einen echten VF-Bankstand. Rest noch leer aber Struktur steht.

Tag 4 — Block B + Forecast-Logic

Ziel: Monatsblock voll, Forecast rechnet.

  • Block B fuellen: Eingenommen MTD, Ausgegeben MTD, Liste offene Rechnungen raus, Liste faellige rein, geplante Events diesen Monat mit Verkaufsstand
  • Forecast-Logic in src/lib/finance-forecast.ts:
    • Input: aktueller Snapshot + Forecast-Annahmen
    • Output: 90-Tage-Cashflow-Projektion (Array von { date, expected_cash, lower, upper })
    • Algorithmus initial simpel: Burn-Rate-Trend extrapolieren + geplante Event-Einnahmen addieren + bekannte faellige Rechnungen subtrahieren
  • Break-Even-Berechnung: „bei dieser Burn-Rate, wie viel Umsatz fehlt diesen Monat”

Deliverable: Blocks A + B sind komplett, Forecast-Logic funktioniert deterministisch.

Tag 5 — Block C + Action-Recommendations

Ziel: Forecast-Chart visualisiert, Empfehlungs-Logik liefert konkrete Aktionen.

  • Block C fuellen: Recharts Line-Chart fuer 90-Tage-Forecast mit Break-Even-Linie
  • Action-Recommendation-Engine in src/lib/finance-actions.ts:
    • Wenn Forecast Ende Monat negativ → „Du brauchst noch X EUR. Optionen: A Events buchen / B Rechnungen mahnen”
    • Wenn ueberfaellige Rechnungen raus → „Diese Rechnungen mahnen, Volume Y EUR”
    • Wenn Puffer < 1 Monat Burn → „Runway-Warnung, Kosten-Review noetig”
  • Output: 3-5 konkrete Aktions-Items mit Klick-Through (Rechnung in Papierkram, Event in TicketPay)

Deliverable: Seite ist komplett, Empfehlungs-Liste zeigt 3-5 konkrete Actions basierend auf echten VF-Daten.

Tag 6 — Polish + Andre Live zeigen

Ziel: Optisch sauber, Andre’s erste Reaktion einsammeln.

  • Mobile-Layout pruefen (Andre nutzt vermutlich Handy)
  • Cloudflare-Access-Policy fuer /vf erweitern: Andre + Christoph
  • Andre kurz anrufen oder Call buchen: 30 Min Hands-On, Marvin zeigt, Andre testet
  • Erste Iterations-Punkte einsammeln

Deliverable: Live-Sicht fuer Andre und Christoph, Notizen-Liste fuer Iteration 2.

Tag 7 — Iteration + Live

Ziel: Andre’s Feedback eingearbeitet, Live als „produktiv” deklariert.

  • Top-3 Iterations-Punkte aus Tag 6 umsetzen
  • Forecast-Annahmen mit Andre durchsprechen und einkippen
  • status: deployed im _index.md, Eintrag in active-work und Verlinkung zur Kunde-Seite

Deliverable: Live, dokumentiert, Andre und Christoph onboarded.

Polish-Pufferwoche (Tag 8-14)

  • Reaktion einsammeln, weitere Iterationen
  • Daily-Check ob das Cockpit auch wirklich genutzt wird (Cloudflare-Access-Logs)
  • Wenn Adoption gut: Phase-2-Diskussion starten (siehe agentic-ventures-workplace-standard-stack)
  • Wenn Adoption mau: Ursachen ergruenden bevor Phase 2

Risiken + Mitigation

RisikoMitigation
VFs Sparkasse ist nicht in Papierkram angebundenVor Tag 1 mit Andre klaeren, ggf. 30-Min-Onboarding
Papierkram-Saldos sind nicht echtzeit (mehrere Tage Drift)Akzeptieren als „T-2”-Stand, Disclaimer im UI
Forecast-Annahmen sind initial Pflege-Last (kein Tool)Initial JSON-File reicht; nach Adoption nach Baserow umziehen
TicketPay-Daten sind nicht aktuell syncedTest in Tag 1, ggf. Sync-Frequenz dort erhoehen
Andre nutzt es nach 1 Woche nicht mehrPflichtkonsultation im 1-zu-1-Call alle 2 Wochen, daraus Iteration

Aufwand realistisch

7 Arbeitstage netto, 2-3 Wochen brutto. Plus Polish-Pufferwoche.