Version
2323af6a00223977dea62e426d5331ca54a9e6f9691bf8607c18a402c32ecb18SHA-256 of the document below. The hash you accepted is recorded in your audit trail — match it against this value to confirm what's live.
Velvr Operational Defaults
Status: Living document, version 2026-05-11.
Purpose: Transparente Auflistung der technischen und algorithmischen Defaults die Velvr für die AI-Auto-Reply-Funktionalität, die Validator-Pipeline und die Datenverarbeitung anwendet.
Rechtliche Bedeutung: Dieses Dokument ist Bestandteil des DPA-Click-Through (siehe [velvr-dpa-draft.md](velvr-dpa-draft.md)). Mit Acceptance der DPA adoptiert der Customer die hier beschriebenen Defaults als seine documented instructions im Sinne von GDPR Art. 28(3)(a). Bei substantieller Änderung erfolgt eine Re-Acceptance-Notification an alle aktiven Customers.
Update-Policy: Cosmetic-Änderungen (Wording, Klarstellung) werden ohne Re-Acceptance umgesetzt und im Änderungs-Log notiert. Substantielle Änderungen (neuer Validator-Layer, AI-Modell-Wechsel, Sub-Processor-Hinzufügung, Algorithmus-Änderung) triggern Re-Acceptance via Banner + Email mit Engine-Block bis Zustimmung. Definition substantiell vs. cosmetic: siehe §8.
1. Scope dieses Dokuments
Was abgedeckt ist:
- Validator-Pipeline-Layer (alle 6 Schichten)
- Engine-Logic-Signale (Pushiness, Funnel-Stages, PPV-Picker)
- AI-Modell und Provider
- Datenfluss-Architektur
- Sub-Processor-Liste mit Zweck und geografischer Verarbeitungs-Region
Was NICHT abgedeckt ist:
- Source-Code (proprietär, nicht teil der Customer-Defaults)
- Exakte Prompt-Wordings (sicherheitsrelevant, würde Adversarial-Attacks erleichtern)
- Internal-Tuning-Parameter (z.B. Stop-Word-Listen, Refusal-Pattern-Regex) — die abstrahierten Funktionen werden beschrieben, nicht die konkreten Patterns
2. Validator-Pipeline (6 Layer)
Jede AI-generierte Caption durchläuft vor dem Send eine feste Validator-Sequenz. Jeder Layer kann die Caption ersetzen, modifizieren oder ergänzen. Die Reihenfolge ist nicht optional — sie verhindert dass ein nachgelagerter Validator einen Override des vorhergehenden überschreibt.
2.1 Layer 1 — Caption-Guard
Aktiv wenn: Engine-Decision = forced_chat_only (Warmup-Required, no_active_packages, rate_limit, cooldown_after_buy).
Was geprüft wird:
- Vault-Blocklist: Patterns die auf nicht-existenten oder gesperrten Vault-Content verweisen
- Pivot-Phrasen: Sätze die den Fan trotz Chat-Only-Mode zu einem Kauf hindeuten würden
- Foreign-Greeting-Check: Sprach-fremde Begrüßungen die nicht zur target_lang passen (mit Persona-Exception)
- Flirty-Opener bei emotional-negativem Fan-Input (Empathy-Override)
Bei Verstoß: Caption wird durch eine sprach-passende Boilerplate-Caption ersetzt (Empathy- oder Neutral-Fallback in der target_lang).
Begründung: Phase-2-Vier-Iterationen-Lessons-Learned haben gezeigt dass Grok sich allein durch Prompts nicht zuverlässig steuern lässt — der Validator garantiert das Verhalten.
2.2 Layer 2 — Language-Refusal-Validator (always-on)
Aktiv wenn: immer, unabhängig von Engine-Decision oder Language-Hint.
Was geprüft wird: Pattern-Matching auf typische AI-Refusal-Phrasen wie „I'll stick to English", „ich bleib bei Deutsch", „preferisco italiano" — Sätze in denen die AI eine vom Fan angeforderte Sprach-Umstellung aktiv verweigert.
Bei Verstoß: der entsprechende Satz wird aus der Caption geschnitten (Sentence-Boundary-Detection). Falls die Caption nach dem Schnitt inhaltlich leer ist, wird auf einen kurzen Smalltalk-Reply in der target_lang ausgewichen.
Begründung: Live-Bug aus Phase 2 — Fan fragt nach Sprach-Wechsel, AI antwortet höflich aber verweigert. Aktive Verweigerung wirkt schlechter als wenn die AI nicht wechseln würde.
2.3 Layer 3 — Language-Drift-Validator
Aktiv wenn: Language-Hint = respond_in_target UND keine vorherige Validator-Schicht hat die Caption schon überschrieben.
Was geprüft wird: Stop-Word-Tokenization der Caption pro Sprache. Wenn die nicht-target-Sprache mehr als 2.5× so viele Stop-Word-Hits hat wie die target-Sprache → Drift erkannt.
Bei Verstoß: Caption wird durch eine sprach-passende Boilerplate in target_lang ersetzt.
Begründung: Live-Bug aus Phase 2 — Fan schreibt „Hi" auf Englisch, target_lang ist EN, AI antwortet auf Italienisch („Ciao amore..."). Persona-Drift bei ambigen Greetings.
Persona-Greeting-Kompensation: wenn persona.nationality_lang = 'it' und target_lang ≠ 'it', wird der IT-Stop-Word-Score um 2 reduziert. Verhindert false-positives auf Persona-Signature-Opener.
2.4 Layer 4 — Lang-Offer-Validator (proactive_ask only)
Aktiv wenn: Language-Hint = proactive_ask (Reply 1 einer neuen Konversation für Translator-Discovery-Hint).
Was geprüft wird: ob die Caption das Keyword „Translator" (case-insensitive, in der Persona-Sprache übersetzbar) enthält.
Bei Verstoß: lokalisierter Discovery-Hint-Footer wird angehängt.
Begründung: Translator-Mode (deterministischer Sprach-Switch via Keyword) erfordert dass der Fan das Keyword kennt. Reply 1 ist der natürliche Ort die Discovery zu sichern.
2.5 Layer 5 — Limits-Guard
Aktiv wenn: immer.
Was geprüft wird: Pattern-Matching auf Velvr-Default-Hard-Limits plus Persona-spezifische Hard-Limits aus dem Persona-Brief.
Velvr-Default-Hard-Limits (compliance-relevant, nicht überschreibbar):
- Minderjährige in jeder Form (Bezug, Rollenspiel, Anspielung)
- IRL-Treffen-Angebote oder -Anbieten
- Phone/Video-Call-Angebote oder -Anbieten
- Bezahlung außerhalb der Plattform-Infrastruktur
Persona-spezifische Hard-Limits: vom Creator pro Persona konfigurierbar (z.B. „kein Roleplay als Politikerin", „kein Bezug zu spezifischen religiösen Themen").
Bei Verstoß: Caption wird durch eine kontextpassende Refusal-Boilerplate ersetzt, die den Fan respektvoll aber klar in eine compliance-konforme Richtung lenkt.
Begründung: Erweiterung des Caption-Guard-Patterns auf Compliance-Limits. Prompt-Direktive als Primär-Verteidigung, Validator als Garantie.
2.6 Layer 6 — Disclosure-Validator (AI-Act Art. 50 Compliance)
Aktiv wenn: Reply 1 einer neuen Konversation (fan_offer_log.count für (persona_id, fan_id) = 0).
Was geprüft wird: ob die Caption drei semantische Marker enthält:
- AI-Erwähnung — Wörter wie „AI", „KI", „IA", „artificial intelligence", oder Persona-Sprache-Übersetzungen
- Assistierung-Klärung — Verben/Phrasen wie „use", „helps me", „nutzt", die klarstellen dass AI die Persona unterstützt, nicht ist
- First-person-Owner — die Persona spricht aus erster Person, die AI ist ein Werkzeug
Bei Verstoß:
- Erste Stufe: Re-Prompt-Versuch mit explizitem Hinweis welcher Marker gefehlt hat
- Zweite Stufe (wenn Re-Prompt auch fehlt): deterministischer Fallback-Footer in target_lang wird angehängt. Wording-Beispiel (en): „btw — I sometimes use AI to help me reply faster 💕". Persona-Stimme bleibt erhalten, Compliance ist garantiert.
Begründung: EU AI Act Art. 50 verlangt Fan-Information „clear and distinguishable at the latest at the time of the first interaction". Velvr stellt das mechanisch sicher statt es an Creator-Disziplin zu delegieren.
Wording-Beispiele in 8 Sprachen liegen in lib/chat/validators/disclosure.ts (Implementation, nicht öffentlich). Das Wording wird beim Customer-Onboarding sichtbar und kann pro Persona im UI vorab gepreviewed werden.
2.7 Pipeline-Reihenfolge — visuell
`` Grok-Output Caption ↓ Layer 1: Caption-Guard (nur bei forced_chat_only) ↓ Layer 2: Refusal-Validator (always-on) ↓ Layer 3: Drift-Validator (nur bei respond_in_target, wenn Layer 1+2 nichts ersetzt haben) ↓ Layer 4: Lang-Offer-Validator (nur bei proactive_ask) ↓ Layer 5: Limits-Guard (always-on, Hard-Compliance) ↓ Layer 6: Disclosure-Validator (nur bei Reply 1) ↓ Final Caption → Send via Fanvue-API ``
Jeder Layer schreibt ein Audit-Log-Event nach fan_offer_log.raw_response bei Override. Override-Rate-Monitoring siehe [chatbot/architecture.md](chatbot/architecture.md) §Audit & Monitoring.
3. Engine-Logic (Decision-Layer vor Grok-Call)
Die Engine entscheidet vor dem Grok-Call: pitchen wir gerade ein Paket, antworten wir Chat-Only, oder überspringen wir den Send komplett.
3.1 Engine-Decisions (3 Typen)
| Decision | Bedeutung |
|---|---|
skip | Nichts senden. Reasons: master_disabled, intent_too_low, grok_failed, error |
chat_only | Senden, aber kein Pitch. Caption = Smalltalk, package_id = null |
upsell | Senden mit Pitch. Caption referenziert ein konkretes PPV-Paket |
3.2 Engine-Signale (Inputs)
- intent_score (0-10) — Vom Stage-1-Classifier auf die Fan-Message angewendet. Höher = klarer Kauf-Signal.
- pushiness (1-10) — Wie aggressiv pitcht die AI. Abgeleitet aus intent_score + Funnel-Stage.
- funnel_stage — Pro
(persona, fan, package):awareness → curiosity → decision → conversion → retention - time_block — Tageszeit-Profil der Konversation
- spending_lifetime_cents — Aggregierte Spending-Daten pro Fan
- prior_pitches_for_package — Wie oft das Paket diesem Fan schon gepitcht wurde (Anti-Habituation)
3.3 Skip-Reasons (vollständig)
`` master_disabled — Auto-Reply global für die Persona aus intent_too_low — intent_score < persona-spezifische Schwelle cooldown_after_buy — Fan hat gerade gekauft, Ruhe-Phase rate_limit_6h — schon X Pitches in 6h rate_limit_24h — schon Y Pitches in 24h min_messages_between — zu wenig Outbound-Messages seit letztem Pitch warmup_required — erste 3-5 Replies an neuen Fan: kein Pitch no_active_packages — keine PPV-Pakete im Vault zum Pitchen translator_show_menu — Translator-Mode hat Vorrang grok_failed — Grok-Call timeout/error grok_invalid_id — Grok hat ein nicht-existentes package_id halluziniert error — sonstige Fehler ``
Bei Skip-Reasons warmup_required, no_active_packages, cooldown_after_buy, min_messages_between, rate_limit_* wird der Decision-Mode auf chat_only gestellt und Caption-Guard (Layer 1) aktiviert.
3.4 Pushiness-Gradient
| intent_score | pushiness | Verhalten |
|---|---|---|
| 0–3 | 1–3 | Pure Smalltalk, kein Pitch |
| 4–6 | 4–6 | Soft-Pitch, max 30% der Message ist Vault-Hinweis |
| 7–8 | 7–8 | Standard-Pitch, organisch in Caption verwoben |
| 9–10 | 9–10 | Direct-Pitch mit Buy-Signal-Override |
Buy-Signal-Override: bei intent_score = 10 wird pushiness auf 10 hochgezogen unabhängig von Funnel-Stage.
3.5 PPV-Picker (welches Paket pitchen)
Wenn Engine-Decision = upsell: aus dem Pool aller aktiven PPV-Pakete der Persona wird ein Paket gepickt nach folgendem Algorithmus:
- Stage-Window aus
intent_score,pushiness,spending_lifetime_centsableiten (5 Stages je nach Hardness) - Kandidaten laden — aktive Pakete im Stage-Window, vom Fan noch nicht gekauft, mit Cooldown-Filter (48h pro Paket)
- Eligibility-Filter — Hard-Cap 4 Pitches pro
(fan, package)ohne Sale; Funnel-Stagedecisionmit <24h seit letztem Pitch wird übersprungen - Ranking — Sort nach
conversion_rate desc, pitch_count asc - Anti-Habituation — aus Top-3 wird zufällig gewählt (Top-K-Random, Multi-Armed-Bandit-Light)
Tunable Defaults (in engine_config Tabelle, 60s-Cache):
- Cooldown pro Paket: 48h
- Hard-Cap pro
(fan, package)ohne Sale: 4 Pitches - Top-K für Random-Pick: 3
- Stage-Windows: dokumentiert in [
chatbot/architecture.md](chatbot/architecture.md) §Engine-Picker
Diese Defaults sind Velvr-Team-tunbar ohne Code-Deploy (Top-Regel #15) und gelten cross-Customer. Per-Persona-Overrides werden nicht angeboten.
4. AI-Modell und Provider
4.1 Aktuelle Modell-Konfiguration (Stand 2026-05-31)
| Use-Case | Modell | Provider | Region |
|---|---|---|---|
| Auto-Reply Writer-Call | grok-4.3 | xAI | US |
| Sprach-Detection | grok-4.3 | xAI | US |
| Vision-Captioning (Vault) | grok-4.3 | xAI | US |
| Embedding/Memory (geplant) | TBD | TBD | TBD |
Pooled Key: Velvr betreibt einen geteilten xAI-API-Key. Token-Verbrauch wird pro Customer-Account getrackt und gegen das Token-Budget abgerechnet. Kein BYO-Key in Phase 3 (eventuell Pro-Tier-Feature in Phase 4).
4.2 Modell-Wechsel-Policy
Wechsel zwischen Minor-Versionen innerhalb derselben Modell-Familie sind cosmetic und triggern keine Re-Acceptance, vorausgesetzt die Output-Qualität in Validator-Override-Rates bleibt innerhalb von ±10% des Vorgängermodells (gemessen über 1%-Sample-Audit).
Wechsel zwischen Major-Versionen oder Provider-Wechseln (z.B. xAI → Anthropic) gelten als substantiell und triggern Re-Acceptance.
4.3 Output-Determinismus
AI-Output ist nicht-deterministisch. Velvr verlässt sich nicht auf Output-Konsistenz, sondern auf die mechanische Validator-Pipeline (Section 2). Das Pattern „Prompt-Direktive + Server-side Validator daneben" ist der Velvr-Standard für jeden compliance-relevanten Output-Constraint.
5. Datenfluss-Architektur
5.1 Welche Daten Velvr verarbeitet
Customer-Daten (Velvr als Independent Controller):
- Account-Identifikation (Email, Auth-User-ID)
- Billing-Status (gelistete Pläne: Fanvue als Merchant-of-Record, Velvr erhält keine Zahlungsdaten; Off-Fanvue-Enterprise: Stripe, nur Customer-ID)
- Velvr-internes Nutzungs-Verhalten (Login-Events, Feature-Verwendung)
Personas-Daten (Velvr als Processor):
- Persona-Sheet (Charakter, Tonfall, Hard-Limits)
- OAuth-Tokens für Fanvue-Verbindung (AES-GCM-verschlüsselt, siehe §6)
Fan-Daten (Velvr als Processor — Creator ist Controller):
- Fanvue-Fan-UUID, Fanvue-Handle, Display-Name
- Konversations-Inhalte (eingehend + ausgehend)
- Aggregierte Spending-Metriken (LTV, Recency)
- Per-Fan-Notes (vom Creator)
- Funnel-State pro PPV-Paket
Anonymisierte Aggregate (Velvr als Independent Controller, Art. 89 GDPR):
- Validator-Override-Rates pro Sprache/Persona-Typ
- Engine-Performance-Metriken (Conversion-Rate-Tracking)
- AI-Modell-Qualitäts-Vergleiche
Aggregate-Daten enthalten keine personalisierbaren Identifier und werden nicht zur Re-Identifikation einzelner Datensubjekte verwendet.
5.2 Datenfluss-Diagramme
Initial-Audience-Backfill (beim OAuth-Connect, einmalig pro Persona)
`` Customer OAuth-Authorize via Fanvue ↓ Token-Receipt + AES-GCM-Encrypt + DB-Store ↓ Velvr Inngest-Function (personas.initial_audience_backfill) ↓ ├──→ GET /users/me (Persona-Identity + fanCounts) ├──→ GET /subscribers?size=50&page=1..N (paginiert) └──→ GET /followers?size=50&page=1..N (paginiert) ↓ UPSERT fans-Tabelle pro User-Row (persona_id, fanvue_user_uuid, handle, status, ...) ↓ UPDATE personas.initial_backfill_completed_at ↓ Notification an Customer „Inbox bereit" ``
Details siehe [fanvue-api.md](fanvue-api.md) §14.8.
Forward-Sync (kontinuierlich nach Backfill, pro Persona)
`` Fanvue Webhook (subscription.new / follow.new / purchase.new / etc.) ↓ Velvr Inngest-Function (webhooks.fanvue.dispatcher) ↓ UPSERT fans-Tabelle (Status-Update, Spending-Aggregation) ↓ Audit-Log (audit_log.event) ``
Auto-Reply-Pipeline (pro eingehender Fan-Message bei Toggle=ON)
`` Fanvue Webhook (message.received) ↓ Velvr Inngest-Function (auto_reply.ts) ↓ ├──→ Lang-Detection (xAI Grok-4.3) ├──→ State-Machine (Velvr-internal) ├──→ Engine-Gate (Velvr-internal) ├──→ Prompt-Build (Velvr-internal) └──→ Writer-Call (xAI Grok-4.3) ↓ Validator-Pipeline (6 Layer, Velvr-internal) ↓ Send via Fanvue-API (POST /chats/messages) ↓ Audit-Log (fan_offer_log.raw_response) ``
Fan-PII verlässt Velvr's Infrastruktur ausschließlich Richtung xAI (für Inference) und Fanvue (für Send/Read). Keine andere Third-Party bekommt Fan-PII.
5.3 Verschlüsselung
- At Rest: Supabase Postgres mit AES-256 verschlüsselter Storage. Sensitive Felder (OAuth-Tokens) zusätzlich AES-GCM-verschlüsselt mit Velvr-eigenem Key (siehe
lib/crypto/aesGcm.ts). - In Transit: TLS 1.3 für alle externe Verbindungen (Fanvue, xAI, Stripe, Customer-Browser).
- Backups: Daily Snapshots in Supabase, 30 Tage Retention. R2-Backup-Mirror in EU-West für Disaster Recovery.
6. Sub-Processor-Liste
Diese Liste ist abschließend für Phase 3. Bei Hinzufügung eines Sub-Processors erfolgt eine Notification an alle aktiven Customers mit 14 Tagen Frist zur Objection, wie in der DPA Annex III spezifiziert.
6.1 Infrastruktur
| Sub-Processor | Zweck | Verarbeitungs-Region | Datentyp | Compliance-Mechanismus |
|---|---|---|---|---|
| Vercel Inc. | Web-Hosting, Edge-Routing, Preview-Deploys | US (Edge: global) | App-Code, kurzzeitige Request-Logs | EU SCCs, DPA bilateral |
| Supabase Inc. | Postgres-DB, Auth, Storage | US-East | Strukturierte Velvr-Daten, Auth-Daten | EU SCCs, DPA bilateral |
| Cloudflare Inc. | R2 Object Storage, DNS, Image Resizing, CSAM-Scanning | EU + US | Avatar-Files, Media-Cache, DNS | EU SCCs, DPA bilateral |
| Inngest Inc. | Background-Job-Orchestration | US | Event-Payloads, Job-State | EU SCCs |
6.2 AI / ML
| Sub-Processor | Zweck | Verarbeitungs-Region | Datentyp | Compliance-Mechanismus |
|---|---|---|---|---|
| xAI Corp. | LLM-Inference (Grok-Modelle) | US | Prompts (inkl. Fan-Message-Inhalte), Outputs | EU SCCs, xAI-API-Policy |
6.3 Payments / Billing
| Sub-Processor | Zweck | Verarbeitungs-Region | Datentyp | Compliance-Mechanismus |
|---|---|---|---|---|
| Stripe Inc. | Billing nur für Off-Fanvue-Enterprise-Pläne | US | Customer-Billing-Daten (NICHT Fan-Daten) | EU SCCs, Stripe-DPA |
6.4 Communication
| Sub-Processor | Zweck | Verarbeitungs-Region | Datentyp | Compliance-Mechanismus |
|---|---|---|---|---|
| Resend Inc. | Transactional Email (Onboarding, Notifications) | US/EU | Customer-Email, Notification-Inhalte | EU SCCs |
6.5 Observability
| Sub-Processor | Zweck | Verarbeitungs-Region | Datentyp | Compliance-Mechanismus |
|---|---|---|---|---|
| Sentry (Functional Software Inc.) | Error-Tracking, Performance-Monitoring | US/EU | Stack-Traces, Request-Metadaten, optional User-ID | EU SCCs, Sentry-DPA, PII-Scrubbing aktiv |
| PostHog Inc. | Product-Analytics, Feature-Flags, Session-Replay | EU-Region | Customer-Nutzungs-Daten (kein Fan-PII), Feature-Telemetrie | EU-Hosting selected, EU SCCs |
6.6 Plattform-Integration (vom Customer initiiert)
| Plattform | Beziehung | Datentyp | Compliance-Mechanismus |
|---|---|---|---|
| Fanvue (Shift Holdings LTD, UK) | OAuth-Provider + API-Gegenseite + Merchant-of-Record für gelistete App-Store-Pläne (Billing/Tax/Refunds) | Customer-Persona-Token (Velvr → Fanvue), Fan-Daten (Fanvue → Velvr), Billing-Daten | Fanvue API Policy 2026-02-05, OAuth 2.0 PKCE, AES-GCM-Token-Encryption |
Die Fanvue-Beziehung ist nicht ein klassischer „Sub-Processor" da Fanvue Plattform-Owner ist und die Daten primär dort entstehen. Compliance läuft über Fanvue's eigene Policies und die OAuth-Authorisierung durch den Creator.
7. Retention und Löschung
| Datentyp | Retention | Begründung |
|---|---|---|
audit_log (Customer-Level-Events) | 24 Monate | B2B-SaaS Standard, EU-Compliance-Audits |
fan_offer_log (Reply-Events, full row) | 12 Monate | Trend-Analysen, Engine-Tuning |
fan_offer_log (aggregated, anonymized) | 5 Jahre | Anonymisiert, kein PII |
chat_messages | Lifetime des Accounts + 30 Tage nach Hard-Delete | Conversation-History-Pflicht für Audit |
| Login-Events / Auth-Logs | 12 Monate | Security-Forensik |
| Failed-Payment-Events | 6 Jahre | US-LLC-Buchhaltungs-Standard |
| OAuth-Tokens (encrypted) | Lifetime des Accounts | Bei Account-Delete kaskadiert gelöscht |
7.1 Account-Delete-Workflow
Bei Customer-Account-Delete-Request: 30-Tage-Soft-Delete-Window (Recovery möglich), danach Hard-Delete mit Cascade auf alle Velvr-Tabellen plus Stripe-Customer-Object-Löschung plus R2-Storage-Bereinigung. Ausnahmen für Compliance-Audit-Aufbewahrung (DPA/ToS-Acknowledgments, Failed-Payments, Velvr-Team-Access-Logs) werden pseudonymisiert separat archiviert.
7.2 Legal Hold
Bei laufender Legal-Streitigkeit, regulatorischer Anfrage oder Law-Enforcement-Request behält Velvr verschlüsselte Kopien der relevanten Daten bis zur Resolution. Notification an betroffenen Customer erfolgt sofern rechtlich zulässig.
8. Update-Policy und Re-Acceptance-Trigger
8.1 Cosmetic-Änderungen (keine Re-Acceptance)
- Wording-Klarstellungen ohne Bedeutungsänderung
- Korrekturen von Typos
- Aktualisierungen der Modell-Versionen innerhalb derselben Major-Familie (innerhalb der grok-4.x-Familie)
- Hinzufügung von beobachtenden Telemetrie-Endpoints ohne neue PII-Erfassung
- Sub-Processor-Wechsel innerhalb derselben Funktion (z.B. Sentry → New Relic mit identischem Datenfluss)
Diese werden im Änderungs-Log (Section 11) dokumentiert und für aktive Customers per Email-Notification kommuniziert (keine Engine-Pause).
8.2 Substantielle Änderungen (Re-Acceptance erforderlich)
- Hinzufügung oder Entfernung eines Validator-Layers
- Wechsel zwischen Major-Modell-Familien oder LLM-Providern
- Hinzufügung eines neuen Sub-Processors mit Zugang zu Fan-PII
- Wesentliche Algorithmus-Änderung (z.B. neuer PPV-Picker-Modus, neue Engine-Decision-Type)
- Änderung der Retention-Perioden
- Datenfluss-Architektur-Änderungen (neue Datenkategorien, neue Verarbeitungs-Regionen)
Bei substantieller Änderung:
- Velvr-Team aktiviert die neue Version mit einem Stichtag
- Alle Customers bekommen Banner-Notification + Email mit konkretem Diff zur Vorversion
- Engine-Block bis Re-Acceptance (kein Auto-Reply, kein PPV-Send) — Customer kann Velvr weiternutzen für nicht-AI-Funktionen
- 30-Tage-Frist; bei Non-Acceptance wird der Account in Read-Only-Modus gestellt mit Option zum geordneten Account-Export oder Vertragskündigung
- Audit-Log dokumentiert Acceptance-Datum und Version
8.3 Notification-Kanäle
- In-App-Banner mit Diff-Link
- Email an primäre Account-Adresse
- Eintrag in Customer-Audit-Trail
- Update dieses Dokuments mit Datum + Diff-Summary in Section 11
9. Verifikation und Audit-Rechte
9.1 Customer-Audit-Rechte
Customer hat Recht auf einen jährlichen Audit der Velvr-Compliance mit diesem Dokument, durchgeführt durch einen Customer-finanzierten unabhängigen Auditor unter NDA, gegen 60 Tage Vorlauf. Details siehe DPA §6.
9.2 Audit-Alternativen
Velvr kann statt eines physischen Audits eine SOC 2 Type II Audit-Zusammenfassung (sobald verfügbar) oder schriftliche Antworten auf einen Security-Fragebogen anbieten.
9.3 Behörden-Audits
Bei regulatorischen Audits (Aufsichtsbehörden gemäß GDPR Art. 58) kooperiert Velvr im gesetzlich gebotenen Rahmen.
10. Verwandte Dokumente
- [
compliance-strategy.md](compliance-strategy.md) — Compliance-Frame und juristische Position - [
velvr-dpa-draft.md](velvr-dpa-draft.md) — DPA-Entwurf für Legal-Review - [
chatbot/architecture.md](chatbot/architecture.md) — Technische Validator-Pipeline-Spec - [
chatbot/prompt-patterns.md](chatbot/prompt-patterns.md) — Prompt-Engineering-Patterns - [
chatbot/lessons-learned.md](chatbot/lessons-learned.md) — Phase-2-Bugs als Behavioral-Contract - [
architecture.md](architecture.md) — Repo-weite Architektur - [
fanvue-api.md](fanvue-api.md) — Fanvue-Integration-Spec
11. Änderungs-Historie
| Datum | Änderung | Typ | Re-Acceptance |
|---|---|---|---|
| 2026-05-11 | Initial-Version | Initial | n/a (vor MVP-Launch) |
| 2026-05-11 (Update) | §5.2 Datenfluss-Diagramme erweitert um Initial-Backfill-Pipeline (GET /subscribers + GET /followers paginiert) und Forward-Sync-Pipeline (Webhook-Dispatcher). Klärt Datenfluss-Architektur nach Fanvue-API-Verifikation 2026-05-11 | Cosmetic | nein — präzisiert nur bereits beschriebene Datenflüsse |
| 2026-05-31 | §4 Modell-Konfiguration auf einheitlich grok-4.3 (xAI *-fast-Tier retired 2026-05-18); §5.1/§6.3/§6.6 Billing auf Fanvue-Merchant-of-Record umgestellt (Stripe nur noch Off-Fanvue-Enterprise) | Substantiell (Modell + Sub-Processor-Rolle) | n/a pre-MVP; Re-Acceptance ab Live-Kunden (VEL-274) |
Bei Fragen zu diesem Dokument: legal@velvr.app
Operational Defaults are part of the Data Processing Agreement. Customers adopt them as documented instructions per §2.3 of the DPA. Substantial changes trigger a Re-Acceptance flow in-app. Questions: legal@velvr.app.