diff --git a/BUILDER_APPS_MIGRATION.md b/BUILDER_APPS_MIGRATION.md index 33ee72fe..da626d99 100644 --- a/BUILDER_APPS_MIGRATION.md +++ b/BUILDER_APPS_MIGRATION.md @@ -99,327 +99,5 @@ Dieser Abschnitt enthält die aus der Git-Historie wiederhergestellten "Lessons - ./my-app-folder/:/app/my-app-folder/ # Falsch ``` ---- -## 2. Prompts für die Accountbewertung durch Sprachmodelle - -Dieser Abschnitt dokumentiert die verschiedenen Prompts, die von den Sprachmodellen für die Accountbewertung und Marketinganalyse verwendet werden. Sie sind chronologisch nach ihrer Anwendung im Analyseprozess geordnet. - -### 2.1 Robotics Potential Analyse (aus `company-explorer/backend/services/classification.py`) - -Dieser Prompt wird verwendet, um das Potenzial eines Unternehmens für Roboterautomatisierung basierend auf dem Inhalt der Unternehmenswebsite zu bewerten. - -**Prompt: `analyze_robotics_potential`** - -```python -prompt = f""" -You are a Senior B2B Market Analyst for 'Roboplanet', a specialized robotics distributor. -Your task is to analyze the target company based on their website text and create a concise **Dossier**. - ---- TARGET COMPANY --- -Name: {company_name} -Website Content (Excerpt): -{website_text[:20000]} - ---- ALLOWED INDUSTRIES (STRICT) --- -You MUST assign the company to exactly ONE of these industries. If unsure, choose the closest match or "Sonstige". -{json.dumps(self.allowed_industries, ensure_ascii=False)} - ---- ANALYSIS PART 1: BUSINESS MODEL --- -1. Identify the core products/services. -2. Summarize in 2-3 German sentences: What do they do and for whom? (Target: "business_model") - ---- ANALYSIS PART 2: INFRASTRUCTURE & POTENTIAL (Chain of Thought) --- -1. **Infrastructure Scan:** Look for evidence of physical assets like *Factories, Large Warehouses, Production Lines, Campuses, Hospitals*. -2. **Provider vs. User Check:** - - Does the company USE this infrastructure (Potential Customer)? - - Or do they SELL products for it (Competitor/Partner)? - - *Example:* "Cleaning" -> Do they sell soap (Provider) or do they have a 50,000sqm factory (User)? -3. **Evidence Extraction:** Extract 1-2 key sentences from the text proving this infrastructure. (Target: "infrastructure_evidence") - ---- ANALYSIS PART 3: SCORING (0-100) --- -Based on the identified infrastructure, score the potential for these categories: - -{category_guidance} - ---- OUTPUT FORMAT (JSON ONLY) --- -{{ - "industry": "String (from list)", - "business_model": "2-3 sentences summary (German)", - "infrastructure_evidence": "1-2 key sentences proving physical assets (German)", - "potentials": {{ - "cleaning": {{ "score": 0-100, "reason": "Reasoning based on infrastructure." }},\ - "transport": {{ "score": 0-100, "reason": "Reasoning based on logistics volume." }},\ - "security": {{ "score": 0-100, "reason": "Reasoning based on perimeter/assets." }},\ - "service": {{ "score": 0-100, "reason": "Reasoning based on guest interaction." }}\ - }}\ -}} -""" -``` - -**Variablen und deren Inhalt:** - -1. **`company_name`**: - * **Beschreibung:** Der Name des zu analysierenden Zielunternehmens. - * **Inhalt:** Ein String mit dem Firmennamen. - -2. **`website_text[:20000]`**: - * **Beschreibung:** Ein Auszug des Website-Inhalts des Zielunternehmens. Er ist auf die ersten 20.000 Zeichen gekürzt, um die Eingabegröße zu steuern. - * **Inhalt:** Ein String, der einen Teil des Website-Textes des Unternehmens enthält. - -3. **`json.dumps(allowed_industries, ensure_ascii=False)`**: - * **Beschreibung:** Ein JSON-formatierter String der Liste der erlaubten Branchen. Das Modell wird streng angewiesen, genau eine aus dieser Liste auszuwählen. - * **Inhalt:** Ein String wie `["Branche A", "Branche B", "Sonstige"]`. Diese Liste wird dynamisch aus der Datenbanktabelle `industries` (konfiguriert via Settings > Industry Focus) geladen. - -4. **`category_guidance`**: - * **Beschreibung:** Diese Variable enthält einen dynamisch generierten String von Robotik-Kategoriedefinitionen, einschließlich ihrer Namen, Schlüssel, Beschreibungen und Scoring-Leitfäden. Diese Anleitung wird aus der Datenbank (`RoboticsCategory`-Tabelle) von der Methode `_get_category_prompts` abgerufen. - * **Inhalt:** Ein mehrzeiliger String, zum Beispiel: - ``` - * **Cleaning (cleaning):** - - Definition: Companies requiring automated cleaning solutions for large areas. - - Scoring Guide: High: Factories, Large Warehouses, Hospitals. Low: Small offices. - * **Transport (transport):** - - Definition: Companies with significant internal logistics or goods movement. - - Scoring Guide: High: E-Commerce fulfillment, Production lines, Distribution centers. Low: Pure software companies. - ... - ``` - -### 2.2 B2B Marketing Analyse (aus `b2b_marketing_orchestrator.py`) - -Diese Prompts werden schrittweise verwendet, um eine umfassende B2B-Marketinganalyse eines Unternehmens durchzuführen, beginnend mit einem System-Prompt und dann aufeinander aufbauenden Schritten. - -#### System Prompt (für alle Schritte verwendet) - -**Prompt: `SYSTEM_PROMPT_DE`** - -```python -SYSTEM_PROMPT_DE = r"""# Systemrolle - -Du bist ein **B2B-Marketing-Researcher & Copywriter**. Du analysierst eine Unternehmens-URL, identifizierst Angebot, Zielgruppen, konkrete Zielrollen, deren Painpoints sowie Gains und formulierst darauf basierend eine wertschaetzende, fachkundige Marketingbotschaft. **Antworte nur mit Ergebnissen, keine Gedankengaenge.** Belege jede Aussage mit einer konkreten Seiten-URL der analysierten Domain. Kennzeichne Unsicherheiten explizit. Deine Antwort muss immer in der Zielsprache {{language}} sein. - -# Arbeitsprinzipien - -1. **Quellenpriorisierung:** Produktseite -> Loesungsseite -> Branchen/Industrien/Referenzen -> Unternehmens-/Ueber-uns-Seite -> Blog/News (nur zur Verifikation). -2. **Faktenpolicy:** Nur aus der Domain der bereitgestellten URL ableiten; bei Vermutungen: als *Hypothese* kennzeichnen. -3. **B2B-Ton:** sachkundig, respektvoll, nicht marktschreierisch. -4. **Klarheit & Struktur:** Jede Stufe als Markdown-Tabelle + optionales Kurzresuemee dokumentieren. -5. **Mindestens 4 spezifische Rollen** je Zielgruppe (nicht generisch). -6. **Kompakt & nuetzlich:** Praezise Formulierungen; keine Floskeln.""" -``` - -**Variablen:** - -* **`language`**: - * **Beschreibung:** Die Zielsprache für die Ausgabe der Marketinganalyse. - * **Inhalt:** Ein String, typischerweise `'de'` für Deutsch oder `'en'` für Englisch. - -#### Schritt-für-Schritt Prompts - -Diese Prompts bauen aufeinander auf, wobei `{{previous_steps_data}}` die Ergebnisse der vorherigen Schritte enthält. - -**1. Prompt: `Schritt 1 - Angebot verstehen (WAS)`** - -```python -r"""# Aufgabe -Fuehre **Schritt 1 - Angebot verstehen (WAS)** fuer das folgende Unternehmen durch. - -# Eingaben -* **Unternehmens-URL:** `{{company_url}}` -* **Zielsprache der Ausgabe:** `{{language}}` -* **Region(en) / Maerkte (optional):** `{{regions}}` -* **Produkt-/Loesungsfokus (optional):** `{{focus}}` - -# Anweisungen fuer Schritt 1 -* Extrahiere Produkt(e)/Leistung(en), Kernfunktionen, Differenzierung, relevante Werteversprechen. -* Erstelle ein kurzes Resuemee (max. 4 Bulletpoints) der wichtigsten Erkenntnisse. -* **Output:** Tabelle mit Spalten: *Produkt/Loesung | Beschreibung (1-2 Saetze) | Kernfunktionen | Differenzierung | Primaere Quelle (URL)*. -* **Format-Anforderung:** Antworte NUR mit den Ergebnissen fuer diesen einen Schritt. Deine Antwort muss mit der Ueberschrift \"## Schritt 1: Angebot (WAS)\" beginnen und das Kurzresuemee sowie die Markdown-Tabelle enthalten. Gib keine weiteren Erklaerungen ab.""" -``` - -**Variablen:** - -* **`company_url`**: - * **Beschreibung:** Die Haupt-URL des zu analysierenden Unternehmens. - * **Inhalt:** Ein String, der die Website-URL des Unternehmens enthält. -* **`language`**: - * **Beschreibung:** Die Zielsprache für die Ausgabe. - * **Inhalt:** `'de'` oder `'en'`. -* **`regions`**: - * **Beschreibung:** Optional. Die spezifischen geografischen Regionen oder Märkte, die für das Unternehmen relevant sind. - * **Inhalt:** Ein String (z.B. `'Europa, Nordamerika'`) oder `'N/A'`. -* **`focus`**: - * **Beschreibung:** Optional. Ein spezifischer Produkt- oder Lösungsfokus für die Analyse. - * **Inhalt:** Ein String (z.B. `'CRM Software'`) oder `'N/A'`. -* **`grounding_text`**: - * **Beschreibung:** Der vereinfachte HTML-Inhalt, der von der Hauptseite und relevanten Unterseiten des Unternehmens gescrapt wurde, mit `SOURCE_URL`-Markern. Dieser Inhalt wird intern vor dem Prompt an das LLM übergeben. - * **Inhalt:** Ein mehrzeiliger String, der HTML-Auszüge enthält. - -**2. Prompt: `Schritt 2 - Zielgruppen (WER - Unternehmen)`** - -```python -r"""# Aufgabe -Fuehre nun **Schritt 2 - Zielgruppen (WER - Unternehmen)** durch. - -# Kontext: Validierte Ergebnisse aus vorherigen Schritten -{{previous_steps_data}} - -# Anweisungen fuer Schritt 2 -* Identifiziere B2B-Zielsegmente (Branchen/Unternehmensarten/Groessen/Regionen) basierend auf dem gegebenen Angebot. -* **Output:** Tabelle: *Zielbranche/Segment | Typische Unternehmensmerkmale | Region(en) | Relevanzbeleg (URL)*. -* **Format-Anforderung:** Antworte NUR mit den Ergebnissen fuer diesen einen Schritt. Deine Antwort muss mit der Ueberschrift \"## Schritt 2: Zielgruppen (Unternehmen)\" beginnen und die Markdown-Tabelle enthalten.""" -``` - -**Variablen:** - -* **`previous_steps_data`**: - * **Beschreibung:** Die formatierte Markdown-Ausgabe von `Schritt 1: Angebot (WAS)`. - * **Inhalt:** Ein mehrzeiliger Markdown-String, der die Zusammenfassung und Tabelle aus dem vorherigen Schritt enthält. - -**3. Prompt: `Schritt 3 - Zielpersonen/Rollen (WER - Personen)`** - -```python -r"""# Aufgabe -Fuehre nun **Schritt 3 - Zielpersonen/Rollen (WER - Personen)** durch. - -# Kontext: Validierte Ergebnisse aus vorherigen Schritten -{{previous_steps_data}} - -# Anweisungen fuer Schritt 3 -* Fuer jede Zielbranche: mind. 4 **spezifische** Rollen mit Verantwortungsbereich und Kaufbeteiligung (E, I, D, U nach RACI-Logik). Erfinde **keine** Personen; leite Rollen logisch aus Problem-/Prozessbezug ab. -* **Output:** Tabelle: *Rolle (praezise) | Verantwortungsbereich | Warum relevant fuer Produkt | Kaufbeteiligung (E/I/D/U) | Quelle/Indiz (URL oder Referenz)*. -* **Format-Anforderung:** Antworte NUR mit den Ergebnissen fuer diesen einen Schritt. Deine Antwort muss mit der Ueberschrift \"## Schritt 3: Zielpersonen (Rollen)\" beginnen.""" -``` - -**Variablen:** - -* **`previous_steps_data`**: - * **Beschreibung:** Die formatierte Markdown-Ausgabe von `Schritt 1` und `Schritt 2`. - * **Inhalt:** Ein mehrzeiliger Markdown-String. - -**4. Prompt: `Schritt 4 - Painpoints je Rolle (WARUM)`** - -```python -r"""# Aufgabe -Fuehre nun **Schritt 4 - Painpoints je Rolle (WARUM)** durch. - -# Kontext: Validierte Ergebnisse aus vorherigen Schritten -{{previous_steps_data}} - -# Anweisungen fuer Schritt 4 -* Formuliere pro Rolle 3-5 konkrete Painpoints (Beobachtungen, keine Features). -* Tagge jeden Painpoint mit einer Kategorie: **Kosten | Zeit | Risiko | Compliance | Qualitaet | Mitarbeiterbindung.** -* Fuege eine **Impact-Schaetzung (EUR, h, %)** als Hypothese hinzu. -* **Output:** Tabelle: *Rolle | Painpoint (konkret, messbar/operativ) | Kategorie | Auswirkung (Kosten, Risiko, Zeit) | Impact-Schaetzung (EUR, h, %) | Dringlichkeit (hoch/mittel/niedrig) | Quelle/Indiz (URL)*. -* **Format-Anforderung:** Antworte NUR mit den Ergebnissen fuer diesen einen Schritt. Deine Antwort muss mit der Ueberschrift \"## Schritt 4: Painpoints je Rolle\" beginnen.""" -``` - -**Variablen:** - -* **`previous_steps_data`**: - * **Beschreibung:** Die formatierte Markdown-Ausgabe von `Schritt 1` bis `Schritt 3`. - * **Inhalt:** Ein mehrzeiliger Markdown-String. - -**5. Prompt: `Schritt 5 - Gains & Nutzen je Rolle (WARUM wechseln)`** - -```python -r"""# Aufgabe -Fuehre nun **Schritt 5 - Gains & Nutzen je Rolle (WARUM wechseln)** durch. - -# Kontext: Validierte Ergebnisse aus vorherigen Schritten -{{previous_steps_data}} - -# Anweisungen fuer Schritt 5 -* Basierend auf den identifizierten Painpoints, formuliere pro Rolle 2-3 konkrete Gains (Vorteile/Nutzen). -* Quantifiziere den Nutzen als Hypothese (z.B. Einsparung in EUR, Zeitgewinn in h, Effizienzsteigerung in %). -* **Output:** Tabelle: *Rolle | Gain (konkreter Nutzen) | Quantifizierung (Hypothese in EUR, h, %) | Quelle/Indiz (URL)*. -* **Format-Anforderung:** Antworte NUR mit den Ergebnissen fuer diesen einen Schritt. Deine Antwort muss mit der Ueberschrift \"## Schritt 5: Gains & Nutzen je Rolle\" beginnen.""" -``` - -**Variablen:** - -* **`previous_steps_data`**: - * **Beschreibung:** Die formatierte Markdown-Ausgabe von `Schritt 1` bis `Schritt 4`. - * **Inhalt:** Ein mehrzeiliger Markdown-String. - -**6. Prompt: `Schritt 6 - Marketingbotschaft (WIE sprechen)`** - -```python -r"""# Aufgabe -Fuehre nun **Schritt 6 - Marketingbotschaft (WIE sprechen)** durch. - -# Kontext: Validierte Ergebnisse aus vorherigen Schritten -{{previous_steps_data}} - -# Eingaben fuer diesen Schritt -* **Gewuenschte Kanaele fuer die Botschaft:** `{{channels}}` - -# Anweisungen fuer Schritt 6: Chain-of-Thought-Analyse & Texterstellung - -**FOKUS:** Erstelle die Botschaften **AUSSCHLIESSLICH** fuer die vorgegebene **Fokus-Branche: {{focus_industry}}**. -Ignoriere alle anderen Branchen. Dein Ziel ist es, fuer JEDE Rolle innerhalb dieser EINEN Branche eine spezifische Botschaft zu entwickeln. - -Fuehre fuer jede **[Rolle]** innerhalb der **[Fokus-Branche: {{focus_industry}}]** den folgenden Denkprozess durch: - -1. **Schritt 6.1 (Analyse): Produkt-Rollen-Fit.** - * Welches Produkt/welche Loesung aus der "Angebot"-Tabelle (Schritt 1) ist fuer die **[Rolle]** am relevantesten? - -2. **Schritt 6.2 (Analyse): Branchen-Use-Case.** - * Was sind 1-2 typische Anwendungsfaelle fuer das ausgewaehlte Produkt in der **{{focus_industry}}**? Was macht die **[Rolle]** damit konkret? - -3. **Schritt 6.3 (Analyse): Nutzen-Quantifizierung.** - * Betrachte die Painpoints (Schritt 4) und Gains (Schritt 5) fuer die **[Rolle]**.\ - * Leite daraus einen konkreten, fuer die **[Rolle]** relevanten KPI ab. - -4. **Schritt 6.4 (Synthese): Botschaft formulieren.** - * Synthetisiere die Erkenntnisse aus 6.1-6.3 zu einer praegnanten Kernbotschaft (2-3 Saetze) nach der Struktur: **Beobachtung (Problem) -> Niedrigschwellige Loesungsidee -> Produkt-Bruecke -> Quantifizierter Nutzen.** - * Erstelle Varianten dieser Botschaft fuer die Kanaele: {{channels}}. - -# Output Format -Erstelle ONLY die finale Markdown-Tabelle. -* **Table Columns:** *Fokus-Branche | Rolle | Kernbotschaft (2-3 sentences) | {{channels}}*. -* **Requirement:** Your response must start with the heading \"## Schritt 6: Botschaften\" and contain ONLY die vollstaendige Markdown-Tabelle.""" -``` - -**Variablen:** - -* **`previous_steps_data`**: - * **Beschreibung:** Die formatierte Markdown-Ausgabe von `Schritt 1` bis `Schritt 5`. - * **Inhalt:** Ein mehrzeiliger Markdown-String. -* **`channels`**: - * **Beschreibung:** Die gewünschten Marketingkanäle, für die Nachrichtenvarianten erstellt werden sollen. - * **Inhalt:** Ein String (z.B. `'LinkedIn, Kaltmail, Landingpage'`). -* **`focus_industry`**: - * **Beschreibung:** Die spezifische Branche, auf die sich die Nachrichtenerstellung in diesem Schritt konzentrieren soll. - * **Inhalt:** Ein String, der den Namen der Fokusbranche enthält. - -**7. Prompt: `Schritt 7 - Customer Journey & Buying Center`** - -```python -r"""# Aufgabe -Fuehre **Schritt 7 - Customer Journey & Buying Center** durch. - -# Kontext: Validierte Ergebnisse aus vorherigen Schritten -{{previous_steps_data}} - -# Fokus -Beziehe dich auf die **Fokus-Branche: {{focus_industry}}**. - -# Anweisungen fuer Schritt 7 -* Analysiere die Kaufreise ("Journey") vom ersten Trigger bis zum Vertrag. -* Identifiziere fuer jede Phase die **Dynamik im Buying Center**: Wer treibt an (Champion), wer bremst oder prueft (Gatekeeper/Evaluator), wer entscheidet (Decider)? -* Gehe besonders auf **technische und organisatorische Barrieren** ein (z.B. IT-Sicherheit, Schnittstellen wie Aufzugssteuerung, Prozessintegration). -* Definiere **konkrete Assets**, die die jeweilige Rolle in dieser Phase benoetigt, um Einwaende zu entkraeften oder interne Mitstreiter zu ueberzeugen (z.B. "API-Dokumentation fuer Aufzugsbauer", "ROI-Rechner fuer CFO", "Sicherheits-Whitepaper"). -* **Output:** Erstelle eine Markdown-Tabelle mit exakt diesen Spalten: *Phase | Rolle | Funktion (Buying Center) | Zentrale Frage / Beduerfnis | Moeglicher Deal-Breaker | Benoetigtes Asset / Format*. -* **Format-Anforderung:** Antworte NUR mit den Ergebnissen fuer diesen einen Schritt. Deine Antwort muss mit der Ueberschrift \"## Schritt 7: Customer Journey\" beginnen.""" -``` - -**Variablen:** - -* **`previous_steps_data`**: - * **Beschreibung:** Die formatierte Markdown-Ausgabe von `Schritt 1` bis `Schritt 6`. - * **Inhalt:** Ein mehrzeiliger Markdown-String. -* **`focus_industry`**: - * **Beschreibung:** Die spezifische Branche, auf die sich die Analyse der Customer Journey konzentrieren soll. - * **Inhalt:** Ein String, der den Namen der Fokusbranche enthält. - --- *Dokumentation wiederhergestellt und erweitert am 15.01.2026.* \ No newline at end of file