Outreach-Sequenz-Builder
Nimm ein Kaufsignal. Generiere eine personalisierte Multi-Channel-Outreach-Sequenz. Gib versandfertige Nachrichten über E-Mail, LinkedIn und Telefon aus.
Wichtige Regel: Jede Nachricht muss vollständig aus dem geladenen Kontext befüllt werden. Nur {{first_name}} ist als Variable erlaubt. Keine [Firmenname]-Klammern, keine [SCHMERZPUNKT EINFÜGEN]-Platzhalter. Wenn du nicht genügend Informationen hast, um etwas auszufüllen, frage vor dem Schreiben nach. Sende niemals eine Nachricht mit einem ungefüllten Platzhalter.
Schritt 1: Setup-Prüfung
Bestätige die erforderlichen Umgebungsvariablen:
echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+gesetzt}"
echo "COMPOSIO_API_KEY: ${COMPOSIO_API_KEY:-nicht gesetzt, Gmail-Entwurf wird übersprungen}"
Wenn GEMINI_API_KEY fehlt: Stopp. Teile dem Benutzer mit: "GEMINI_API_KEY wird benötigt. Holen Sie ihn unter aistudio.google.com ab. Fügen Sie ihn Ihrer .env-Datei hinzu."
Wenn COMPOSIO_API_KEY fehlt: Fahre fort. Sequenzen werden als formatierter Text zum Kopieren und Einfügen ausgegeben. Die Erstellung von Gmail-Entwürfen wird übersprungen.
Schritt 2: Kontext laden
Prüfe auf eine vorhandene ICP-Datei und Account-Dateien:
ls docs/icp.md 2>/dev/null && echo "ICP gefunden" || echo "ICP fehlt"
ls docs/accounts/ 2>/dev/null && echo "Accounts gefunden" || echo "Accounts fehlen"
Wenn docs/icp.md existiert: Lies sie. Extrahiere:
- Zielpersonas (Jobtitel, Hierarchieebene, Abteilung)
- Firmenprofil (Größe, Branche, Finanzierungsphase)
- Kernschmerzpunkte (verwende die exakte Sprache des Käufers)
- Hauptunterscheidungsmerkmale (warum dein Produkt gegenüber Alternativen)
Wenn docs/accounts/{firma}.md existiert: Lies die relevante Datei. Extrahiere:
- Firmenname, Größe, aktueller Kontext
- Bekannter Tech-Stack oder Schmerzpunkte
- Bestehende Beziehung oder früherer Kontakt
Wenn keines existiert: Stelle dem Benutzer diese 4 Fragen. Fahre erst fort, wenn alle 4 beantwortet sind:
- Was macht Ihr Produkt? (ein oder zwei Sätze)
- Wen sprechen Sie an? (Jobtitel, Firmengröße, Branche)
- Was ist das Hauptproblem, das Sie lösen? (aus der Perspektive des Käufers, nicht Ihrer)
- Was ist Ihr Hauptunterscheidungsmerkmal? (warum Sie gegenüber der Alternative, die sie heute verwenden)
Schritt 3: Signal identifizieren
Bestimme, welcher der 7 Signaltypen zutrifft. Lies references/signal-playbook.md für die vollständigen Einblicke, Brücken, Öffner und Aufforderungen für jeden Signaltyp.
7 Signaltypen:
| Signal | Definition |
|---|---|
| Post-Finanzierung | Unternehmen hat in den letzten 30 Tagen eine Finanzierungsrunde abgeschlossen |
| Einstellungssignal | Unternehmen hat 5 oder mehr Stellen in einer Funktion ausgeschrieben, die du bedienst |
| Wettbewerber-Ersetzung | Kontakt verwendet einen Wettbewerber und zeigt Frustration |
| Produkteinführung | Unternehmen hat ein neues Produkt oder eine große Funktion gestartet |
| Inhalts-Engagement | Kontakt hat deine Inhalte geliked, kommentiert oder geteilt |
| Event-Nachbereitung | Du hast ihn auf einer Konferenz oder einem Webinar getroffen oder warst in derselben Session |
| Jobwechsel | Kontakt ist in den letzten 60 Tagen zu einem neuen Unternehmen gewechselt |
Wenn der Benutzer ein Signal in seiner Aufforderung angegeben hat: Bestätige den Typ und extrahiere die spezifischen Details (Rundenhöhe, Rollentitel, Produktname, Eventname usw.).
Wenn kein Signal klar ist: Frage: "Was hat diese Kontaktaufnahme ausgelöst? (z.B. sie haben eine Runde abgeschlossen, sie stellen Ingenieure ein, du hast sie auf einem Event getroffen)"
Gib den erkannten Signaltyp und das spezifische Detail an, bevor du fortfährst.
Schritt 4: Den Winkel entwickeln
Verwende den Signaltyp und den in Schritt 2-3 geladenen Kontext, um die vier Winkelelemente zu definieren. Lies references/signal-playbook.md für die Formel für diesen Signaltyp.
Schreibe explizit, bevor du Nachrichten generierst:
Signal: [spezifisches Signal + konkretes Detail]
Einblick: [was dieses Signal über ihre Situation verrät]
Brücke: [wie dein Produkt mit dem verbindet, was das Signal verrät]
Öffner: [ein Satz, der auf das spezifische Signaldetail verweist]
Aufforderung: [minimal lebensfähiger CTA, unter 10 Wörtern]
Der Öffner muss den spezifischen Auslöser nennen. Vage Öffner werden abgelehnt.
Gut: „Herzlichen Glückwunsch zur 18-Millionen-Dollar-Serie B – das schnelle Skalieren des Vertriebsteams schafft meist eine Onboarding-Lücke.“ Schlecht: „Ich habe gesehen, dass Ihr Unternehmen kürzlich eine Finanzierung erhalten hat.“
Schritt 5: Die Kanal-Sequenz planen
Entwerfe 4-6 Touchpoints über E-Mail, LinkedIn und Telefon. Regeln:
- Gesamtdauer: 10-14 Tage
- Mindestabstand: 2 Tage zwischen zwei Kontakten
- Niemals denselben Kanal zweimal hintereinander verwenden
- Jede Nachfassaktion muss einen neuen Mehrwert bieten (neue Ressource, neuer Winkel, neuer Beleg). Niemals „melde mich nur mal wieder“.
- Der letzte Touchpoint ist eine kurze Abschlussnachricht
Standard-Kadenz für die meisten Signale:
Tag 1: E-Mail (erster Kontakt, signalgesteuerter Öffner)
Tag 3: LinkedIn (Verbindungsanfrage oder kurze DM)
Tag 7: E-Mail (neuer Winkel oder Fallstudie)
Tag 9: Telefon (Gesprächsleitfaden + Voicemail-Text)
Tag 12: E-Mail (anderes Framing oder Einwand adressiert)
Tag 14: E-Mail (kurze Abschlussnachricht)
Anpassung je nach Signaltyp:
- Post-Finanzierung: schneller handeln (Tag 1, 2, 4, 7, 10). Innerhalb von 48 Stunden nach Ankündigung handeln.
- Event-Nachbereitung: mit LinkedIn beginnen, nicht mit E-Mail (wärmerer Kanal zuerst)
- Inhalts-Engagement: mit LinkedIn-Antwort oder -Kommentar vor E-Mail beginnen
Gib den geplanten Tag und Kanal für jeden Touchpoint an, bevor du Nachrichten schreibst.
Schritt 6: Die Sequenz generieren
Lies references/sequence-format.md vollständig. Lies references/output-template.md und wähle die Vorlage für diesen Signaltyp.
Schreibe die Gemini-Anfrage in eine temporäre Datei:
cat > /tmp/outreach-sequence-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "Du bist ein B2B-Verkaufstexter, der Kaltakquise schreibt, die Antworten erhält. Regeln: Der erste Satz jeder Nachricht handelt von IHNEN, nicht von deinem Unternehmen. Verweise im ersten Text auf das spezifische Kaufsignal mit Namen und Detail. Verwende natürliche Kontraktionen. Kurze Sätze. Keine Unternehmenssprache. Keine verbotenen Wörter: Synergie, Hebelwirkung, Kontakt aufnehmen, zurückkommen, anpingen, einbinden, Abstimmung, innovativ, hochmodern, erstklassig, weltklasse, spielverändernd, disruptiv, Bandbreite, Deep Dive, niedrig hängende Früchte, den Ball ins Rollen bringen. Keine Höflichkeitsfloskeln: kein 'Ich hoffe, diese E-Mail erreicht Sie gut', kein 'Schönen Montag', kein 'Ich wollte nur'. Jede Nachfassaktion bietet neuen Mehrwert – niemals 'melde mich nur mal wieder'. Harte Grenzen: E-Mail-Text unter 100 Wörtern, LinkedIn-Notiz unter 300 Zeichen, Telefon-Öffner unter 20 Wörtern. Nur {{first_name}} ist als Variable erlaubt – fülle alle anderen Details aus dem bereitgestellten Kontext aus. Die Abschlussnachricht ist kurz (3-4 Sätze), freundlich und lässt die Tür offen."
}]
},
"contents": [{
"parts": [{
"text": "CONTEXT_AND_INSTRUCTIONS_HERE"
}]
}],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 4096
}
}
ENDJSON
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d @/tmp/outreach-sequence-request.json \
| python3 -c "import sys,json; d=json.load(sys.stdin); print(d['candidates'][0]['content']['parts'][0]['text'])"
Ersetze CONTEXT_AND_INSTRUCTIONS_HERE durch:
- Die Produktbeschreibung, Zielpersona, Schmerzpunkte und Unterscheidungsmerkmale aus Schritt 2
- Den Signaltyp, das spezifische Detail und die vier Winkelelemente aus Schritt 4
- Den Kanalplan aus Schritt 5
- Anweisungen, jeden Touchpoint mit seiner Betreffzeile (E-Mail), Zeichenanzahl (LinkedIn) und Gesprächsleitfaden (Telefon) zu schreiben
Für jeden E-Mail-Touchpoint verlange zwei Varianten der Betreffzeile (A/B-Test).
Schritt 7: Einwände abbilden
Nach der Generierung der Sequenz identifiziere die 2-4 wahrscheinlichsten Einwände für diesen Signaltyp. Unterbinde jeden Einwand auf natürliche Weise in einem bestehenden Touchpoint. Füge keine separaten Nachrichten zur Einwandbehandlung hinzu. Webe die Vorwegnahme in die Sequenz ein.
Lies das Einwandsbuch in references/sequence-format.md. Ordne zu, welcher Touchpoint welchen Einwand behandelt.
4 Standard-Einwände, die vorweggenommen werden:
| Einwand | Vorwegnahme-Ansatz |
|---|---|
| „Wir haben bereits eine Lösung“ | Erkenne ihr aktuelles Tool an, positioniere deines als ergänzend oder nächsten Schritt |
| „Nicht der richtige Zeitpunkt“ | Verknüpfe das Signal direkt damit, warum jetzt der richtige Zeitpunkt ist |
| „Zu teuer“ | Rahmen ROI, verankere ihn an einer Zahl, die ihnen wichtig ist |
| „Müssen mehr Leute einbeziehen“ | Biete eine teilbare Ressource an (Einseiter, aufgezeichnete Demo) |
Gib an, welcher Touchpoint welchen Einwand behandelt, bevor du die endgültige Sequenz präsentierst.
Schritt 8: Selbst-QA
Führe jede Prüfung durch und behebe Verstöße, bevor du präsentierst:
- Jede Nachricht beginnt mit einem Satz über SIE
- Das spezifische Signaldetail wird mindestens im ersten Touchpoint genannt
- Keine ungefüllten Platzhalter außer
{{first_name}} - E-Mail-Texte unter 100 Wörtern (zähle und gib die Wortanzahl für jede an)
- LinkedIn-Notizen unter 300 Zeichen (zähle und gib für jede an)
- Telefon-Öffner unter 20 Wörtern
- Keine verbotenen Wörter in einer Nachricht
- Kein „melde mich nur mal wieder“ in einer Nachfassaktion
- Jede Nachfassaktion bietet einen neuen Winkel oder Mehrwert
- Niemals derselbe Kanal zweimal hintereinander
- Mindestens 2 Einwände werden in der Sequenz vorweggenommen
- Abschlussnachricht ist 3-4 Sätze, freundlich, kein schlechtes Gewissen
Behebe jeden Verstoß, bevor du präsentierst.
Schritt 9: Ausgabe und Speichern
Präsentiere die vollständige Sequenz in einem Codeblock.
In Datei speichern:
mkdir -p docs/sequences
cat > docs/sequences/SIGNAL-TYP.md << 'EOF'
SEQUENZ_INHALT_HIER
EOF
echo "Sequenz gespeichert unter docs/sequences/SIGNAL-TYP.md"
Wenn COMPOSIO_API_KEY gesetzt ist: Frage: „Sollen die E-Mail-Touchpoints in Gmail via Composio erstellt werden?“
Bei Bestätigung, für jeden E-Mail-Touchpoint:
# Der Agent ruft die GMAIL_CREATE_EMAIL_DRAFT Composio-Aktion auf
# mit subject = [Betreffzeile], body = [E-Mail-Text], recipient = [Kontakt-E-Mail, falls bekannt]
Nach dem Erstellen: „E-Mail-Entwürfe in Gmail erstellt. Überprüfen Sie Ihren Entwürfe-Ordner.“
LinkedIn-Notizen: Präsentiere sie als separate Kopier-und-Einfüge-Blöcke mit einer klaren Bezeichnung pro Touchpoint. LinkedIn unterstützt keine programmatische Nachrichtenübermittlung.
Telefon-Skripte: Präsentiere sie als formatierten Gesprächsleitfaden mit Aufzählungspunkten, nicht als starres Skript.