Final Pitch Generation - The Elegance Update

- REFACTOR: Der FSM-Pitch-Prompt wurde final überarbeitet, um der KI maximale stilistische Freiheit für eine elegante, partnerschaftliche Tonalität zu geben.
- FIX: Die "FEHLER_DATEN"-Regel wurde entfernt, um sicherzustellen, dass für jedes Unternehmen ein Pitch generiert wird, auch bei dünnerer Datenlage.
- Die generierten Pitches sind nun optimal für die direkte Verwendung in der Marketing-Automation, mit einer hohen Erfolgsquote und exzellenter Tonalität.
This commit is contained in:
2025-07-21 13:44:23 +00:00
parent 11e34beb41
commit 3eba023ebe

View File

@@ -1031,8 +1031,8 @@ def generate_fsm_pitch(
techniker_bucket_ml,
):
"""
Generiert einen FSM-Pitch basierend auf dem finalen Master-Prompt (v2.3.3).
Liefert einen strategischen, positiv formulierten Satz für die E-Mail-Ansprache.
Generiert einen FSM-Pitch mit maximaler stilistischer Qualität und einer hohen
Erfolgsquote, basierend auf dem finalen Master-Prompt (v2.3.4).
"""
logger = logging.getLogger(__name__)
@@ -1041,7 +1041,7 @@ def generate_fsm_pitch(
if website_summary and '**GESCHÄFTSMODELL**' in website_summary:
try:
summary_text = website_summary.split('Zusammenfassung:')[1].split('**FSM-POTENZIAL**')[0].strip()
if summary_text: parts.append(f"Zusammenfassung der Website: {summary_text}")
if summary_text: parts.append(f"Website-Zusammenfassung: {summary_text}")
except IndexError: pass
elif website_summary and 'k.a.' not in website_summary.lower():
parts.append(f"Zusammenfassung der Website: {website_summary}")
@@ -1052,10 +1052,9 @@ def generate_fsm_pitch(
combined = "\n".join(parts)
if not combined: return "FEHLER (Mangelnde Daten)"
# 2. Namenswahl
# 2. Namenswahl & 3. Personalinfo
display_name = company_short_name if company_short_name and company_short_name.lower() != 'k.a.' else company_name
# 3. VERBESSERTE Personalinfo-Generierung
personal_info = ""
try:
tech_val = int(anzahl_techniker or 0)
@@ -1070,45 +1069,43 @@ def generate_fsm_pitch(
personal_info = f"Ihrem Unternehmen mit über {int(round(ma_val, -2))} Mitarbeitern"
except (ValueError, TypeError): pass
# 4. Der finale, polierte MASTER-PROMPT
# 4. Der finale, eleganteste Prompt
prompt_parts = [
"Du bist ein exzellenter B2B-Stratege und Texter. Deine Aufgabe ist es, für ein Unternehmen einen hochpersonalisierten, scharfsinnigen und wertschätzenden Einleitungssatz für eine E-Mail zu formulieren.",
"Aufgabe:",
"Formuliere EINEN EINZIGEN, flüssig lesbaren Satz (ca. 2035 Wörter), der eine operative Kernkompetenz des Unternehmens beobachtet und deren Wichtigkeit für den Geschäftserfolg hervorhebt.",
"Du bist ein exzellenter B2B-Stratege und Texter mit einem tiefen Verständnis für operative Prozesse im Außendienst. Deine Aufgabe ist es, einen hochpersonalisierten, scharfsinnigen und wertschätzenden Einleitungssatz für eine E-Mail an ein potenzielles Kundenunternehmen zu formulieren.",
"",
"--- Tonalität & Stil (SEHR WICHTIG) ---",
"• Absolut NICHT werblich, sondern partnerschaftlich und beobachtend.",
"• Beginne den Satz entweder mit 'Angesichts Ihrer Spezialisierung auf...' oder 'Für ein Unternehmen wie [Kurzname], das...'.",
"• Der Satz muss eine positive operative Herausforderung implizieren (z.B. 'ist die Effizienz entscheidend' statt 'ist Ineffizienz ein Problem').",
"• Verwende IMMER den bereitgestellten 'Kurznamen', niemals die volle Firmierung.",
"--- Denkprozess & Stilvorgaben ---",
"1. **Analysiere den Kontext:** Verstehe das Kerngeschäft des Unternehmens aus der Beschreibung. Was ist die spezifischste, physische Service-Tätigkeit, die ihre mobilen Teams durchführen? (z.B. 'Installation von Solaranlagen', 'Wartung von BHKWs', 'Reparatur von Druckmaschinen').",
"2. **Identifiziere den Hebel:** Was ist der entscheidende Erfolgsfaktor für diese Tätigkeit? (z.B. 'reibungslose Planung', 'effiziente Koordination', 'schnelle Reaktionszeiten').",
"3. **Formuliere den Satz (ca. 20-35 Wörter):**",
" - Wähle einen eleganten, aktiven Einstieg wie 'Speziell im Bereich...' oder 'Die reibungslose Koordination...'. Vermeide starre Floskeln.",
" - Verbinde die **spezifische Tätigkeit** mit dem **Hebel** und den **geschäftlichen Konsequenzen** (z.B. 'Kundenzufriedenheit', 'Anlagenverfügbarkeit', 'Projekterfolg').",
" - Integriere die Personalinfo, wenn sie spezifisch und aussagekräftig ist.",
" - **WICHTIG:** Formuliere immer als positive Beobachtung über eine Kernkompetenz. Du implizierst die Herausforderung durch die Betonung der Wichtigkeit der Lösung.",
" - Verwende IMMER den bereitgestellten 'Kurznamen'.",
"",
"--- Denkprozess (Schritt für Schritt) ---",
"1. Analysiere die Beschreibung, um die **spezifischste Service-Tätigkeit** zu finden (z.B. 'Installation von Glasfaseranschlüssen', 'Wartung von Produktionsanlagen').",
"2. Formuliere den Satz, der diese Tätigkeit mit der Personalinfo und einer positiven geschäftlichen Konsequenz (z.B. 'entscheidend für die Kundenzufriedenheit', 'der Schlüssel zum Projekterfolg') verbindet.",
"--- Exzellente Beispiele für die Zielsprache ---",
"• Beispiel 1: Für ein Unternehmen wie 2G Energy, das bei über 8.500 installierten Modulen weltweit den Service sicherstellt, ist die effiziente Koordination ihrer 200 Servicetechniker entscheidend für die maximale Anlagenverfügbarkeit.",
"• Beispiel 2: Speziell im Bereich der schnellen und effizienten Installation von integrierten Energielösungen ist für 1KOMMA5° die reibungslose Planung ihres wachsenden Serviceteams der Schlüssel zur Sicherstellung der Kundenzufriedenheit.",
"• Beispiel 3: Die präzise Projektplanung und -umsetzung ist besonders für einen Hersteller von Highend-Produktionsanlagen wie 3CON entscheidend, um den hohen Qualitätsansprüchen anspruchsvoller Industriekunden gerecht zu werden.",
"",
"--- Exzellente Beispiele für den Zielsatz ---",
"Beispiel 1: Für ein Unternehmen wie 2G Energy, das bei über 8.500 installierten Modulen weltweit den Service sicherstellt, ist die effiziente Koordination Ihrer 200 Servicetechniker entscheidend für die maximale Anlagenverfügbarkeit.",
"Beispiel 2: Angesichts der Spezialisierung von 1KOMMA5° auf die schnelle und effiziente Installation von integrierten Energielösungen ist die reibungslose Planung Ihres wachsenden Serviceteams der Schlüssel zur Sicherstellung der Kundenzufriedenheit.",
"",
"--- Selbstkritik ---",
"Wenn die Beschreibung keine konkrete Service-Tätigkeit erkennen lässt (z.B. reiner Handel, Online-Portal), antworte NUR mit: FEHLER_DATEN",
"--- Wichtige Regel ---",
"**Generiere IMMER einen Satz.** Wenn die Daten unspezifisch sind, formuliere einen etwas allgemeineren, aber immer noch relevanten Satz über die 'Effizienz des Service-Teams bei der Betreuung von Kundenprojekten'.",
"",
"--- Unternehmenskontext für deine Aufgabe ---",
f"Kurzname des Unternehmens: {display_name}",
f"Branche: {ki_branche}",
f"Beschreibung:\n{combined}",
f"Personalinfo für den Satz: {personal_info if personal_info else 'Keine Angabe'}",
"",
"--- Deine Ausgabe ---",
"Gib NUR den finalen, perfekt formulierten Satz aus ODER das Wort 'FEHLER_DATEN'.",
"Gib NUR den finalen, perfekt formulierten Satz aus.",
]
prompt = "\n".join(prompt_parts)
try:
fsm_pitch = call_openai_chat(prompt, temperature=0.6, model="gpt-4o")
if not fsm_pitch or "FEHLER_DATEN" in fsm_pitch:
logger.warning(f"KI konnte keinen validen FSM-Pitch für {company_name} generieren (Grund: Mangelnde/unspezifische Daten).")
return "FEHLER (Mangelnde Daten)"
fsm_pitch = call_openai_chat(prompt, temperature=0.7, model="gpt-4o")
if not fsm_pitch or len(fsm_pitch.split()) < 7:
logger.warning(f"KI konnte keinen validen FSM-Pitch für {company_name} generieren (Antwort zu kurz).")
return "FEHLER (KI-Antwort unzureichend)"
return fsm_pitch.strip().replace('"', '')
except Exception as e:
logger.error(f"Fehler bei der Generierung des FSM-Pitches für {company_name}: {e}")