Files
ClaudeProjects/Sales/00_Sales_Prozess/PROZESS.md
T
2026-05-29 11:09:22 +02:00

330 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GENERIO Lead Generation Prozess
**Version:** Mai 2026
---
## Übersicht
Der GENERIO Sales-Prozess beginnt immer in der **Inbox** und endet wenn Ansprechpartner mit direkter Telefonnummer im CRM stehen. Claude übernimmt alle Schritte automatisch.
```
[0] Inbox ──────────────────────────────────────────────────────┐
↓ einzelne Firma ↓ Branche / Kriterien │
[CRM-Check] [1] Kundencluster lesen │
1. Zielrolle aus Cluster ↓ A/B/C-Kriterien │
2. Insolvenz-Check [2] Firmen recherchieren │
3. HubSpot-Check ↓ Excel → 02_Lead_Research/ │
[3] Ansprechpartner finden │
✅ AP + direkte Nummer LinkedIn SalesNav → Apollo │
→ ✅ Fertig ↓ CSV → 03_Apollo_Import/ │
⚠️ AP da, keine Nummer [4] CRM einpflegen │
→ Apollo anreichern ↓ Companies + Contacts │
⚠️ Kein AP in Zielrolle ✅ FERTIG: AP + Telefon im CRM ───┘
→ SalesNav → Apollo
❌ Nicht im CRM
→ Anlegen + SalesNav → Apollo
(Zentrale → Company-Record)
```
---
## Phase 0 — Inbox (Einstiegspunkt für alles)
**Datei:** `00_Inbox/INBOX.md` — aber Claude scannt **den gesamten Ordner**, nicht nur die MD-Datei.
| Format | Beispiel |
|--------|---------|
| Direkt im Chat | *„Schau mal ob Kibek passt"* |
| In INBOX.md eintragen | Firmenname + optionale Infos |
| Excel/CSV in den Ordner legen | Beliebige Lead-Liste |
| Freitext-Datei | .txt oder .md mit Firmennamen |
**Routing:**
| Inbox-Eintrag | Aktion |
|--------------|--------|
| Eine einzelne Firma | → CRM-Check (s. unten) |
| Mehrere Firmen / Branche / Kriterien | → Phase 14 starten |
| Kontaktperson ohne Firma | → In HubSpot als Kontakt anlegen |
**CRM-Check für einzelne Firma (immer in dieser Reihenfolge):**
1. Zielrolle aus Kundencluster lesen (Ansprechperson: Abteilung + Level/Position)
2. Insolvenz-Check: Web-Suche `"[Firma]" Insolvenz` — wenn positiv → sofort abschreiben, fertig
3. HubSpot-Check: Company suchen → Contacts laden → Abgleich mit Zielrolle
| Ergebnis | Nächster Schritt |
|---------|-----------------|
| ✅ AP in Zielrolle + direkte Nummer | Bereit zum Anruf |
| ⚠️ AP da, keine direkte Nummer | Apollo: direkte Nummer anreichern |
| ⚠️ Firma im CRM, kein AP in Zielrolle | LinkedIn SalesNav → Apollo |
| ❌ Firma nicht im CRM | Company anlegen (Zentrale an Company) → SalesNav → Apollo |
> Impressumsnummer / Zentrale → Company.Phone in HubSpot. Zählt nicht als Kontakt-Telefon.
---
## Phase 1 — Kundencluster lesen
**Datei:** `01_ICP_Cluster/GENERIO_Kundencluster.xlsx`
Die Wahrheit für Priorisierung und Zielrollen. Wird von Phase 2 und 3 direkt verwendet — kein manueller Zwischenschritt.
| Sheet | Branche |
|-------|---------|
| Commerce | FMCG / Retail / Discounter |
| eCommerce | Online-Händler (Möbel, Schuhe, Deko) |
| 3D-Printing | 3D-Druck Software & Services |
Pro Sheet relevant für Phase 2 + 3:
- **A/B/C-Kriterien:** Mitarbeiter, Umsatz, Wachstumsphase, Branche
- **Ansprechperson: Abteilung** → wird in Phase 3 für SalesNav genutzt
- **Ansprechperson: Level/Position** → wird in Phase 3 für SalesNav genutzt
> Kein passender Tab für eine Branche → Jonas informieren mit Tabelle der betroffenen Firmen. Keinen Tab automatisch anlegen. Firmen mit Priorität `?` in die Pipeline aufnehmen.
---
## Phase 2 — Firmen recherchieren
**Trigger:** *„Finde mir [Anzahl] Firmen aus [Branche]..."*
**Input:** Kundencluster aus Phase 1 (A/B/C-Kriterien)
**Output:** `02_Lead_Research/[Branche]_Sales_Pipeline_[REGION]_[JAHR].xlsx`
Claude macht automatisch:
1. Duplikat-Check gegen bestehende Pipelines in `02_Lead_Research/`
2. 46 Web-Recherchen → 50+ Kandidaten finden, auf 2550 reduzieren
3. Jeden Kandidaten gegen Kundencluster abgleichen → Priorität A / B / C
4. Insolvenz-Check für alle Kandidaten → Insolvente sofort streichen
5. Excel-Pipeline erstellen (s. Ordnerstruktur)
**Excel-Spalten Phase 2:**
| Spalte | Inhalt |
|--------|--------|
| # | Laufende Nummer |
| Firmenname | Vollständiger Name |
| Kategorie | Unterbranche |
| Größe | Klein / Mittel / Groß |
| Standort | Stadt, Land |
| Website | www.domain.de |
| Telefon Zentrale | +49 XXX (an Company in HubSpot) |
| LinkedIn Company | linkedin.com/company/slug |
| GENERIO-Fit | 23 Sätze warum relevant |
| Priorität | A / B / C / ? |
| Owner | aus CRM_Config/OWNER_MAPPING.md |
| SalesNav Suchstring | `"[Zielrolle]" AND "[Firmenname]"` |
| Ansprechpartner Name | leer — wird in Phase 3 gefüllt |
| Ansprechpartner LinkedIn | leer — wird in Phase 3 gefüllt |
Phase 2 trägt den **SalesNav-Suchstring** für jede Firma direkt ein — Phase 3 kann sofort loslegen.
---
## Phase 3 — Ansprechpartner finden + Apollo CSV
**Zwei mögliche Einstiegspunkte:**
| Einstieg | Input | Wann |
|----------|-------|------|
| Standard | Phase-2-Excel aus `02_Lead_Research/` | Neue Pipeline aufgebaut |
| CRM-Pull-Shortcut | Bestehende Companies aus HubSpot ohne Kontakte | Companies schon im CRM, Ansprechpartner fehlen noch |
> **CRM-Pull-Shortcut:** Wenn Companies bereits im CRM stehen (z.B. aus früheren Runs), kann Phase 2 übersprungen werden. HubSpot → Companies → Filter: `num_associated_contacts = 0` → Liste exportieren → direkt in Phase 3 einsteigen.
**Output:** `03_Apollo_Import/[Branche]_Apollo_Import_[DATUM].csv`
**Immer in dieser Reihenfolge — keine Ausnahmen:**
### Schritt 1: Apollo Domain-Suche (Primärweg)
Für jede Firma die Domain als Filter in Apollo verwenden — das ist schneller und zuverlässiger als LinkedIn SalesNav:
```
apollo_mixed_people_api_search:
q_organization_domains_list: ["domain.de"]
person_titles: ["CEO", "Geschäftsführer", "Founder", "Managing Director", "Marketing Manager"]
per_page: 5
```
Alternativ via Apollo-UI:
```
app.apollo.io/#/people?q_keywords=[NAME]&q_organization_domains_list[]=[domain.de]
```
Gefundene Person: **Name + LinkedIn-URL (Pflichtfeld!)** in die Phase-2-Excel eintragen.
> Die LinkedIn-URL ist Pflichtfeld — ohne sie kann Apollo nicht zuverlässig matchen. `apollo_people_match` mit `linkedin_url` liefert vollständigen Namen + direkte Nummer in einem Schritt. Nie eine Zeile ohne LinkedIn-URL in Phase 3 weiterführen.
> **SalesNav ist Plan B** — nur wenn Apollo domain-search 0 Ergebnisse liefert. Suchstring: `"[Zielrolle]" AND "[Firmenname]"`
### Schritt 2: Apollo Bulk-Enrichment (Batch-Reveal)
Statt einzeln aufzurufen: Alle Kontakte mit LinkedIn-URL auf einmal in Apollo anreichern.
```
apollo.io → People → Import → CSV aus 03_Apollo_Import/ hochladen
→ Alle selektieren → "Reveal All" (Bulk-Enrichment)
→ Warten bis alle Nummern angereichert sind (~1015 Sek. pro Kontakt)
→ Export mit Telefonnummern → zurück in Phase-2-Excel (Zwischenspeicher, s.u.)
```
Apollo reichert die **direkte Telefonnummer** an. Danach: Push to HubSpot.
> **Kein Einzelaufruf mehr.** Einzelne "Request phone number"-Klicks nur noch als Ausnahme wenn ein Kontakt beim Bulk-Reveal leer bleibt.
### Schritt 3: Fallback-Kette wenn Apollo keine Nummer findet
Wenn Apollo nach Bulk-Reveal keine direkte Nummer liefert, **immer diese Reihenfolge einhalten** — nie Schritte überspringen:
| Priorität | Methode | Vorgehen |
|-----------|---------|----------|
| 1. Apollo MCP / API | Primärweg | `apollo_people_match` mit `linkedin_url` → direkte Nummer |
| 2. Apollo manuell via Chrome | **Fallback wenn MCP keine Nummer liefert** | Apollo.io im Browser öffnen → Kontakt suchen → „Request phone number" klicken → 1015 Sek. warten → Nummer erscheint asynchron |
| 3. Impressum scrapen | Wenn Apollo 0 Personen kennt | Website → Impressum → **GF-Name** lesen → Kontakt ohne Nummer anlegen; Impressum-Telefon → `Company.Phone` (nicht an Kontakt) |
| 4. LinkedIn DM | Letzter Ausweg | Als Alternative zu Kaltakquise wenn keine Nummer erreichbar |
**Apollo manuell via Chrome — konkrete Schritte:**
```
1. apollo.io/contacts aufrufen
2. Kontakt per Name + Firma suchen (ohne Umlaute falls nötig)
3. Kontaktseite öffnen
4. "Request phone number" Button klicken (kostet 812 Credits)
5. 1015 Sekunden warten (Nummer erscheint asynchron)
6. Nummer aus der Seite lesen (get_page_text, kein Screenshot)
7. Nummer in Phase-2-Excel eintragen (Zwischenspeicher!)
```
> Chrome-Fallback nur wenn MCP-Aufruf fehlschlägt oder 0 Ergebnisse zurückgibt — nicht als Standard-Weg nutzen, da langsamer und Credit-intensiver.
> Impressumsnummer / Zentrale → wird beim Company-Record in HubSpot gespeichert, nicht in der Apollo-CSV.
---
## Phase 4 — CRM einpflegen
**Ziel:** Alle Leads sauber in HubSpot mit Owner, Lifecycle Stage und direkter Telefonnummer.
**Owner-Alignment (Pflichtregeln):**
1. **Kontakte erben immer den Owner der Company** — nie manuell abweichen. Wenn die Company keinen Owner hat, zuerst Owner an die Company setzen, dann Kontakt anlegen.
2. **Nichts gefunden / Website down → kein Owner + UNQUALIFIED:**
- Company bleibt im CRM (verhindert Duplikate beim nächsten Durchlauf)
- Owner wird **nicht** gesetzt (kein Spam in der Inbox)
- `hs_lead_status = UNQUALIFIED` + ggf. kurze Notiz warum (z.B. "Website down 2026-05-14")
- Kein Kontakt anlegen für diese Company
> Regel: Owner im CRM = Owner bekommt Aufgaben. Wer kein Owner ist, bekommt auch nichts. Deshalb: lieber keinen Owner als den falschen.
**Domain-Check vor Company-Anlage (Pflichtschritt):**
Bevor eine Company angelegt wird, immer prüfen ob sie bereits im CRM existiert — dieselbe Firma kann unter verschiedenen Namen eingetragen sein. Domain ist der zuverlässigste Identifier:
```
HubSpot → Companies → Filter: domain = "domain.de"
→ Wenn Treffer: bestehenden Record aktualisieren, NICHT neu anlegen
→ Wenn kein Treffer: neu anlegen
```
**Companies anlegen (Claude automatisch):**
- Name, Domain, Website, Telefon Zentrale
- `lifecyclestage: lead`
- Owner aus `CRM_Config/OWNER_MAPPING.md`
**Contacts anlegen — zwei Schritte (Kontakt zuerst, Nummer danach):**
Schritt A — Kontakt mit verfügbaren Daten anlegen:
```
manage_crm_objects → createRequest:
firstname, lastname, jobtitle, email, hs_linkedin_url
lifecyclestage: lead
hubspot_owner_id: [gleicher Owner wie Company!]
associations: [{targetObjectId: [Company-ID], targetObjectType: "companies"}]
```
Schritt B — Direkte Nummer nachtragen (sobald über Apollo gefunden):
```
manage_crm_objects → updateRequest:
mobilephone: [direkte Nummer]
```
> Kontakt ohne Nummer ist besser als kein Kontakt. Schritt B kann später durch Apollo-Enrichment-Run ergänzt werden.
**Contacts via Apollo → HubSpot Push (Bulk-Weg):**
```
1. apollo.io → Contacts → Import → CSV aus 03_Apollo_Import/ hochladen
2. Mapping: Company Website → Company, Title → Title
3. Import bestätigen
4. Alle Kontakte selektieren → Bulk Actions → "Push to HubSpot"
⚠️ HubSpot Sync muss in Apollo CRM Settings aktiviert sein
```
---
## Zwischenspeicher-Regel (gilt für alle Phasen)
**Die Phase-2-Excel ist die einzige Wahrheit** — alle angereicherten Daten werden dort eingetragen, bevor sie ins CRM fließen.
| Phase | Was wird zurückgeschrieben? |
|-------|----------------------------|
| Phase 3 Schritt 1 | Name + LinkedIn-URL aus SalesNav |
| Phase 3 Schritt 2 | Direkte Telefonnummer aus Apollo |
| Phase 3 Schritt 3 | Impressumsnummer (Spalte „Telefon Zentrale") |
| Phase 4 | HubSpot Contact ID + Company ID nach Import |
> **Warum:** Bei Kontext-Abbruch (Session-Timeout, Browser-Crash) ist die Phase-2-Excel der Wiederherstellungspunkt. CRM-Import erst wenn alle Spalten gefüllt oder als „nicht gefunden" markiert sind. Keine Daten direkt vom Tool ins CRM ohne Zwischenspeicher.
---
## Folder-Struktur
```
00_Sales_Prozess/
├── PROZESS.md ← Diese Datei
├── 00_Inbox/ ← Phase 0: Einstiegspunkt
│ └── INBOX.md
├── 01_ICP_Cluster/ ← Phase 1: Cluster-Kriterien + Zielrollen
│ └── GENERIO_Kundencluster.xlsx
├── 02_Lead_Research/ ← Phase 2 Output: Firmen-Excel
│ └── [Branche]_Sales_Pipeline_[REGION]_[JAHR].xlsx
├── 03_Apollo_Import/ ← Phase 3 Output: Apollo CSV für Nummern
│ └── [Branche]_Apollo_Import_[DATUM].csv
├── CRM_Config/ ← Owner-Mapping + HubSpot-Konfiguration
│ └── OWNER_MAPPING.md
├── skill/ ← Claude-Skill-Dateien
│ ├── SKILL.md
│ └── inbox_SKILL_PATCH.md
└── Templates/
├── Lead_Pipeline_TEMPLATE.xlsx
├── Apollo_Import_TEMPLATE.csv
└── LinkedIn_SalesNav_TEMPLATE.xlsx
```
---
## Prozess starten
```
„Finde mir [ANZAHL] Firmen aus [BRANCHE] — Region: [REGION]"
```
Claude übernimmt automatisch: Phase 1 lesen → Phase 2 recherchieren → Phase 3 SalesNav + Apollo CSV → Phase 4 CRM anlegen. Fertig wenn Ansprechpartner mit direkter Telefonnummer im CRM stehen.
---
## Bestehende Pipelines (Stand Mai 2026)
| Datei | Branche | Leads |
|-------|---------|-------|
| Leads_Commerce_DACH_2026.xlsx | FMCG & Retail Commerce | 300 |
| FMCG_Sales_Pipeline_DACH.xlsx | FMCG Hersteller | ~50 |
| Leads_3D_Druck_DACH_2026.xlsx | 3D-Druck DACH | ~200 |
| Leads_3D_Druck_DACH_2026_200weitere.xlsx | 3D-Druck Erweiterung | 200 |
| Generio_Sales_Pipeline_Haendler_v2.xlsx | Händler / Mittelhändler | 51 |
| Generio_Sales_Pipeline_Aquaristik.xlsx | Aquaristik | ~50 |
| Generio_Sales_Pipeline_Tier_Pflanzen_50.xlsx | Tier & Pflanzen | 50 |
| LinkedIn_SalesNav_Recherche.xlsx | Multi-Branche SalesNav | 76 |
> Altstruktur: `Leads & Companies/`. Neue Pipelines → `02_Lead_Research/`.