# Plan: Umsetzung des "B2B Marketing Assistant" Backends Dieses Dokument beschreibt den Plan zur Umsetzung der Backend-Logik für die React-Anwendung unter `/b2b-marketing-assistant` als robusten, faktenbasierten Python-Service. Das primäre Ziel ist es, die Konsistenz und Zuverlässigkeit der Analyseergebnisse durch "Grounding" (Verankerung in realen Daten) signifikant zu erhöhen. ## 1. Zielsetzung & Architektur - **Ziel:** Transformation der reinen Frontend-Anwendung in einen Service mit einem Python-Backend, das vor jeder KI-Analyse eine solide Faktenbasis durch Web-Scraping schafft. Dadurch werden die Ergebnisse reproduzierbar und basieren auf den tatsächlichen Inhalten der Unternehmens-Website. - **Architektur:** Wir replizieren den bewährten Aufbau des "Market Intelligence" Tools: 1. **React-Frontend:** Die Benutzeroberfläche in `/b2b-marketing-assistant` bleibt bestehen, wird aber von direkten KI-Aufrufen befreit. 2. **Node.js API-Brücke (`server.cjs`):** Ein minimaler Express.js-Server, der Anfragen vom Frontend annimmt und an das Python-Backend weiterleitet. 3. **Python-Orchestrator (`b2b_marketing_orchestrator.py`):** Das neue Herzstück, das die gesamte Logik kapselt. ## 2. Kernprozess mit "Grounding" Der 6-stufige Prozess der App wird im Backend abgebildet, wobei die ersten Schritte fundamental geändert werden: 1. **Schritt 1 (Angebot) & 2 (Zielgruppen):** * **Intelligentes Scraping:** Das Python-Skript crawlt die gegebene URL und sucht aktiv nach Unterseiten wie "Produkte", "Lösungen", "Branchen" etc. * **Text-Extraktion:** Der relevante Inhalt dieser Seiten wird extrahiert und zu einem "Grounding-Dokument" zusammengefasst. * **KI als Extraktions-Engine:** Die KI wird angewiesen, **ausschließlich auf Basis dieses extrahierten Textes** das Angebot und die Zielgruppen zu identifizieren und zu strukturieren. Halluzinationen werden so unterbunden. 2. **Schritt 3-6 (Personas, Pains, Gains, Messages):** * Diese Schritte bauen auf den validierten, faktenbasierten Ergebnissen aus Schritt 1 & 2 auf. Die gesamte Logikkette wird dadurch stabiler und konsistenter. ## 3. Strategische Vision: Integration der Tools Dieses Projekt ist der erste Schritt zur Schaffung eines einheitlichen "Strategy & Audit"-Workflows. - **Phase 1 (Aktuelles Projekt):** Wir bauen den "B2B Marketing Assistant" als eigenständigen Service mit einem modularen Python-Backend. - **Phase 2 (Zukünftig):** Die wiederverwendbaren Python-Module (Scraping, API-Handler etc.) werden mit dem `market_intel_orchestrator.py` zu einem einzigen, leistungsfähigen Backend verschmolzen. Der Workflow wäre dann nahtlos: 1. **Strategie definieren:** Mit dem B2B Marketing Assistant eine Tiefenanalyse eines Referenzkunden durchführen. 2. **Markt auditieren:** Die erstellte Strategie direkt nutzen, um Lookalikes zu finden und zu bewerten. ## 4. Fortschritts-Log ### Phase 1: Initialisierung & Planung - [x] Anforderungsanalyse und Zieldefinition (Grounding, Konsistenz). - [x] Architektur nach Vorbild `market-intel-backend` festgelegt. - [x] Diesen Schlachtplan in `b2b_marketing_assistant_plan.md` erstellt. - [x] Aufbau der Grundstruktur: Erstellen der `b2b_marketing_orchestrator.py`, der `server.cjs` in `/b2b-marketing-assistant` und des `Dockerfile`. - [x] Erstellung von `package.json` und `requirements.txt`. - [x] Anpassung des Frontends (`App.tsx`) für die Kommunikation mit dem neuen Backend. - [x] Entfernen von Frontend-Dateien und -Inhalten, die nicht mehr benötigt werden (`parser.ts`, Prompts aus `constants.ts`). - [x] Implementierung der `start_generation`-Logik im Python-Backend (Scraping, Grounding, initialer Gemini-Aufruf für Schritt 1). - [x] Implementierung der `next_step`-Logik im Python-Backend (mehrstufige Gemini-Aufrufe für Schritte 2-6, Kontext-Management). - [x] Fehlerbehebung: Alle Python-Syntaxfehler (Encoding, Strings) behoben. - [x] Validierung: Das Tool lädt das Frontend und führt das Web-Scraping erfolgreich durch. - [x] **API-Fix:** Umstellung auf Gemini v1 API und Modell `gemini-2.5-flash` (1M Token Context). ### Phase 2: Validierung & Optimierung (Abgeschlossen) - [x] Docker-Container gebaut und gestartet. - [x] Zugriff auf die UI über Port 3004 erfolgreich. - [x] **Grounding Upgrade:** Umstellung von Plain-Text auf "Sanitized HTML" (H1-H6, Links erhalten) für präzise Produkterkennung. - [x] **Kontext-Erweiterung:** Entfernung des 30.000 Zeichen Limits für vollständige Website-Analyse. - [x] **Robustheit:** Implementierung von Retry-Logik (Exponential Backoff) und Timeout-Erhöhung (600s) für komplexe Analysen. - [x] **Frontend Fixes:** - [x] Robuster "Copy Table" Button (Fallback für Non-HTTPS). - [x] PDF-Export optimiert (Landscape, keine Scrollbalken). - [x] "Schritt 6 Wiederholen"-Funktion eingebaut. - [x] **Prozess-Optimierung:** Schritt 6 fokussiert nun automatisch auf die Top-Branche, um Token-Limits und Lesezeit zu optimieren. - [x] **Logging:** Detailliertes File-Logging (`Log_from_docker`) für Prompts und Antworten implementiert. ## 5. Deployment & Betrieb Da das Frontend (`App.tsx`) in das Docker-Image kompiliert wird, müssen Änderungen am Code durch einen **Rebuild** aktiviert werden. ### Standard-Start (für Nutzung) Wenn das Image bereits aktuell ist: ```bash docker run -d -p 3004:3002 --name b2b-assistant-instance \ -v "$(pwd)/b2b_marketing_orchestrator.py:/app/b2b_marketing_orchestrator.py" \ -v "$(pwd)/b2b-marketing-assistant/server.cjs:/app/server.cjs" \ -v "$(pwd)/gemini_api_key.txt:/app/gemini_api_key.txt" \ -v "$(pwd)/Log_from_docker:/app/Log_from_docker" \ b2b-marketing-assistant ``` Das Tool ist dann unter `http://localhost:3004` erreichbar. Logs finden Sie im Ordner `Log_from_docker`. ### Update & Rebuild (nach Code-Änderungen) Wenn Sie `App.tsx`, `index.html` oder `package.json` geändert haben, **müssen** Sie neu bauen: 1. **Alten Container entfernen:** ```bash docker stop b2b-assistant-instance docker rm b2b-assistant-instance ``` 2. **Image neu bauen:** ```bash docker build -t b2b-marketing-assistant -f b2b-marketing-assistant/Dockerfile . ``` 3. **Neu starten:** (siehe Befehl oben). --- ## 6. Roadmap: Nächste Erweiterungen ### Priorität 1: Persistenz & Dashboard (SQLite) Um Datenverlust zu vermeiden und Analysen wiederaufnehmbar zu machen. * **Backend:** Integration einer SQLite-Datenbank (`projects.db`). * **API:** Endpunkte für `save_project`, `load_project`, `list_projects`. * **Frontend:** Dashboard-Ansicht ("Letzte Analysen") und Speicher-Automatik nach jedem Schritt. * **Nutzen:** Ermöglicht Batch-Runs über Nacht und das spätere Verfeinern von Analysen ohne Neustart. ### Priorität 2: Asset Factory (Schritt 7) Umwandlung der strategischen Botschaften in operative Marketing-Texte. * **UI:** Neuer Bereich "Assets generieren" nach Abschluss von Schritt 6. * **Funktion:** Auswahl einer Persona und eines Formats (z.B. "LinkedIn Vernetzungsanfrage", "Cold Mail Sequenz"). * **Output:** Generierung von Copy-Paste-fertigen Texten basierend auf den Painpoints/Gains der Analyse. * **Export:** Als separater "Marketing Kit" Download oder Anhang im Markdown. ### Status: Produktionsbereit (Version 1.1) Das System liefert nun hochqualitative, faktenbasierte Analysen ("Grounding") mit HTML-Struktur-Erkennung. - [x] Grounding (HTML-Parsing) & Gemini 2.5 Flash - [x] Robustheit (Retries, Timeouts) - [x] Frontend-Optimierung (PDF, Copy-Paste, Batch-Analyse) - [x] Logging (File-basiert)