From 50141069e6372e74474b6bf0046f91c6706dbf86 Mon Sep 17 00:00:00 2001 From: Floke Date: Mon, 19 Jan 2026 07:33:46 +0000 Subject: [PATCH] docs: Add account evaluation prompts to migration guide --- BUILDER_APPS_MIGRATION.md | 322 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 322 insertions(+) diff --git a/BUILDER_APPS_MIGRATION.md b/BUILDER_APPS_MIGRATION.md index da626d99..ddb4509f 100644 --- a/BUILDER_APPS_MIGRATION.md +++ b/BUILDER_APPS_MIGRATION.md @@ -99,5 +99,327 @@ 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(self.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 aus `../data/allowed_industries.json` geladen oder auf `["Sonstige"]` zurückgesetzt. + +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