Centurio System & Module Documentation
🏛️ Platform Architecture 🔑 Login
All Modules / crm_office / Kundenbeziehungen (CRM)
🎯

Kundenbeziehungen (CRM)

crm crm_office 🛡️ RLS Protected

Interessentenverwaltung, visuelle Deal-Pipeline (Kanban), Aktivitätenhistorie und Lead-zu-Angebot-Konvertierung.

Fachliche Bestimmung: Unterstützt Vertriebsteams bei der Akquise und Kundenbetreuung. Erfasst Interessenten (Leads) über Webformulare oder manuell, führt sie über individuell konfigurierbare Pipeline-Stufen (Qualifiziert, Begehung, Angebot, Verhandlung) und wandelt gewonnene Leads nahtlos in Kundenstammdaten und Angebote um.

⚡ Workflows & Lifecycles

Korrespondenz → CRM cascade:business.correspondence.crm

Kaskade (review_gated).

1. lead
CRM-Lead / Anfrage anlegen
crm
Aktionen: crm.lead.create
2. task
Anfrage nachfassen
tasks
Aktionen: create_task

CRM-Lead / Anfrage anlegen cascade_target:business.crm.lead

Kaskade (review_gated).

1. cascade
CRM-Lead / Anfrage anlegen

Benutzerbefehl: inquiry agent plan:command_inquiry_agent

Geprüfter Durable-Plan (durable_plan), Start: manual_command.

1. inquiry_agent
inquiry_agent
{"key": "execute_command", "label": "Befehl prüfen, ausführen oder zur Freigabe vorlegen", "adapter": "agent.execute", "agent": "inquiry_agent", "condition_fact": null}
Aktionen: inquiry_agent

Benutzerbefehl: lead qualification agent plan:command_lead_qualification_agent

Geprüfter Durable-Plan (durable_plan), Start: manual_command.

1. lead_qualification_agent
lead_qualification_agent
{"key": "execute_command", "label": "Befehl prüfen, ausführen oder zur Freigabe vorlegen", "adapter": "agent.execute", "agent": "lead_qualification_agent", "condition_fact": null}
Aktionen: lead_qualification_agent

Lead status:crm_lead

Beobachtbare Zustandsmaschine (observable_only). Übergänge hier nicht erzwungen — siehe Service-Validierung.

1. new
new
Status «new» der Zustandsmaschine Lead.
2. contacted
contacted
Status «contacted» der Zustandsmaschine Lead.
3. qualified
qualified
Status «qualified» der Zustandsmaschine Lead.
4. disqualified
disqualified
Status «disqualified» der Zustandsmaschine Lead.
5. converted
converted
Status «converted» der Zustandsmaschine Lead.

Opportunity status:crm_opportunity

Beobachtbare Zustandsmaschine (observable_only). Übergänge hier nicht erzwungen — siehe Service-Validierung.

1. open
open
Status «open» der Zustandsmaschine Opportunity.
2. won
won
Status «won» der Zustandsmaschine Opportunity.
3. lost
lost
Status «lost» der Zustandsmaschine Opportunity.

⚙️ Fachprozesse & Capabilities (System-Fachlogik)

Registrierte Fachoperationen und System-Capabilities dieses Moduls zur Steuerung von Workflows, Kaskaden und KI-Agenten.

Gesamt: 35 manual_entry: 1 engine: 26 reviewed: 1 review_gated: 2 operator_surface: 1 durable_plan: 2 observable_only: 2
Capability & Schlüssel Fachliche Bezeichnung Ausführung / Coverage Risikostufe & Freigabe Effekte & Kaskaden
Agent-Einstieg customer_crud_subagent agent_entry:customer_crud_subagent
Agent-Einstieg customer_crud_subagent
Quelle: code:module_agent_map
manual_entry
✓ Auto
Keine Seiteneffekte deklariert
Anruf capability:crm.activity.log_call
Op: crm.activity.log_call
Objekt: activity
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.activity.log_call
Kampagne capability:crm.campaign.enroll
Op: crm.campaign.enroll
Objekt: campaign
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.campaign.enroll
Crm: complete activity capability:crm.crm.complete_activity
Op: crm.crm.complete_activity
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.complete_activity
Crm: create activity capability:crm.crm.create_activity
Op: crm.crm.create_activity
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.create_activity
Crm: create lead capability:crm.crm.create_lead
Op: crm.crm.create_lead
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.create_lead
Crm: create opportunity capability:crm.crm.create_opportunity
Op: crm.crm.create_opportunity
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.create_opportunity
Crm: create quote for opportunity capability:crm.crm.create_quote_for_opportunity
Op: crm.crm.create_quote_for_opportunity
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.create_quote_for_opportunity
Crm: create report capability:crm.crm.create_report
Op: crm.crm.create_report
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.create_report
Crm: create stage capability:crm.crm.create_stage
Op: crm.crm.create_stage
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.create_stage
Crm: delete report capability:crm.crm.delete_report
Op: crm.crm.delete_report
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.delete_report
Crm: draft followup capability:crm.crm.draft_followup
Op: crm.crm.draft_followup
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.draft_followup
Crm: link quote to opportunity capability:crm.crm.link_quote_to_opportunity
Op: crm.crm.link_quote_to_opportunity
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.link_quote_to_opportunity
Crm: mark lost capability:crm.crm.mark_lost
Op: crm.crm.mark_lost
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.mark_lost
Crm: move stage capability:crm.crm.move_stage
Op: crm.crm.move_stage
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.move_stage
Crm: send email capability:crm.crm.send_email
Op: crm.crm.send_email
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.send_email
Crm: set lead status capability:crm.crm.set_lead_status
Op: crm.crm.set_lead_status
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.set_lead_status
Crm: update lead capability:crm.crm.update_lead
Op: crm.crm.update_lead
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.update_lead
Crm: update opportunity capability:crm.crm.update_opportunity
Op: crm.crm.update_opportunity
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.update_opportunity
Crm: update report capability:crm.crm.update_report
Op: crm.crm.update_report
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.update_report
Crm: update stage capability:crm.crm.update_stage
Op: crm.crm.update_stage
Objekt: crm
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.update_stage
Lead konvertieren capability:crm.lead.convert
Op: crm.lead.convert
Intent: convert_lead
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm_lead.converted
Lead wandeln capability:crm.lead.convert_account
Op: crm.lead.convert_account
Objekt: crm_lead
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.lead.convert_account
CRM-Lead / Anfrage anlegen capability:crm.lead.create
Op: crm.lead.create
Objekt: crm_lead
Quelle: code:capability_registry
reviewed
🔒 Freigabe nötig Risiko: business_record
  • cascade:business.crm.lead
Lead bewerten capability:crm.lead.score
Op: crm.lead.score
Objekt: crm_lead
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.lead.score
Forecast capability:crm.opportunity.forecast
Op: crm.opportunity.forecast
Objekt: opportunity
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.opportunity.forecast
Opportunity-Stufe setzen capability:crm.opportunity.move_stage
Op: crm.opportunity.move_stage
Intent: update_opportunity
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm_opportunity.stage_moved
Sequenz capability:crm.sequence.enroll
Op: crm.sequence.enroll
Objekt: crm_lead
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • crm.sequence.enroll
Korrespondenz → CRM cascade:business.correspondence.crm
Korrespondenz → CRM
Quelle: code:cascade_process
review_gated
✓ Auto
Keine Seiteneffekte deklariert
CRM-Lead / Anfrage anlegen cascade_target:business.crm.lead
Op: crm.lead.create
CRM-Lead / Anfrage anlegen
Quelle: code:cascade_target
review_gated
🔒 Freigabe nötig
Keine Seiteneffekte deklariert
crm_opportunity: edit form form_surface_anchor:crm_opportunity.edit
Objekt: crm_opportunity
Quelle: code:erp_form_surface
operator_surface
✓ Auto
Keine Seiteneffekte deklariert
Benutzerbefehl: inquiry agent plan:command_inquiry_agent
Benutzerbefehl: inquiry agent
Quelle: code:reviewed_execution_plan
durable_plan
✓ Auto
Keine Seiteneffekte deklariert
Benutzerbefehl: lead qualification agent plan:command_lead_qualification_agent
Benutzerbefehl: lead qualification agent
Quelle: code:reviewed_execution_plan
durable_plan
✓ Auto
Keine Seiteneffekte deklariert
Lead status:crm_lead
Objekt: crm_lead
Quelle: code:status_machine
observable_only
✓ Auto
Keine Seiteneffekte deklariert
Opportunity status:crm_opportunity
Objekt: crm_opportunity
Quelle: code:status_machine
observable_only
✓ Auto
Keine Seiteneffekte deklariert

🧠 Fachprozess-Erzählung & Dual Knowledge Architektur

Synthese aus der ideologischen Blaupause (Meta-Fachlogik / Soll), der faktischen System-Implementierung (System-Fachlogik / Ist) und No-Code Customizing für KI-Consultants.

Dual Knowledge Layer
📖

Der durchgängige Businessprozess im Detail (End-to-End Fließtext-Erzählung)

Der durchgängige CRM- und Kundenakquise-Prozess in der betrieblichen Praxis

Vom ersten anonymen Webseiten-Besucher oder Messekontakt bis zum langjährigen Großkunden: Centurio ERP organisiert Kundenbeziehungen transparent, datenschutzkonform und abschlussorientiert.

1. Lead-Erfassung & Multi-Channel-Ingestion

Interessenten (Leads) gelangen über verschiedenste Berührungspunkte (Touchpoints) in das System:

  • E-Mail-Posteingang & KI-Parsing (inbox): Eingehende Kundenanfragen an Vertriebspostfächer (z.B. [email protected]) werden durch die semantische KI-Engine analysiert. Bei Erstkontakten erzeugt das System automatisch einen Lead (cap:crm.lead.create_from_inbox) und extrahiert Name, Firma, Telefonnummer und Anliegen.
  • Webformulare & Landingpages: Über sichere HMAC-Webhooks (automations) fließen Kontaktanfragen von Firmen-Websites direkt in den Lead-Pool.
  • Messen & Veranstaltungen: Vertriebsmitarbeiter fotografieren Visitenkarten per Smartphone-App; die OCR-Erkennung legt die Kontaktdaten sekundenschnell an.
  • DSGVO-Prüfung: Das System verifiziert sofort den Werbeeinwilligungsstatus (Opt-In nach Art. 7 DSGVO) und protokolliert Zeitstempel und Herkunftsquelle revisionssicher.

2. Lead-Qualifizierung & BANT-Scoring

Nicht jeder Lead ist vertriebsreif. Centurio ERP nutzt das bewährte BANT-Framework:

  • B – Budget: Verfügt der Interessent über ein adäquates Investitionsbudget?
  • A – Authority (Entscheidungskompetenz): Sprechen wir mit dem Entscheider (C-Level, Abteilungsleiter) oder einem reinen Informationssuchenden?
  • N – Need (Bedarf): Passt die konkrete Anforderung zum Produktportfolio des Unternehmens?
  • T – Timeline (Zeithorizont): Ist die Beschaffung kurzfristig (z.B. nächstes Quartal) oder erst in unbestimmter Zukunft geplant?
  • Lead-Score: Anhand der Antworten und Interaktionen (z.B. E-Mail geöffnet, Datenblatt heruntergeladen) errechnet das System einen dynamischen Lead-Score (0–100 Punkte). Ab 70 Punkten gilt der Lead als vertriebsreif (Sales Qualified Lead - SQL).

3. Lead-Konvertierung & Opportunity-Anlage

Erreicht der Lead die Reife, erfolgt die Konvertierung über die Capability cap:crm.lead.convert:

  • Der Lead wird archiviert.
  • Ein neuer Unternehmenseintrag im Kundenstamm (customers) sowie ein verknüpfter Ansprechpartner werden angelegt (oder mit bestehenden Stammdaten gematcht, um Dubletten zu vermeiden).
  • Eine konkrete Verkaufschance (Opportunity) wird eröffnet.

4. Die Opportunity-Pipeline & Umsatz-Forecast

Die Opportunity durchläuft den visuellen Kanban-Funnel des Vertriebs:

  1. Qualifizierung & Erstgespräch (Wahrscheinlichkeit: 10%)
  2. Bedarfsanalyse & Lösungsdesign (Wahrscheinlichkeit: 30%)
  3. Angebot vorgelegt (Wahrscheinlichkeit: 60%)
  4. Verhandlung & Vertragsgestaltung (Wahrscheinlichkeit: 80%)
  5. Gewonnen (closed_won) oder Verloren (closed_lost)
  • Gewichteter Forecast: Das Management sieht in Echtzeit den gewichteten Pipeline-Umsatz: $$\text{Forecast-Wert} = \sum (\text{Erwartetes Volumen} \times \text{Abschlusswahrscheinlichkeit})$$
  • Droht ein Projekt zu stocken (z.B. keine Aktivität seit 14 Tagen), hebt das System die Opportunity rot hervor und generiert eine Wiedervorlageaufgabe.

5. 360-Grad-Kundenakte & Aktivitäten-Timeline

Alle Kundeninteraktionen laufen in einer zentralen Übersicht zusammen:

  • Gesendete und empfangene E-Mails (communications).
  • Telefonnotizen und Meeting-Protokolle mit Aktionspunkten.
  • Verknüpfte Angebote, Aufträge, offene Rechnungen und Support-Tickets.
  • Dokumentenarchiv mit Verträgen und Geheimhaltungsvereinbarungen (NDA).

6. Übergabe an Angebot & Kundenauftrag

Sobald der Kunde ein konkretes Angebot fordert:

  • Aus der Opportunity heraus ruft der Vertriebler cap:quotes.quote.create_from_opportunity auf.
  • Alle relevanten Daten (Ansprechpartner, Konditionen, Leistungsbeschreibung) werden übernommen; der Vertriebswechsel von der Akquise zur kaufmännischen Vorkalkulation erfolgt ohne Medienbruch.
  • Gewinnt das Unternehmen den Auftrag, schließt der Gateway gw:opportunity_closure@v1 die Opportunity mit Status closed_won ab und stößt die Auftragsabwicklung an.
🏛️

Meta-Fachlogik: Ideologische Blaupause, Soll-Weltbild & Normen

Meta-Fachlogik: Die ideologische Blaupause & das normative Weltbild

Die Meta-Fachlogik des Kundenmanagements stützt sich auf Methodiken des modernen Vertriebsmanagements (Solution Selling, Inbound Marketing), die DSGVO und datengetriebenes Sales-Controlling.

1. Methodische Vertriebsprinzipien

  • BANT & Solution Selling: Professioneller B2B-Vertrieb verkauft keine Produkteigenschaften, sondern löst geschäftliche Schmerzpunkte (Pain Points) des Kunden. Die Erfassung von Kundenproblemen und erwartetem Nutzen (ROI) steht im Zentrum.
  • Pipeline-Disziplin: Eine Vertriebspipeline muss aktiv bewirtschaftet werden (Pipeline Velocity). Leads und Opportunities dürfen nicht als Karteileichen verharren. Sie müssen kontinuierlich qualifiziert, vorangetrieben oder konsequent auf verloren geschlossen werden.

2. Datenschutzrechtliche Vorgaben (DSGVO & UWG)

  • Rechtsgrundlage der Verarbeitung (Art. 6 DSGVO):
    • Vorvertragliche Maßnahmen auf Anfrage der betroffenen Person (Art. 6 Abs. 1 lit. b DSGVO) oder berechtigtes Interesse (lit. f).
    • E-Mail-Marketing und Werbeansprache erfordern im B2B die ausdrückliche Einwilligung (§ 7 UWG) bzw. eine bestehende Kundenbeziehung.
  • Recht auf Vergessenwerden (Art. 17 DSGVO):
    • Das Soll-Modell verlangt die Fähigkeit zur vollständigen Anonymisierung oder Löschung von Interessentendaten auf Verlangen, sofern keine steuerlichen Aufbewahrungspflichten (HGB/AO) entgegenstehen.

3. Invarianten des Soll-Modells

  1. Kein Werbekontakt ohne dokumentierte Werbeeinwilligung oder berechtigtes Interesse.
  2. Keine Konvertierung eines unqualifizierten Leads ohne Mindest-Kontaktdaten (Name, Firma, Anliegen).
  3. Jede verlorene Opportunity erfordert zwingend einen dokumentierten Verlustgrund (Lost Reason).
  4. Stammdaten müssen dublettenfrei gehalten werden (Matching von Firmennamen und Domänen).

Normbezug für crm

Prüfkatalog Standards-Registry v2026.10.1. Dieser Abschnitt ordnet Prüfreferenzen zu und stellt nicht fest, dass das Modul eine Norm einhält; keine Kataloganforderung ist als PASS bewertet.

Geführte Prüfreferenzen:

  • apqc-pcf-8.0, APQC Process Classification Framework (PCF) – Cross-Industry, Ausgabe PCF Cross-Industry v8.0 (2026-02-27). Art: reference_process. Nur öffentliche Zusammenfassung. Keine Volltextprüfung. Keine modulspezifische Kataloganforderung. Die Zuordnung bleibt eine Prüfreferenz.
  • eu-gdpr-2016-679, Regulation (EU) 2016/679 (General Data Protection Regulation, GDPR/DSGVO), Ausgabe Regulation (EU) 2016/679, anwendbar ab 2018-05-25. Art: regulatory. Öffentlicher Text. Die Nennung ist keine Klauselprüfung. Keine modulspezifische Kataloganforderung. Die Zuordnung bleibt eine Prüfreferenz.

Plattformweite Katalogwerke mit Geltungsbereich all (unter anderem WCAG 2.2, EN 301 549 V4.1.1, ISO 9241-110:2020, ISO 9241-210:2019, ISO/IEC 25010:2023, ISO 9001:2026, ISO/IEC 27001:2022, APQC PCF 8.0, DSGVO, EU AI Act) umfassen dieses Modul mit. Wo der Volltext fehlt, bleibt der Zugang ohne Quelle, lizenzpflichtig oder nur als öffentliche Zusammenfassung gekennzeichnet. Auch diese Nennung weist keine eingehaltene Vorgabe nach.

⚙️

Systemische Fachlogik: Faktische Umsetzung in Centurio ERP & Capabilities

Systemische Fachlogik: Die faktische Umsetzung in Centurio ERP

Die System-Fachlogik dokumentiert die Realisierung in den Modulen crm und customers.

1. Datenmodelle & Semantische Schicht (ORM)

  • CrmLead: Interessentenkopf (Felder: id, tenant_id, first_name, last_name, company_name, email, phone, status [new, contacted, qualified, converted, junk], lead_source, score, bant_data).
  • Customer: Der juristische Kundenstamm (Felder: id, customer_number, company_name, tax_id, vat_id, credit_limit, payment_term_id, is_blocked).
  • CustomerContact: Ansprechpartner des Kunden (Felder: customer_id, name, department, position, email, phone, is_primary).
  • CrmOpportunity: Verkaufschance (Felder: id, customer_id, title, stage, probability_percent, expected_revenue, close_date, lead_id, lost_reason).
  • CrmActivity: Interaktionshistorie (Telefonate, Notizen, E-Mails, Besuche).

2. Das Capability-Register

  • cap:crm.lead.create: Neuanlage eines Leads.
  • cap:crm.lead.create_from_inbox: Automatische Extraktion aus eingehender E-Mail.
  • cap:crm.lead.qualify: Aktualisierung des BANT-Scores und Qualifikationsstatus.
  • cap:crm.lead.convert: Überführung in Kunde, Ansprechpartner und Opportunity.
  • cap:crm.opportunity.create: Anlage einer Verkaufschance.
  • cap:crm.opportunity.update_stage: Verschieben der Opportunity in die nächste Pipeline-Phase.
  • cap:crm.opportunity.close_won: Erfolgreicher Abschluss mit Koppelung an Angebot/Auftrag.
  • cap:crm.opportunity.close_lost: Schließen als verloren mit Verlustgrund.
  • cap:customers.customer.gdpr_anonymize: DSGVO-konforme Löschung/Anonymisierung.

3. Der Gateway gw:opportunity_closure@v1

Sichert den Vertriebserfolg ab:

  1. Validierung: Prüft, ob bei closed_won ein zugehöriges Angebot oder ein Auftrag existiert; prüft bei closed_lost, ob ein Verlustgrund deklariert ist.
  2. Statuswechsel: Aktualisiert den Opportunity-Status und berechnet den finalen Pipeline-Erfolg.
  3. Outbox-Signal: Feuert OPPORTUNITY_CLOSED_WON bzw. OPPORTUNITY_CLOSED_LOST.

4. Statusmodelle

  • Lead-Status: new ➔ contacted ➔ qualified ➔ converted oder junk.
  • Opportunity-Phasen: qualification ➔ needs_analysis ➔ proposal_presented ➔ negotiation ➔ closed_won oder closed_lost.
🤖

KI-Consultant Leitfaden: Customizing- & No-Code-Konzept (Soll-Ist-Synthese)

AI Solution Architect Blueprint

KI-Consultant Blueprint: Customizing & No-Code Architektur

Anleitung für Solution Architects zur Einrichtung von CRM- und Pipeline-Prozessen.

1. Kundenanforderungsanalyse

  • Welche Vertriebsphasen bilden die tatsächliche Kundenreise (Customer Journey) ab?
  • Welche Kriterien führen zum Lead-Scoring (z.B. Branche, Unternehmensgröße, Dringlichkeit)?
  • Wie soll die automatische E-Mail-zu-Lead Kaskadierung reagieren (automatische Neuanlage oder erst Vorschlag zur Bestätigung)?

2. No-Code Zusatzfelder (Custom Fields)

Im No-Code Studio (/semantic/customizing):

  • Auf CrmLead:
    • industry_sector (Auswahlliste: Maschinenbau, Automotive, Handwerk, IT, Pharma).
    • annual_turnover_range (Auswahlliste: < 1 Mio €, 1-10 Mio €, > 10 Mio €).
  • Auf CrmOpportunity:
    • decision_maker_identified (Checkbox): Pflicht vor Phase Verhandlung.
    • primary_competitor (Text): Wichtigster Wettbewerber in diesem Pitch.

3. No-Code Workflow Canvas DAGs

Blueprint A: KI-E-Mail-zu-Lead Kaskadierung (Inbox Lead DAG)
  • Trigger-Node: Event INBOX_MESSAGE_CLASSIFIED (Kategorie: Neukundenanfrage).
  • Condition-Node: message.sender_email NOT IN customers.contacts.email.
  • Action-Node 1: Rufe cap:crm.lead.create_from_inbox auf.
  • Action-Node 2: Berechne BANT-Initialwert anhand des Nachrichtentexts.
  • Notification-Node: Zuweisung einer Lead-Prüfaufgabe an den diensthabenden Vertriebler.
Blueprint B: Automatisches Reaktivierungs-Follow-Up (Dormant Deal DAG)
  • Trigger-Node: Scheduled Cron (0 9 * * 1) – Wöchentlich.
  • Condition-Node: opportunity.stage NOT IN ['closed_won', 'closed_lost'] AND days_since_last_activity > 21.
  • Action-Node: Erzeuge To-Do-Aufgabe: Kunde reaktivieren oder Opportunity schließen mit Push an Opportunity-Owner.

📚 Operative Prozessbegriffe & Transaktionsschnittstellen

Zentrale Fachbegriffe im Prozesszusammenhang (Operatives Modell)
Lead (Interessent)
Noch unqualifizierter Erstkontakt mit potenziellem Kaufinteresse.
BANT-Kriterien
Qualifikationsmodell nach Budget, Authority (Entscheider), Need (Bedarf) und Timeline (Frist).
Opportunity (Verkaufschance)
Qualifiziertes Vertriebsprojekt mit bezifferbarem Umsatzpotenzial und Abschlussphase.
Pipeline-Forecasting
Statistische Hochrechnung künftiger Umsätze anhand von Abschlusswahrscheinlichkeiten.
Lead-Konvertierung
Rechtssicherer Übergang vom Interessenten zum bestätigten Kundenstamm.
DSGVO-Opt-In
Rechtskonforme Einwilligung der betroffenen Person in die Speicherung und werbliche Ansprache.
Lost-Reason
Systematische Erfassung des Grundes für das Scheitern einer Verkaufschance.
📥 Eingänge & Trigger (Inputs)
  • Eingehende E-Mail-Anfragen an Vertriebspostfächer
  • Website-Kontaktformulare über Webhooks
  • Visitenkartenscans von Messen und Außendienstterminen
  • Telefonische Erstanfragen im Vertriebsinnendienst
📤 Ausgänge & Arbeitsergebnisse (Outputs)
  • Qualifizierte Firmen- und Ansprechpartnerdaten im Kundenstamm
  • Aktive Verkaufschancen in der grafischen Pipeline-Übersicht
  • Gewichtete Vertriebs- und Umsatz-Forecasts für die Geschäftsführung
  • Rechtssichere DSGVO-Verarbeitungsprotokolle und Einwilligungsnachweise
⚡ Kaskaden & Folgeprozesse (Cascades)
  • lead_converted -> customer_created: Sofortige Anlage im Stammdatenverzeichnis
  • opportunity_won -> trigger_quote_or_order: Übernahme in die Angebots- oder Auftragsphase
  • lead_scored_high -> notify_sales_rep: Sofortige Alarmierung bei heißen Leads
  • opportunity_lost -> schedule_nurturing_campaign: Einsteuern in spätere Reaktivierung
🛡️ Nebenprozesse & Resilienz
  • Dublettenprüfung und Zusammenführung doppelt erfasster Kontakte
  • DSGVO-Auskunfts- und Löschersuchen (Recht auf Vergessenwerden)
  • Zuweisung von Vertriebsgebieten nach Postleitzahlen und Branchen
  • Rückstufung inaktiver Verkaufschancen in Marketing-Nurturing-Kampagnen
💡 No-Code Checkliste & Praxistipps
  • Vertriebsphasen und prozentuale Abschlusswahrscheinlichkeiten anpassen
  • BANT-Schwellenwerte für automatische Lead-Qualifizierung definieren
  • Pflichtfelder (z.B. Telefon, Branche) für die Lead-Konvertierung festlegen
  • No-Code Zusatzfelder für Branchen und Wettbewerber auf Opportunity anlegen

🗄️ Data Models & Fields

CrmActivities crm_activities RLS Aktiv
19 Fields / Columns

Tabelle crm_activities

Feldname Data Type Required Schlüssel Functional Meaning
type VARCHAR(16) Ja * - Feld type
subject VARCHAR(255) Ja * - Feld subject
body TEXT Nein - Feld body
due_at DATETIME Nein - Feld due_at
done_at DATETIME Nein - Feld done_at
outcome TEXT Nein - Feld outcome
owner_id UUID Nein - Feld owner_id
lead_id UUID Nein FK ➔ crm_leads.id Feld lead_id
opportunity_id UUID Nein FK ➔ crm_opportunities.id Feld opportunity_id
customer_id UUID Nein FK ➔ customers.id Feld customer_id
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
CrmLeads crm_leads RLS Aktiv
27 Fields / Columns

Tabelle crm_leads

Feldname Data Type Required Schlüssel Functional Meaning
name VARCHAR(255) Ja * - Feld name
company_name VARCHAR(255) Nein - Feld company_name
email VARCHAR(320) Nein - Feld email
phone VARCHAR(64) Nein - Feld phone
interest TEXT Nein - Feld interest
source VARCHAR(32) Ja * - Feld source
status VARCHAR(32) Ja * - Feld status
estimated_value NUMERIC(14, 2) Nein - Feld estimated_value
currency VARCHAR(3) Ja * - Feld currency
owner_id UUID Nein - Feld owner_id
disqualify_reason TEXT Nein - Feld disqualify_reason
consent_given BOOLEAN Ja * - Feld consent_given
consent_at DATETIME Nein - Feld consent_at
last_activity_at DATETIME Nein - Feld last_activity_at
customer_id UUID Nein FK ➔ customers.id Feld customer_id
opportunity_id UUID Nein - Feld opportunity_id
converted_at DATETIME Nein - Feld converted_at
anonymized_at DATETIME Nein - Feld anonymized_at
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
CrmOpportunities crm_opportunities RLS Aktiv
27 Fields / Columns

Tabelle crm_opportunities

Feldname Data Type Required Schlüssel Functional Meaning
title VARCHAR(255) Ja * - Feld title
description TEXT Nein - Feld description
customer_id UUID Nein FK ➔ customers.id Feld customer_id
lead_id UUID Nein - Feld lead_id
stage_id UUID Ja * FK ➔ crm_pipeline_stages.id Feld stage_id
status VARCHAR(16) Ja * - Feld status
expected_value NUMERIC(14, 2) Ja * - Feld expected_value
currency VARCHAR(3) Ja * - Feld currency
probability INTEGER Nein - Feld probability
expected_close_date DATETIME Nein - Feld expected_close_date
owner_id UUID Nein - Feld owner_id
source VARCHAR(32) Ja * - Feld source
lost_reason TEXT Nein - Feld lost_reason
closed_at DATETIME Nein - Feld closed_at
stage_entered_at DATETIME Ja * - Feld stage_entered_at
last_activity_at DATETIME Nein - Feld last_activity_at
quote_id UUID Nein - Feld quote_id
project_id UUID Nein - Feld project_id
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
CrmPipelineStages crm_pipeline_stages RLS Aktiv
15 Fields / Columns

Tabelle crm_pipeline_stages

Feldname Data Type Required Schlüssel Functional Meaning
name VARCHAR(128) Ja * - Feld name
position INTEGER Ja * - Feld position
probability INTEGER Ja * - Feld probability
is_won BOOLEAN Ja * - Feld is_won
is_lost BOOLEAN Ja * - Feld is_lost
active BOOLEAN Ja * - Feld active
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
CrmReports crm_reports RLS Aktiv
31 Fields / Columns

Tabelle crm_reports

Feldname Data Type Required Schlüssel Functional Meaning
report_number VARCHAR(32) Ja * - Feld report_number
title VARCHAR(255) Ja * - Feld title
type VARCHAR(32) Ja * - Feld type
status VARCHAR(32) Ja * - Feld status
occurred_at DATETIME Ja * - Feld occurred_at
duration_minutes INTEGER Ja * - Feld duration_minutes
lead_id UUID Nein FK ➔ crm_leads.id Feld lead_id
customer_id UUID Nein FK ➔ customers.id Feld customer_id
opportunity_id UUID Nein FK ➔ crm_opportunities.id Feld opportunity_id
author_id UUID Nein - Feld author_id
author_name VARCHAR(255) Nein - Feld author_name
location VARCHAR(255) Nein - Feld location
attendees TEXT Nein - Feld attendees
internal_attendees VARCHAR(255) Nein - Feld internal_attendees
sentiment VARCHAR(32) Ja * - Feld sentiment
discussed_topics TEXT Nein - Feld discussed_topics
summary TEXT Ja * - Feld summary
agreed_next_steps TEXT Nein - Feld agreed_next_steps
competitive_situation VARCHAR(255) Nein - Feld competitive_situation
budget_or_timeline_note VARCHAR(255) Nein - Feld budget_or_timeline_note
next_followup_at DATETIME Nein - Feld next_followup_at
followup_task_id UUID Nein FK ➔ tasks.id Feld followup_task_id
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata

🔌 Entry Points (UI & APIs)

Art Method Endpoint / Path Titel & Zweck Required Role
⚡ REST API DELETE /api/v1/crm/reports/{report_id}
delete_report_route
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API GET /api/v1/crm/activities
list_activities
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /api/v1/crm/customers/{customer_id}/overview
customer_overview
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /api/v1/crm/due
due
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /api/v1/crm/leads
list_leads
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /api/v1/crm/next-actions
next_actions
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /api/v1/crm/opportunities
list_opportunities
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /api/v1/crm/opportunities/{opp_id}/flow
order_flow
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /api/v1/crm/reports
list_reports
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /api/v1/crm/reports/{report_id}
get_report_route
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /api/v1/crm/stages
list_stages
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /api/v1/crm/summary
summary
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /crm
crm_dashboard_page
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /crm/customers/{customer_id}
crm_customer_page
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /crm/leads
crm_leads_page
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /crm/leads/new
crm_leads_new_page
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /crm/pipeline
crm_pipeline_page
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /crm/pipeline/new
crm_pipeline_new_page
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /crm/reports
crm_reports_page
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /crm/reports/new
crm_report_create_page
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /pub/anfrage/{tenant_id}
crm_inquiry_form
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API GET /pub/lead/{tenant_id}
lead_form
Semantic binding: inventory_only; mutation=False
crm
⚡ REST API PATCH /api/v1/crm/leads/{lead_id}
patch_lead
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API PATCH /api/v1/crm/opportunities/{opp_id}
patch_opportunity
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API PATCH /api/v1/crm/reports/{report_id}
patch_report_route
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API PATCH /api/v1/crm/stages/{stage_id}
patch_stage
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/activities
create_activity
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/activities/{activity_id}/complete
complete_activity
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/leads
create_lead
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/leads/{lead_id}/convert
convert_lead
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/leads/{lead_id}/convert-and-quote
convert_lead_and_quote
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/leads/{lead_id}/status
lead_status
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/mail
send_mail_route
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/opportunities
create_opportunity
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/opportunities/{opp_id}/create-quote
create_quote
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/opportunities/{opp_id}/draft-followup
draft_followup
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/opportunities/{opp_id}/lost
mark_lost
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/opportunities/{opp_id}/reopen
reopen
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/opportunities/{opp_id}/stage
move_stage
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/reports
create_report_route
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /api/v1/crm/stages
create_stage
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /pub/anfrage/{tenant_id}
crm_inquiry_submit
Semantic binding: operator_surface; mutation=True
crm
⚡ REST API POST /pub/lead/{tenant_id}
submit_lead
Semantic binding: operator_surface; mutation=True
crm

🛡️ Regulatory & Compliance

Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:

  • DSGVO Art. 6 (Einwilligung zur Kontaktaufnahme)
  • UWG Werbeeinwilligung
Related Modules:
➔ customers ➔ finance ➔ communications