136 lines
7.0 KiB
Markdown
136 lines
7.0 KiB
Markdown
# Technisches Zielbild: GTM-Engine & Google Cloud Integration
|
|
|
|
Dieses Dokument beschreibt die Architektur und den Datenfluss der **GTM-Engine (Go-to-Market Engine)**.
|
|
|
|
## Executive Summary: Was wir tun
|
|
Wir automatisieren die **Qualifizierung von B2B-Accounts** (Firmen), um den Vertrieb gezielter und effizienter zu steuern ("Whale Hunting").
|
|
|
|
Anstatt dass ein Mitarbeiter manuell 20 Minuten lang Webseiten liest, um herauszufinden, ob eine Firma relevant ist, übernimmt dies das System automatisiert:
|
|
1. **Input:** Firmenname & Webseite (aus CRM oder Lead-Liste).
|
|
2. **Analyse:** Wir aggregieren öffentlich verfügbare Daten (Website-Text, Impressum, Wikipedia).
|
|
3. **KI-Verarbeitung:** Ein Sprachmodell (Gemini) agiert als "Lese-Assistent". Wir stellen ihm gezielte Fragen an den Kontext (z.B. *"Hat diese Firma mehr als 500 Mitarbeiter?", "Nutzen sie Roboter?", "Sind sie im Bereich Logistik tätig?"*).
|
|
4. **Output:** Strukturierte Daten (Branche, Potential-Score, Summary) fließen zurück ins CRM zur Vertriebssteuerung.
|
|
|
|
**Wichtig:** Es findet **keine** automatisierte Entscheidung über natürliche Personen statt. Wir bewerten Firmen-Potentiale.
|
|
|
|
## Kern-Prinzipien
|
|
1. **Trennung von Identität & Daten:** Nutzung von Unternehmens-Identitäten (Managed Google ID) statt privater Konten.
|
|
2. **Datensparsamkeit:** KI-Verarbeitung erfolgt primär auf anonymen Firmendaten (B2B), nicht auf Personendaten.
|
|
3. **Lokale Hoheit:** Die Business-Logik (Python/Docker) läuft kontrolliert lokal oder im Intranet, nicht "in der Cloud".
|
|
|
|
## Architektur-Übersicht
|
|
|
|
```mermaid
|
|
graph TD
|
|
%% Subgraph: Corporate Environment (Wackler/RoboPlanet)
|
|
subgraph Corporate_IT ["🏢 Wackler / RoboPlanet Umgebung"]
|
|
|
|
subgraph User_Layer ["🧑💻 User & Identity"]
|
|
User[("Christian (User)")]
|
|
CorpID["Corporate Google ID<br/>(@roboplanet.de / @wackler-group.de)"]
|
|
User --> CorpID
|
|
end
|
|
|
|
subgraph Local_Execution ["⚙️ Execution Layer (Local/Server)"]
|
|
Docker["🐳 Docker Container<br/>(GTM-Engine / Python)"]
|
|
|
|
subgraph Data_Handling ["🛡️ Daten-Verarbeitung"]
|
|
RawData[("Rohdaten<br/>(Websites, Listen)")]
|
|
Anonymizer["⚙️ Pre-Processing<br/>(Filterung PII / Personendaten)"]
|
|
end
|
|
|
|
ResultStorage[("Ergebnisse<br/>(Notion / CRM / Excel)")]
|
|
end
|
|
end
|
|
|
|
%% Subgraph: Google Cloud Platform (Managed)
|
|
subgraph Google_Cloud ["☁️ Google Cloud Platform (Enterprise Tenant)"]
|
|
|
|
subgraph IAM_Security ["🔐 Security & Billing"]
|
|
GCP_Project["GCP Projekt<br/>(z.B. 'gtm-engine-prod')"]
|
|
ServiceAccount["🤖 Service Account<br/>(Technischer User für API)"]
|
|
Billing["💳 Corporate Billing<br/>(Zentrale Abrechnung)"]
|
|
end
|
|
|
|
subgraph AI_Services ["🧠 AI Services (Vertex AI / Gemini)"]
|
|
GeminiAPI["⚡ Gemini API<br/>(Enterprise Mode: Zero Logging)"]
|
|
end
|
|
end
|
|
|
|
%% Data Flow Connections
|
|
CorpID -.->|"Verwaltet"| GCP_Project
|
|
Docker -->|"Nutzt API Key"| ServiceAccount
|
|
ServiceAccount -->|"Authentifiziert"| GeminiAPI
|
|
|
|
RawData --> Anonymizer
|
|
Anonymizer -->|"1. Anonymisierter Prompt<br/>(Nur Firmendaten)"| Docker
|
|
Docker -->|"2. API Request (HTTPS/TLS)"| GeminiAPI
|
|
GeminiAPI -->|"3. JSON Response<br/>(Strukturierte Daten)"| Docker
|
|
Docker -->|"4. Speicherung"| ResultStorage
|
|
|
|
%% Styling
|
|
style Corporate_IT fill:#f9f9f9,stroke:#333,stroke-width:2px
|
|
style Google_Cloud fill:#e8f0fe,stroke:#4285f4,stroke-width:2px
|
|
style Anonymizer fill:#fff3e0,stroke:#f57c00,stroke-dasharray: 5 5
|
|
style GeminiAPI fill:#e8f0fe,stroke:#4285f4,stroke-width:4px
|
|
```
|
|
|
|
## Erläuterung für die IT
|
|
|
|
1. **Identity (IAM):**
|
|
* Es wird kein "Schatten-Account" genutzt. Christian authentifiziert sich mit seiner bestehenden Corporate Identity (`@roboplanet`).
|
|
* Für die automatisierte Ausführung (Skripte) wird später ein **Service Account** beantragt, dessen Schlüssel (JSON Key) sicher im lokalen Container verwaltet wird (Secrets Management).
|
|
|
|
2. **Google Cloud Projekt:**
|
|
* Wir benötigen ein dediziertes GCP-Projekt (z.B. `rp-marketing-intel`), das im Rechnungskreis der Firma hängt.
|
|
* Vorteil: Volle Transparenz über Kosten und Nutzung im Admin-Dashboard der IT.
|
|
|
|
3. **Environment Strategie (Dev/Prod Trennung):**
|
|
* Um Entwicklungskosten von Betriebskosten sauber zu trennen und die Stabilität zu gewährleisten, werden **zwei separate GCP-Projekte** empfohlen:
|
|
* **`rp-marketing-intel-dev`**: Sandbox für Entwicklung (Gemini CLI, Tests). Hier können Budgets gedeckelt und Quotas flexibel genutzt werden, ohne den Betrieb zu gefährden ("Blast Radius" Minimierung).
|
|
* **`rp-marketing-intel-prod`**: Stabile Umgebung für den Company Explorer. Exklusive Quotas und striktes Monitoring für den operativen Betrieb.
|
|
|
|
4. **Datenschutz (DSGVO):**
|
|
* **Input:** Wir senden Webseiten-Texte und Firmennamen an die API. Wir senden *keine* Mitarbeiterlisten oder Kunden-Adressdaten zur Analyse.
|
|
* **Enterprise-Garantie:** Durch Nutzung der Enterprise-Verträge (via GCP) ist vertraglich geregelt, dass Google die Daten **nicht** zum Training eigener Modelle verwendet (anders als bei der kostenlosen ChatGPT/Gemini-Consumer-Version).
|
|
|
|
## Backend API (Company Explorer)
|
|
|
|
Das System verfügt bereits über eine standardisierte, dokumentierte API (FastAPI) zur Datenverarbeitung. Dies ermöglicht eine saubere Trennung von Frontend und Backend sowie eine granulare Zugriffskontrolle.
|
|
|
|
**Core Endpoints:**
|
|
|
|
| Methode | Pfad | Beschreibung |
|
|
| :--- | :--- | :--- |
|
|
| `GET` | `/api/health` | System Status Check |
|
|
| `GET` | `/api/companies` | Liste von Unternehmen (Filterbar, Sortierbar) |
|
|
| `GET` | `/api/companies/{id}` | Detailansicht eines Unternehmens |
|
|
| `POST` | `/api/companies` | Manuelle Anlage eines Unternehmens |
|
|
| `POST` | `/api/companies/bulk` | Massenimport (Batch-Processing) |
|
|
| `GET` | `/api/companies/export` | CSV Export der angereicherten Daten |
|
|
|
|
**Enrichment & KI-Analyse:**
|
|
|
|
| Methode | Pfad | Beschreibung |
|
|
| :--- | :--- | :--- |
|
|
| `POST` | `/api/enrich/discover` | Startet Discovery-Prozess (Website-Suche) |
|
|
| `POST` | `/api/enrich/analyze` | Startet KI-Analyse (Scraping + Klassifizierung) |
|
|
| `PUT` | `/api/companies/{id}/industry` | Manuelle Korrektur der KI-Branchenzuordnung |
|
|
| `POST` | `/api/companies/{id}/override/*` | Manuelle Overrides für kritische Datenquellen (Website, Wikipedia, Impressum) |
|
|
|
|
**Quality Assurance:**
|
|
|
|
| Methode | Pfad | Beschreibung |
|
|
| :--- | :--- | :--- |
|
|
| `POST` | `/api/companies/{id}/report-mistake` | Melden von Datenfehlern ("Human in the Loop") |
|
|
| `GET` | `/api/mistakes` | Übersicht gemeldeter Fehler zur Überprüfung |
|
|
| `PUT` | `/api/mistakes/{id}` | Status-Update für Fehlermeldungen (Approved/Rejected) |
|
|
|
|
**Stammdaten & Kataloge:**
|
|
|
|
| Methode | Pfad | Beschreibung |
|
|
| :--- | :--- | :--- |
|
|
| `GET` | `/api/robotics/categories` | Katalog der Robotik-Kategorien |
|
|
| `GET` | `/api/industries` | Katalog der Branchen |
|
|
| `GET` | `/api/job_roles` | Katalog der Job-Rollen |
|