diff --git a/jlc-vertrieb-mittelstand/.claude-plugin/plugin.json b/jlc-vertrieb-mittelstand/.claude-plugin/plugin.json new file mode 100644 index 00000000..7b40fce9 --- /dev/null +++ b/jlc-vertrieb-mittelstand/.claude-plugin/plugin.json @@ -0,0 +1,22 @@ +{ + "name": "jlc-vertrieb-mittelstand", + "version": "1.0.0", + "description": "B2B sales for the German Mittelstand — cold-outreach waves, trigger-based lead identification, sniper accounts, and a battle-tested cold-mail tuning pattern. Built by a BAFA-funded consultant in DACH for manufacturing accounts (30-250 employees).", + "author": { + "name": "Lepper Consulting", + "url": "https://lepperconsulting.de" + }, + "homepage": "https://github.com/janjotel/jlc-vertrieb-mittelstand", + "license": "MIT", + "keywords": [ + "sales", + "b2b", + "mittelstand", + "dach", + "outreach", + "cold-email", + "cold-call", + "trigger-based-selling", + "manufacturing" + ] +} diff --git a/jlc-vertrieb-mittelstand/.gitignore b/jlc-vertrieb-mittelstand/.gitignore new file mode 100644 index 00000000..b735bf0a --- /dev/null +++ b/jlc-vertrieb-mittelstand/.gitignore @@ -0,0 +1,22 @@ +# Local settings (user-specific, should not be committed) +settings.local.json +.claude/settings.local.json +**/.claude/settings.local.json + +# OS +.DS_Store +Thumbs.db + +# Editors +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# Node / Python misc (in case the user adds tooling later) +node_modules/ +__pycache__/ +*.pyc +.venv/ +venv/ diff --git a/jlc-vertrieb-mittelstand/LICENSE b/jlc-vertrieb-mittelstand/LICENSE new file mode 100644 index 00000000..922971b5 --- /dev/null +++ b/jlc-vertrieb-mittelstand/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Lepper Consulting + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/jlc-vertrieb-mittelstand/README.md b/jlc-vertrieb-mittelstand/README.md new file mode 100644 index 00000000..2e672a97 --- /dev/null +++ b/jlc-vertrieb-mittelstand/README.md @@ -0,0 +1,74 @@ +# JLC Vertrieb Mittelstand — Cold-Outreach + Trigger-Based Selling for German B2B + +A Claude plugin built for solo consultants and small sales teams running B2B outreach into the German **Mittelstand** (manufacturing SMEs, 30-250 employees, DACH region). Encodes the patterns that a BAFA-funded sales consultant in DACH refined across ~4 months of weekly outreach waves into roughly 60 manufacturing accounts. + +It is not a generic sales plugin. It is opinionated about: + +- **Wave-based cold outreach** — small, named, weekly batches (5-10 accounts) instead of bulk sequences +- **Trigger-driven lead identification** — fresh hooks (new VP Sales, hiring signals, funded news) over evergreen lists +- **Sniper accounts** — 2-3 named ICP fits per cycle with a per-account hand-built first touch, not a template merge +- **A tuning pattern** for cold mail that survived contact with real prospects — region-anchored, pain-first, brand-word prominent + +## Why this plugin + +Most sales tooling assumes a US-style funnel: high-volume sequencing, generic personalization tokens, CRM-first. That does not fit the DACH Mittelstand. German manufacturing buyers respond to: regional proximity, named pain with a verifiable source, a clear competence anchor, and an unhurried CTA. + +This plugin captures the cadence, gates, and tuning rules built by a solo consultant with a B2B sales background (large industrial OEMs, 20+ years) and four months of live outreach iteration. It is offered as a contribution to the `anthropics/knowledge-work-plugins` catalogue so other solo consultants and small sales teams in DACH can start from a tested baseline rather than a blank template. + +## What's inside + +Four skills, each loaded automatically when relevant: + +| Skill | Triggers when you say… | +|---|---| +| `cold-outreach-welle` | "build wave 7", "next outreach batch", "10 prospects this week" | +| `trigger-pipeline` | "find leads from this week's news", "VP-sales hiring signals", "trigger-based prospecting" | +| `sniper-leads` | "3 named accounts to chase", "top ICP fits in my region", "build a sniper list" | +| `outreach-tuning` | "tune my cold mail", "v2 my draft", "this mail feels generic" | + +Plus: + +- `examples/` — wave template, trigger types, pre-send checklist +- `docs/` — installation and end-to-end workflow + +## Installation + +### Cowork + +Install from [claude.com/plugins](https://claude.com/plugins/) once this plugin is added to a marketplace — or sideload by pointing Cowork at this repository directory. + +### Claude Code + +```bash +# Add a marketplace that includes this plugin, then: +claude plugin install jlc-vertrieb-mittelstand +``` + +Once installed, skills fire automatically when their triggers appear in conversation. No slash commands — the plugin is skills-only. + +## Making it yours + +Three things you will want to override: + +1. **Your region anchor.** The skills reference "your region" rather than a specific city. Drop your actual region/city into a `settings.local.json` and the skills will consume it. +2. **Your competence anchor.** The substance line at the close of every cold mail (years in industry, certifications, references) is yours, not ours. +3. **Your ICP.** The hard gates here are calibrated for manufacturing SMEs 30-250 FTE in DACH. If you sell into a different segment, edit the gates in `skills/sniper-leads/SKILL.md` and `skills/cold-outreach-welle/SKILL.md`. + +A starter `settings.local.json` example is included in `docs/installation.md`. + +## What this plugin is NOT + +- **Not a sequencer.** It does not send mail. It produces drafts you review and send manually. (Cold outreach into the Mittelstand rewards low volume + high care.) +- **Not a CRM.** It assumes you already track leads somewhere — Notion, a spreadsheet, anywhere. +- **Not enrichment.** It works fine alongside enrichment tools but does not depend on them. +- **Not US-style high-volume.** The cadence caps at ~30 cold touches per week per consultant. The patterns break above that. + +## Author + +[Lepper Consulting](https://lepperconsulting.de), Ravensburg/DACH. BAFA-certified sales consultant for the German Mittelstand. Background: 20+ years B2B sales at large industrial OEMs. + +This plugin is an open-source contribution to the Anthropic knowledge-work-plugins catalogue — same shape as the official `sales` plugin, but opinionated for the DACH Mittelstand segment that the generic plugin does not cover. + +## License + +MIT — see [LICENSE](LICENSE). diff --git a/jlc-vertrieb-mittelstand/docs/installation.md b/jlc-vertrieb-mittelstand/docs/installation.md new file mode 100644 index 00000000..66f6957b --- /dev/null +++ b/jlc-vertrieb-mittelstand/docs/installation.md @@ -0,0 +1,94 @@ +# Installation + +## In Claude Cowork + +If this plugin has been added to a marketplace you've subscribed to: + +1. Open Cowork +2. Settings → Plugins → install `jlc-vertrieb-mittelstand` + +If you want to sideload from a local clone: + +1. Clone this repository +2. In Cowork: Settings → Plugins → Add local plugin → point at the cloned directory + +The skills register automatically. No restart needed. + +## In Claude Code + +```bash +# Add the marketplace (replace with your marketplace if different) +claude plugin marketplace add [your-marketplace] + +# Install +claude plugin install jlc-vertrieb-mittelstand +``` + +Verify: + +```bash +claude plugin list +``` + +You should see `jlc-vertrieb-mittelstand` with four skills. + +## Configuration + +The plugin needs three pieces of personalization to produce useful output. Create a `settings.local.json` in any folder Cowork has access to (or at `jlc-vertrieb-mittelstand/.claude/settings.local.json` for Claude Code): + +```json +{ + "consultant": { + "name": "Your Name", + "brand": "Your Consultancy", + "region": "Your City / Region", + "brand_word": "Your tagline — e.g. 'Vertrieb neu denken'", + "substance_anchor": "20+ years B2B sales at [reference industry OEM], [certification], [optional]", + "calendar_link": "https://your-booking-link", + "language": "de" + }, + "icp": { + "industries": ["machine building", "tooling", "metalworking", "plastics"], + "fte_min": 30, + "fte_max": 250, + "regions": ["DACH", "specific sub-region if narrower"] + }, + "volume_cap": { + "cold_touches_per_week": 30 + } +} +``` + +The plugin reads these values into its skills automatically. If `settings.local.json` is absent, the skills will ask interactively the first time they fire. + +## Settings precedence + +1. `settings.local.json` in the active Cowork folder (highest) +2. `settings.local.json` in `~/.config/jlc-vertrieb-mittelstand/` +3. `jlc-vertrieb-mittelstand/.claude/settings.local.json` (Claude Code default) +4. Interactive prompt (lowest — only when nothing else is found) + +## Troubleshooting + +**Skills don't fire when expected.** +Skill triggers are matched against your conversation. If you say "build outreach" the wave skill should fire; if it doesn't, try "build wave 7" or "next outreach batch" — the wave-language is what the skill listens for. + +**Drafts come back generic.** +Check that `consultant.region` and `consultant.brand_word` are set in your settings. The V2 pattern depends on both being non-empty. The skill won't refuse to run without them — it will just produce template-quality output. + +**ICP gates feel too tight.** +The gates are calibrated for manufacturing SME (30-250 FTE) in DACH. If you sell into a different segment, override in `settings.local.json` under `icp` — the skills consume those values. + +**The plugin asks for things that should be set in settings.** +That's a fallback when `settings.local.json` is missing or under-filled. Answer once, then save the answers into `settings.local.json` so the prompt doesn't repeat. + +## Uninstall + +```bash +# Claude Code +claude plugin uninstall jlc-vertrieb-mittelstand +``` + +Or in Cowork: Settings → Plugins → toggle off. + +Your `settings.local.json` is left intact; remove it manually if you want a fully clean uninstall. diff --git a/jlc-vertrieb-mittelstand/docs/workflow-overview.md b/jlc-vertrieb-mittelstand/docs/workflow-overview.md new file mode 100644 index 00000000..680a5a80 --- /dev/null +++ b/jlc-vertrieb-mittelstand/docs/workflow-overview.md @@ -0,0 +1,113 @@ +# End-to-End Workflow + +How the four skills fit together for a typical week of outreach. + +## The weekly rhythm + +``` +Monday morning → trigger-pipeline (60-90 min) + Source 10-15 trigger hits, score against ICP, + short-list to 5-8 for the week's wave. + +Monday late morning → sniper-leads (60 min) + If 2-3 of the trigger hits score 9-10, + lift them out and treat them as snipers + instead of folding them into the wave. + +Mon-Tue afternoon → cold-outreach-welle (90-120 min) + Build 5-8 drafts for the wave. Each goes + through trigger-mining + email-verify + + V2 tuning before it lands in Drafts. + +Tuesday late → outreach-tuning (45-60 min) + Run every draft (wave + snipers) through + the 10-point checklist. Revise or drop. + +Wed-Thu → SEND (manual — the plugin never auto-sends) + 3-4 drafts per send-day, spaced across + Wednesday and Thursday. + +Friday → reply watch + log + Check bounces, reply triage. Log results + in your CRM/pipeline. Identify wave-level + patterns for next week. +``` + +Total operating cost: 5-7 hours per week of senior consultant time. + +Output: 5-10 cold touches per week + 2-3 sniper touches per week = ~10 cold-outreach touches sent per week, well under the 30-per-week volume cap. + +## The skill-graph + +``` + ┌──────────────────────┐ + │ trigger-pipeline │ + │ (source leads) │ + └────┬─────────────────┘ + │ scored, ICP-filtered candidates + │ + ┌────────┴───────────┐ + │ │ + v v + ┌──────────────────┐ ┌──────────────────┐ + │ cold-outreach- │ │ sniper-leads │ + │ welle (5-10) │ │ (2-3, hand-made)│ + └────┬─────────────┘ └────┬─────────────┘ + │ wave drafts │ sniper drafts + │ │ + v v + ┌──────────────────────────────┐ + │ outreach-tuning │ + │ (V2 audit, 10-point check) │ + └────┬─────────────────────────┘ + │ tuned drafts + v + USER (manual send) + │ + v + reply watch / next week's cycle +``` + +## What gets shared between skills + +- **ICP definition** — the hard gates (industry / size / region / group / reachable) are the same across all four skills. Define them once in `settings.local.json`. +- **Region anchor** — used by `cold-outreach-welle`, `sniper-leads`, and enforced by `outreach-tuning`. One value, three readers. +- **Brand word** — same: defined once, used everywhere. +- **Substance anchor** — same. + +## What stays per-skill + +- **Wave gates** are wave-specific (volume cap, 50%-template rule, send-day spread) +- **Sniper scoring** is sniper-specific (the 8+/10 threshold) +- **Trigger taxonomy** lives only in `trigger-pipeline` +- **The 10-point checklist** lives only in `outreach-tuning` + +## Typical pipeline math + +For a single-consultant practice running this rhythm steady-state: + +| Stage | Per week | Per month | +|---|---|---| +| Trigger hits sourced | 10-15 | ~50 | +| ICP-qualified (after gates) | 4-6 | ~20 | +| Drafts shipped (wave + sniper) | 5-8 | ~25 | +| Replies | 1-2 | 4-8 | +| Conversations booked | 0-1 | 2-4 | +| Audit-tier engagements | — | 1-2 | + +These are realistic working numbers for a B2B sales advisory practice in DACH Mittelstand. Above-average response weeks happen; below-average weeks also happen. Treat the monthly number as the trend. + +## When to break the rhythm + +- **Hot follow-up:** if a reply comes in mid-week, drop the rhythm and respond same-day. The plugin's cadence is for cold; warm conversations supersede. +- **Anniversary cluster:** if your region has 5+ T4 anniversaries in the same quarter, you can run a dedicated wave around that single trigger. +- **Live event:** if a trade show is happening in your region, build a pre-event wave to all attending Mittelstand SMEs in your ICP — the event itself becomes the anchor. + +## When to add tooling + +The standalone tier (browser + manual sourcing) works up to roughly 30 touches per week. Above that, expect tooling spend: + +- ~99 EUR/mo LinkedIn Sales Navigator at >50 candidates/week +- ~50-150 EUR/mo for a managed scraping channel (LinkedIn pages, press monitoring) at >100 candidates/week + +Do not buy tooling earlier — the patterns matter more than the volume in the first 3-6 months. diff --git a/jlc-vertrieb-mittelstand/examples/trigger-types.md b/jlc-vertrieb-mittelstand/examples/trigger-types.md new file mode 100644 index 00000000..3547f401 --- /dev/null +++ b/jlc-vertrieb-mittelstand/examples/trigger-types.md @@ -0,0 +1,95 @@ +# Trigger Types — Field Reference + +The four trigger types the `trigger-pipeline` skill works with, with worked sourcing notes and example signals. + +## T1 — New leadership <90 days + +The strongest trigger in DACH Mittelstand B2B sales advisory. A new VP Sales, Head of Sales, or General Manager in their first 90 days is statistically the most receptive buyer profile for outside sales-process help. + +**Receptivity window:** Sharp curve. Day 0-30: very high. Day 30-90: high. Day 90-120: noticeable drop. Day 120+: indistinguishable from cold outreach with no trigger. + +**Sourcing channels:** + +- LinkedIn search filtered to role + region + "started in [current quarter]" +- Press releases announcing appointments (Mittelstand companies often issue these for VP-level hires) +- Trade-press personnel sections (most industry outlets run a "Personalien" column) +- Google Alerts on `"hat ... als Vertriebsleiter" OR "neuer Geschäftsführer"` + your region + +**Verification:** Cross-check LinkedIn start-date against the press release / company announcement. Don't trust the "I'm honored to share I've started…" post date — it can lag the actual start by 30-60 days. + +**Example signal:** "M. P. became Managing Director of Sondermaschinenbau-Group B in January 2025. Source: company press release dated 14 Jan 2025." + +## T2 — VP Sales / Head of Sales role open 8+ weeks + +A role posted and unfilled at 8 weeks signals genuine capacity strain. Either the search is hard (small specialist market) or the role is being rewritten (organizational uncertainty). In both cases, an outside advisor can carry meaningful weight in the interim. + +**Receptivity window:** Open-ended while the role is open. Closes immediately on hire. + +**Sourcing channels:** + +- LinkedIn Jobs filtered to role + region + posting date >8 weeks ago +- Company career pages (some Mittelstand SMEs don't list on LinkedIn — check directly) +- Indeed, Stepstone, regional job boards +- Personalverbund — chamber-of-commerce job-listing aggregations in some regions + +**Verification:** Confirm the role is still active. Roles sometimes stay listed after being filled. Check the company's careers page directly, not the third-party aggregator. + +**Example signal:** "Toolmaker A's VP Sales role has been listed on their careers page since March 4. As of May 25, that's 12 weeks open." + +## T3 — Funded initiative (public) + +A publicly announced transformation budget — digital transformation, sales modernization, ERP migration with a sales component — signals committed money and a gatekeeper with authority. Often more workable than T1 for larger-side Mittelstand (150-250 FTE) where the new VP may not yet have budget signing authority. + +**Receptivity window:** 6 months from public announcement. After that, vendors are usually locked in. + +**Sourcing channels:** + +- Trade press (`Produktion`, `markt&mittelstand`, regional industry publications) +- Government / EU funded-project databases (especially for Mittelstand transformation grants) +- LinkedIn announcements from CFOs and CIOs (less common but high-signal when they fire) +- Chamber-of-commerce quarterly reports + +**Verification:** Confirm the initiative is genuinely funded (not just a press release of intent). Press releases often precede actual budget signoff by a quarter. + +**Example signal:** "Drives Manufacturer C announced their NL showroom + service hub opening on 14 April 2026, with public reference to expanding industrial sales channels alongside the traditional segment." + +## T4 — Milestone anniversary + +The softest trigger. Anniversaries — 25, 50, 75, 100 years — open a year-long storytelling window. Companies often invest in modernization to mark the occasion. Less universally applicable than T1/T2/T3 but useful for filling out a wave when T1 is dry. + +**Receptivity window:** 12 months around the anniversary date. + +**Sourcing channels:** + +- Public registries (founding date + age math) +- Chamber-of-commerce member directories (some publish anniversary calendars) +- Company "About us" pages +- Local press, especially for round-number anniversaries (regional papers cover these) + +**Verification:** Match the founding year against multiple sources. Some companies have "founded in 1934" on their website but the legal entity dates to a 1981 restructuring. + +**Example signal:** "Toolmaker A founded in 1964 → 60-year anniversary in 2024 → likely investment cycle 2025-2027." + +## Trigger-mix discipline + +A healthy pipeline carries a mix of trigger types across waves. Single-trigger pipelines fail when the source dries up. Rough target distribution across a quarter: + +- T1: 40-50% of pipeline (highest receptivity, source-dependent) +- T2: 20-30% (steady, depends on regional job market) +- T3: 15-20% (slow-moving, high-value) +- T4: 10% (filler, never the primary) + +If T1 drops below 30% for two consecutive months, expand sourcing — typically by adding a LinkedIn channel or a new trade-press feed. + +## Trigger half-lives (field observations) + +Rough field observations from one practice across ~4 months and ~60 accounts. Small sample — treat as starting hypotheses, not fixed numbers. + +| Trigger | Receptivity at day 30 | At day 90 | At day 180 | +|---|---|---|---| +| T1 new leadership | High | High | Low | +| T2 open role | High (while open) | High (while open) | Drops to zero on hire | +| T3 funded initiative | High | High | Medium | +| T4 anniversary | Medium | Medium | Medium (year-long flat) | + +Calibrate against your own data after 20-30 sent touches per trigger type. diff --git a/jlc-vertrieb-mittelstand/examples/tuning-checklist.md b/jlc-vertrieb-mittelstand/examples/tuning-checklist.md new file mode 100644 index 00000000..ab21a61e --- /dev/null +++ b/jlc-vertrieb-mittelstand/examples/tuning-checklist.md @@ -0,0 +1,78 @@ +# Pre-Send Tuning Checklist + +The 10-point check every cold mail goes through before it ships. Same checklist the `outreach-tuning` skill runs — print this once and tape it next to your screen. + +## The 10 points + +``` +SUBJECT +[ ] 1. Subject is ≤ 60 characters +[ ] 2. Subject contains the region anchor OR the named pain stub +[ ] 3. Subject does NOT use fake "Re:" or "Fwd:" prefixes + +BODY — STRUCTURE +[ ] 4. Paragraph 1 names a verifiable, company-specific pain + (with a date, URL, or quotable source) +[ ] 5. Region anchor sits in paragraph 1 or 2, not only the signature +[ ] 6. Brand word ("Vertrieb neu denken" or your equivalent) is in + subject or paragraph 1-2, prominent +[ ] 7. Substance anchor (years / certs / references) is at the END, + in a single sentence — not at the top + +BODY — LANGUAGE +[ ] 8. No buzzwords: "disruptive", "synergetic", "AI-powered", + "revolutionary", "next-generation", "best-in-class", + "transformative", "paradigm-shifting", "cutting-edge" +[ ] 9. German umlauts written properly (ä, ö, ü, ß) — never + "ae", "oe", "ue", "ss" (except in formal contexts where + "ß" → "ss" by convention) + +CTA +[ ] 10. CTA is ≤ 20 minutes, names 2 specific slots OR provides a + booking link, and makes "no" easy to say +``` + +## Two-or-more fails = back to scratch + +A draft with 1 fail can be tuned. A draft with 2 or more fails is structurally off — re-draft from the template (`welle-template.md`) rather than patching. + +## Wave-level audit pattern + +When auditing a full wave (5-10 drafts), look for **pattern fails**, not just per-draft fails: + +- 3+ drafts have the substance at the top → template issue, fix the template not the drafts +- 3+ drafts have a hidden region anchor → sender habit, address with a personal note +- 3+ drafts have weak pain hooks → sourcing issue, expand the trigger pipeline +- 3+ drafts have over-long subjects → subject-formula issue, tighten the formula + +Surface these as wave-level findings, not individual fixes. + +## Pre-send addenda (not in the 10 points but check anyway) + +- [ ] **Email address verified** via imprint, not guessed +- [ ] **Group screen** done — recipient is not a procurement-centralized subsidiary +- [ ] **Sent-check** — same recipient hasn't received outbound from you in the last 30 days +- [ ] **From-address consistency** — sending from the address that matches the brand and signature + +## Failure-rate observations + +Across ~60 wave drafts in the practice that produced this plugin, the typical failure rates before tuning were: + +| Check | Fail rate (first draft) | +|---|---| +| 1. Subject ≤ 60 chars | ~30% | +| 2. Subject contains anchor | ~40% | +| 4. Verifiable pain in paragraph 1 | ~25% (the hardest) | +| 5. Region anchor in body | ~50% (the most common fail) | +| 6. Brand word prominent | ~35% | +| 7. Substance at end | ~60% (the most stubborn habit) | +| 8. No buzzwords | ~20% | +| 10. Low-friction CTA | ~30% | + +After tuning (running every draft through the checklist before send), fail rates dropped near zero. The checklist is mechanical — the value is enforcing it. + +## How long the tuning step takes + +Per draft, fresh from generation: 5-10 minutes to run the checklist and revise. For an experienced sender, 3-5 minutes. The discipline of *always running it* is harder than the time cost. + +For a wave of 7-10 drafts: budget 45-60 minutes total for tuning. Less and you'll skip the substance-at-end check; more and you're over-polishing. diff --git a/jlc-vertrieb-mittelstand/examples/welle-template.md b/jlc-vertrieb-mittelstand/examples/welle-template.md new file mode 100644 index 00000000..e3ca3825 --- /dev/null +++ b/jlc-vertrieb-mittelstand/examples/welle-template.md @@ -0,0 +1,104 @@ +# Welle Template — Cold Mail V2 + +The default body template for a wave-shipped cold mail. Each draft inherits this skeleton; paragraph 1 is per-account, paragraphs 2-5 vary lightly. + +## Subject formula + +`[Region] → [Company]: [pain stub] + [brand word]` + +Max 60 characters. Examples (anonymized): + +- `[Region] → [Company]: KI-augmented Sales gegen [Pain]` +- `Aus [Region]: Vertrieb neu denken für [Company]` +- `[Region] → [Company]: [Pain] mit KI-augmented Sales adressieren` + +Anti-patterns to avoid in the subject: + +- `[Consultancy]: BAFA-funded sales advisory for the German Mittelstand` — substance at the top +- `Practitioner with 24 years of industry sales` — generic, substitutable +- `Introducing [Consultancy]` — about you, not the prospect + +## Body skeleton (5 blocks, in this order) + +``` +[Block 1 — Pain] (1-2 sentences, per-account) +Herr [LastName], + +[Open with the verifiable signal. Reference the source — a LinkedIn +post date, a press release, an open role, a trade-show event. +Do not invent — if no verifiable signal exists, this account does +not belong in the wave.] + +[Block 2 — Region anchor] (1-2 sentences) +Aus [Region], [Consultancy] arbeitet seit [N] Jahren mit fertigendem +Mittelstand in [region-specific subset] — Schwerpunkt +[industry-sub-segment, e.g. Sondermaschinenbau, Werkzeugbau, +Antriebstechnik] zwischen [size band]. + +[Block 3 — Solution frame with brand word] (1-2 sentences) +[Brand word]-Ansatz: [Vertrieb neu denken] — KI-augmented Sales als +Schicht auf Ihre bestehenden Werkzeuge (CRM, ERP, Office). Nicht +ersetzen, sondern härten. + +[Block 4 — Substance anchor] (1 sentence, short) +Hintergrund: [N] Jahre B2B-Vertrieb bei [reference industry OEMs], +[certification, e.g. BAFA-zugelassen], [optional third anchor]. + +[Block 5 — CTA] (1 sentence) +20 Minuten Sondierung in den nächsten zwei Wochen — passt für +[Company]? [Calendar link] oder Antwort mit Wunsch-Zeitfenster. + +Herzliche Gruesse aus [Region] +[Sender Name] +``` + +## Worked example (anonymized) + +**Subject:** `Bodensee → MachineCo: KI-augmented Sales gegen die 9-Tage-Trips` + +``` +Herr Schmidt, + +Ihr LinkedIn-Post vom 12. Mai über die 9-Tage-Vertriebs-Reise-Trips +ohne Pre-Trip-Lead-Priorisierung — genau dort sehe ich den scharfsten +Hebel. + +Aus Ravensburg arbeitet Lepper Consulting seit drei Jahren mit +fertigendem Mittelstand am Bodensee und in Sueddeutschland — Schwerpunkt +Sondermaschinen- und Anlagenbau zwischen 50 und 200 Mitarbeiter. + +JLC-Ansatz: Vertrieb neu denken — KI-augmented Sales als Schicht auf +Ihre bestehenden Werkzeuge. Nicht ersetzen, sondern härten. + +Hintergrund: 24 Jahre B2B-Vertrieb bei grossen Industrie-OEMs, +BAFA-zugelassener Berater, regionaler Industrieverband. + +20 Minuten Sondierung in den naechsten zwei Wochen — passt das fuer +MachineCo? Zeeg-Link: [...] oder Antwort mit Wunsch-Zeitfenster. + +Herzliche Gruesse aus Ravensburg +Jan Lepper +``` + +(Note: in a real mail, German umlauts are written properly — ä, ö, ü, ß — never "ae", "oe", "ue".) + +## Block-by-block fail patterns + +| Block | Common failure | Fix | +|---|---|---| +| 1 — Pain | Generic industry pain | Replace with verifiable signal + date + source | +| 2 — Region | Region in signature only | Move to first sentence of block 2 | +| 3 — Brand word | Buzzword frame | Replace with brand-word + plain frame | +| 4 — Substance | Substance at top | Keep at end, single sentence | +| 5 — CTA | "Let's schedule a meeting" | Name 2 specific slots OR provide a booking link | + +## Variants by trigger type + +- **T1 (new appointment):** Block 1 references the appointment date and what the new role-holder is likely solving in their first 90 days +- **T2 (open role 8+ weeks):** Block 1 references the open role and the revenue exposure of a prolonged gap +- **T3 (funded initiative):** Block 1 references the funded initiative + a question about how sales fits into the rollout +- **T4 (milestone anniversary):** Block 1 references the anniversary + a question about how modernized sales features into the celebration + +## Localization + +This template is German-language by default. For English-language outreach into DACH (e.g. UK / US subsidiaries), translate but keep the structure — pain first, region anchor, brand word, substance at end, low-friction CTA. The pattern works across languages; the German formulation is just the field-tested version. diff --git a/jlc-vertrieb-mittelstand/skills/cold-outreach-welle/SKILL.md b/jlc-vertrieb-mittelstand/skills/cold-outreach-welle/SKILL.md new file mode 100644 index 00000000..83781887 --- /dev/null +++ b/jlc-vertrieb-mittelstand/skills/cold-outreach-welle/SKILL.md @@ -0,0 +1,138 @@ +--- +name: cold-outreach-welle +description: Build the next cold-outreach wave for B2B Mittelstand prospecting. A "wave" is a small named batch of 5-10 accounts shipped together, not a sequence. Trigger when the user says "build wave N", "next outreach batch", "5-10 prospects this week", "build the next wave", or describes a small batch of manufacturing-SME accounts to write to. Produces per-account drafts that pass the V2 tuning checklist (region-anchor, named pain in first paragraph, brand-word prominent, substance anchor at end) — never a bulk sequence. +--- + +# Cold-Outreach Welle (Wave-Based Cold Outreach) + +A **Welle** ("wave") is a small named batch of cold-outreach drafts shipped together — usually 5-10 accounts in the same week, sharing the same ICP profile but with per-account personalization. Waves are the opposite of sequences: each draft is hand-built against a verified pain hook, then all of them ship within a few days. + +This skill produces a wave when the user describes a batch they want to write. It enforces the gating rules a small DACH B2B sales practice refined across four months of weekly waves. + +## When to fire + +Trigger on phrases like: + +- "build wave 7" +- "next outreach batch" +- "10 prospects this week from [region/segment]" +- "I have these [N] accounts — write cold mails for them" +- "build the next welle" +- "outreach drafts for [ICP segment]" + +Do NOT fire for: + +- Single ad-hoc cold mails (use the parent `sales:draft-outreach` skill instead — this skill is wave-specific) +- LinkedIn DM drafting (separate channel — see `outreach-tuning`) +- Reply drafting on existing threads + +## Inputs the user owes you + +Before producing drafts, confirm: + +1. **Wave number / label** — for logging ("Wave 7, KW 24/2026") +2. **Target segment** — industry, employee band, geography +3. **Account list** — names of accounts the user has already pre-vetted, OR a request to source them (then use the `trigger-pipeline` skill first) +4. **Send window** — which days the user plans to send (this drives the order in which drafts are produced) + +If any of these are missing, ask in one combined question — don't drip-ask. + +## The wave gates (must pass before drafting starts) + +For every account on the list, verify: + +| Gate | Check | Action on fail | +|---|---|---| +| **HG-1 — Industry fit** | Manufacturing SME (machine building, tooling, plastics, metalworking, etc.) | Drop from wave | +| **HG-2 — Size fit** | 30-250 employees (below: too small for the typical engagement; above: parent-group risk and longer sales cycle) | Drop from wave | +| **HG-3 — Region fit** | Within the consultant's defined target region | Drop from wave | +| **HG-4 — Group check** | Not a subsidiary of a larger group with central procurement | Drop from wave; log as group-screened | +| **HG-5 — Working email** | Verified via imprint / DNS / WHOIS — generic `info@` for group domains is a bounce trap | Replace address or drop | + +If 2+ accounts get dropped on any single gate during sourcing, suggest a wider sourcing pass (use `trigger-pipeline`) rather than padding the wave with weak fits. + +## The V2 tuning checklist (every draft must pass before delivery) + +Every draft in the wave gets a 5-point check. If any single point fails, the draft goes back into tuning — it does not ship. + +- [ ] **Region anchor** in the subject OR first paragraph (not buried in the signature) +- [ ] **Named pain** in the first paragraph (specific to this company, sourced from a verifiable signal — LinkedIn post, press release, hiring page, trade-show schedule, M&A news). Generic industry-pain is a fail. +- [ ] **Brand word** ("[your-brand way of saying it]" — e.g. "Vertrieb neu denken") prominent in subject OR first paragraph, not hidden mid-body +- [ ] **Substance anchor** (years of background, certifications, named references) **at the END**, kept short. Substance anchors at the top read as generic-consultant. +- [ ] **Subject ≤ 60 characters**, no clickbait, no fake `Re:` / `Fwd:` tricks + +See `examples/welle-template.md` and `outreach-tuning/SKILL.md` for the full V2 pattern. + +## Output format + +For each account in the wave, deliver: + +```markdown +### [Account #N]: [Company Name] ([City], [Employees]) +**Send day:** [Mon/Tue/Wed] +**Recipient:** [First Last, Role] — [verified email] +**Pain hook:** [1-line summary of the verifiable signal, with source + date] + +--- + +**Subject:** [≤60 chars, region + pain stub + brand word] + +**Body:** +[Paragraph 1 — Pain, in 1-2 sentences, naming the verifiable signal] + +[Paragraph 2 — Region anchor + brand word + 1-line value frame] + +[Paragraph 3 — Substance anchor, short] + +[Paragraph 4 — CTA: low-friction 20-minute slot, named days/times if known] + +--- +``` + +After all accounts, output a **wave summary table**: + +```markdown +| # | Company | City | MA | Send day | Pain source | +|---|---|---|---|---|---| +| 1 | … | … | … | … | … | +``` + +And a **disqualification log** (companies that were sourced but dropped, with reason — useful for the user's wiki/audit). + +## What this skill does NOT do + +- Does **not** auto-send. All output is draft-only. The user reviews and clicks send manually. +- Does **not** invent pain hooks. If a verifiable signal cannot be found for an account, the account is dropped from the wave, not "filled in" with generic industry pain. +- Does **not** exceed ~10 accounts per wave. Larger batches lose the per-account specificity that makes the pattern work. +- Does **not** template more than 50% of the body. Each draft must have a per-company first paragraph; only the region/substance/CTA blocks may be reused. + +## Companion patterns + +Two helper patterns ship alongside this skill: + +- `pattern-trigger-mining.md` — how to source verifiable pain hooks (LinkedIn-page mining, press-release scraping, trade-show schedules) +- `pattern-pattern-verify.md` — how to verify a working email address before sending, to avoid the `info@group-domain.com` bounce trap + +## Volume cap + +Hard cap: **30 cold-outreach touches per consultant per week**, including this wave plus any cold calls and LinkedIn messages. The pattern breaks above that — drafts get generic, follow-ups slip, response quality drops. If the user pushes for more, push back: suggest a second wave next week instead. + +## Reply-watch cascade + +After the wave ships, set three watch points on the user's calendar (named explicitly so the user can copy them in): + +- **+5 working days** — first sweep for replies, opens, bounces +- **+10 working days** — second-touch decision window (shortened follow-up, single question) +- **+15 working days** — final classification (positive reply / negative reply / no reply → 30-day cold park) + +## Anti-patterns this skill blocks + +1. **Bulk personalization** — merge tags into the same template body. Fails the V2 check. +2. **Buzzword spam** — "disruptive", "synergetic", "AI-powered". Fails the substance check. +3. **`info@group-domain.com`** when a working `info@subsidiary-domain.de` exists. Bounces, wastes the wave. +4. **Hiding the region anchor** in the signature. Fails the V2 check. +5. **Front-loading the substance** ("As a consultant with 20 years of…"). Reads generic. Substance goes at the end. + +## Why waves and not sequences + +A sequence assumes the second and third touches do most of the work and the first touch only has to be inoffensive. The DACH Mittelstand inverts this: the first touch is where the prospect decides whether to read further at all. Sequences also normalize a generic-feeling first email, because the writer expects the follow-up to land. A wave forces every first touch to carry its own weight. diff --git a/jlc-vertrieb-mittelstand/skills/cold-outreach-welle/pattern-pattern-verify.md b/jlc-vertrieb-mittelstand/skills/cold-outreach-welle/pattern-pattern-verify.md new file mode 100644 index 00000000..1a7f9f6d --- /dev/null +++ b/jlc-vertrieb-mittelstand/skills/cold-outreach-welle/pattern-pattern-verify.md @@ -0,0 +1,51 @@ +# Pattern: Email-Address Verify Before Send + +A bounce kills the touch. Worse: a bounce on a generic `info@` to a group domain reveals to the recipient (if they ever see the bounced version) that the sender used a guessed address. Verify before send. + +## The bounce trap pattern + +| Symptom | Why it happens | Fix | +|---|---|---| +| `info@parent-group.com` bounces with "mailbox unavailable" | Group/holding domains often have no active inbox; mail is routed to subsidiaries | Find the subsidiary domain via the company imprint, send to `info@subsidiary-domain.de` | +| `info@brand.com` rejects "Recipient address rejected" | The `.com` version of a brand may not exist (only `.de`) | Check imprint for the active TLD | +| `info@subsidiary.com` returns "Unroutable address" | Domain exists, mail routing is disabled (showroom-only domain) | Find the operations-active subsidiary, e.g. `service@brand.com` | +| `info@company.de` returns "Domain does not exist" | The company has no web presence — typically a sub-50-FTE artisan operation | Drop from the wave; mark as phone-only contact | + +## The 60-second verify routine + +1. Open the company's **imprint / Impressum page** — by German law it lists a working contact address. Use exactly the address printed there. +2. Cross-check the **domain in the imprint** against the domain on the LinkedIn page. If they differ, the imprint wins. +3. Spot-check one MX record if there's any doubt: `dig +short MX [domain]` should return a real mail server, not `null`. +4. If the imprint lists a named role-address (`vertrieb@`, `kontakt@`), prefer that over `info@`. + +## When the verified address is a named individual + +If you can find the decision-maker's direct address (verified via imprint, signature on a press release, or a Sales Navigator export): + +- Send to the named address **only** if you have at least one prior soft touch (LinkedIn connection, mutual contact, prior signal). A first cold mail to a personal direct address can read as overreach. +- Otherwise, send to the role-address (`vertrieb@`, `info@`) and **mention the named individual in the body** ("Herr Schmidt"). The receptionist or assistant who routes mail will forward it, which is fine and often better than the cold-direct path. + +## Group-screen check (HG-4 from the wave gates) + +Before sending to `subsidiary-domain.de`, verify the subsidiary is **not** a procurement-centralized arm of a >500-FTE parent. Quick check: + +- Open the parent-group imprint → "About / Group structure" +- Or check the public registry / Bonität entry for the parent UID + +If the parent group is large (>500 FTE / >250m revenue), the subsidiary's purchasing flows through the parent and a small consulting engagement won't survive the procurement gate. Drop from the wave; log as "group-screened". + +## Anti-patterns + +1. **Sending to `info@` without imprint verification** — the most common cause of bounces in Mittelstand outreach +2. **Sending to a personal address without prior touch** — reads as overreach +3. **Re-sending to the same address after a bounce** without finding the corrected one — the bounce will repeat +4. **Skipping the group screen** because the subsidiary looks small — half the bounces in our test waves came from accounts that turned out to be subsidiaries of >2000-FTE groups + +## Recovery from a bounced send + +If a draft is sent and bounces: + +1. Find the corrected address per the routine above +2. Re-send within 24 hours from the same thread, with a one-line transparency note at the top: "Versuch Nr. 2 — Adressheilung über das Impressum" +3. Log the bounce + heal in the wave audit +4. Note the pattern in the next wave's gate-check so the same trap doesn't reappear diff --git a/jlc-vertrieb-mittelstand/skills/cold-outreach-welle/pattern-trigger-mining.md b/jlc-vertrieb-mittelstand/skills/cold-outreach-welle/pattern-trigger-mining.md new file mode 100644 index 00000000..9945bb8d --- /dev/null +++ b/jlc-vertrieb-mittelstand/skills/cold-outreach-welle/pattern-trigger-mining.md @@ -0,0 +1,70 @@ +# Pattern: Trigger Mining for Pain Hooks + +How to source the verifiable, per-account pain hook that anchors paragraph 1 of every cold mail in a wave. Without one, the account drops out — generic industry pain is not enough. + +## The five mining channels + +| Channel | What it surfaces | Freshness | Effort | +|---|---|---|---| +| **LinkedIn company page** | New leadership, opened roles, posted milestones, recent commentary | 30-day window | Low (1-2 min/account) | +| **Company press / news** | Funding, expansion, new product, anniversary, M&A | 90-day window | Medium | +| **Hiring pages** | Open VP Sales / Head of Sales role >8 weeks → capacity gap | Always-current | Low | +| **Trade-show schedules** | Booth presence, exhibition dates → outreach hook around the event | Per-event | Medium | +| **Bonität / public registry updates** | New subsidiary, ownership change, capital increase | Quarterly | Medium | + +## What counts as a verifiable hook + +A hook is verifiable if you can paste a URL + date next to it and a reader could check it in 30 seconds. + +**Good (verifiable):** + +> "Your LinkedIn post on 12 May about ramping up the second machining line in [region]." + +> "The press release from 04 April announcing the showroom opening in [country]." + +> "Your role for 'Vertriebsleiter' has been open since [date] — that's 11 weeks now." + +**Bad (not verifiable):** + +> "I noticed you're growing fast." — opinion, not a hook +> "The industry is under cost pressure." — generic +> "Digital transformation is reshaping manufacturing." — buzzword + +## The 90-second routine per account + +1. Open LinkedIn company page → scan last 30 days of posts +2. Open `[company-domain]/news` or `[company-domain]/presse` → last 90 days +3. Open `[company-domain]/karriere` → check for VP Sales / Head of Sales +4. If nothing surfaces: search `"[company name]" site:[trade-press-domain]` for one trade outlet relevant to the industry +5. If still nothing: **drop the account from this wave**. Do not invent. + +## The "no hook = drop" rule + +Roughly 30-40% of accounts you source will fail mining. That is the system working, not failing. Padding the wave with hookless accounts is what produces generic-feeling waves. + +## Source-attribution discipline + +For every shipped draft, log in the wave summary: + +- Hook one-liner +- Source (URL or "LinkedIn post by [name]") +- Date the source was published + +This becomes the audit trail when a prospect asks "how did you find me" — and they do ask. + +## Anti-patterns + +1. **Using a hook older than 90 days** — reads stale, breaks the freshness signal +2. **Using a hook from a parent group** ("[Group] announced…") when writing to a subsidiary — the recipient will note the disconnect +3. **Stacking multiple weak hooks** to compensate for not having one strong one — never works; readers latch onto the first sentence +4. **Citing an internal LinkedIn post the recipient might not have seen** — if it's an external press release or a public post, fine; if it's a re-share they made under a tiny audience, skip it + +## Tooling + +This skill stays tool-agnostic. Useful tools (any one is enough): + +- A general web-scraping framework (e.g. Apify rag-web-browser, Firecrawl) +- LinkedIn Sales Navigator for >50 accounts/week +- Trade-press alerts (Google Alerts, RSS for industry publications) + +Cost is meaningful at scale — pick one channel, use it well, expand only when the response rate justifies the spend. diff --git a/jlc-vertrieb-mittelstand/skills/outreach-tuning/SKILL.md b/jlc-vertrieb-mittelstand/skills/outreach-tuning/SKILL.md new file mode 100644 index 00000000..32fd1ab3 --- /dev/null +++ b/jlc-vertrieb-mittelstand/skills/outreach-tuning/SKILL.md @@ -0,0 +1,112 @@ +--- +name: outreach-tuning +description: Tune a cold-mail draft against the V2 pattern — region-anchored, named pain in paragraph 1, brand-word prominent, substance anchor at the end. Trigger when the user says "tune my cold mail", "v2 my draft", "this draft feels generic", "polish the outreach", "check my cold mail against the pattern", or pastes a draft asking for review. Returns a corrected draft plus a per-rule checklist showing what changed and why. +--- + +# Outreach Tuning — V2 Pattern + +A targeted skill for one job: take a cold-mail draft and tune it against the V2 pattern. Not for writing from scratch — that's `cold-outreach-welle` or `sniper-leads`. Use this when a draft already exists and feels off. + +The pattern emerged from a live observation: early outreach waves shipped drafts that **read as generic** even though they had personalization tokens. The fix was a small, opinionated re-ordering of the elements that survives contact with real Mittelstand readers. + +## When to fire + +Trigger on phrases like: + +- "tune my cold mail" +- "v2 my draft" +- "this draft feels generic" +- "polish the outreach" +- "check my cold mail against the pattern" +- "audit this draft" +- User pastes a cold-mail draft with no specific instruction → assume tuning is wanted + +## The V2 pattern in one paragraph + +Pain first (named, paragraph 1, with a verifiable source). Region anchor next (named city or region, in paragraph 2 or sometimes subject). Brand word ("Vertrieb neu denken" or the user's equivalent) prominent — subject or paragraph 2. Substance anchor (years in industry, certifications, references) **short, at the end**. CTA low-friction. Subject ≤ 60 characters. That's the whole pattern. + +## The checklist (run every draft through it) + +``` +[ ] 1. Region anchor in subject OR paragraph 1 (not buried in signature) +[ ] 2. Named, company-specific pain in paragraph 1 (with a source date / URL) +[ ] 3. Brand word ("[your brand-word]") prominent — subject or paragraph 1-2 +[ ] 4. Substance anchor (years / certs / references) at the END, short, 1 sentence +[ ] 5. Subject ≤ 60 characters +[ ] 6. No buzzwords ("disruptive", "synergetic", "AI-powered" etc.) +[ ] 7. CTA is low-friction (≤20 minutes, named days, easy "no") +[ ] 8. German umlauts written properly (ä, ö, ü, ß) — never "ae", "oe", "ue" +[ ] 9. Length: paragraph 1 + 2 fits on the first preview screen of typical mail clients +[ ] 10. No fake "Re:" or "Fwd:" prefix +``` + +A failed checkbox = revise. Two or more failed = the draft goes back to scratch, not just edited. + +## Anti-patterns this skill rewrites + +| Anti-pattern | What it looks like | How V2 fixes it | +|---|---|---| +| **Substance at the top** | "As a sales consultant with 24 years of experience at [OEM], I…" | Move to closing line; pain goes to paragraph 1 | +| **Generic industry pain** | "In the current cost-pressure environment, manufacturers face…" | Replace with one specific signal sourced to the company | +| **Hidden region** | "Best regards from [city]" in signature, never mentioned in body | Move region to paragraph 1 or subject | +| **Buzzword brand** | "AI-powered sales transformation platform" | Replace with brand-word ("Vertrieb neu denken") + plain-language frame | +| **High-friction CTA** | "Let's schedule a strategic alignment session" | "20 minutes next week — Mon 10:00 or Tue 14:00?" | +| **Subject > 60 chars** | "An introduction to [Consultancy]: BAFA-funded sales advisory for the German Mittelstand" | "[Region] → [Company]: [Pain stub] + [brand word]" | + +## Output format + +```markdown +## Tuning Result + +### Checklist +- [x] Region anchor: paragraph 2 → MOVED to subject +- [x] Named pain: paragraph 1 was generic → REPLACED with the LinkedIn-post anchor from [date] +- [x] Brand word: missing → ADDED to paragraph 2 +- [x] Substance at end: was at top → MOVED to penultimate paragraph +- [x] Subject ≤ 60 chars: was 78 → trimmed to 54 +- [x] Buzzwords: "transformative" → removed +- [x] CTA: vague → specific (two named slots) + +### Revised draft + +**Subject:** [revised subject] + +[Revised body] + +### Changes log +1. [What changed and why] +2. ... +``` + +## What to do when the draft can't be saved + +Some drafts fail too many checks to tune; they need re-writing. Symptoms: + +- No verifiable pain hook exists for this account → drop the account from the wave (use the `trigger-pipeline` skill to find a different account) +- Substance is the only differentiator the draft has → re-source the pain; substance alone doesn't open Mittelstand doors +- Subject and paragraph 1 both fail → start over from the wave-skill template + +When this happens, tell the user clearly: "This draft is below the threshold for tuning — recommend starting fresh from the template." Don't pretend a re-arranged draft will land. + +## Companion files + +- The V2 pattern itself is documented in `examples/welle-template.md` and `examples/tuning-checklist.md` +- The wave skill (`cold-outreach-welle`) enforces this pattern at write-time; this skill enforces it at review-time + +## Why this skill is separate from the wave skill + +The wave skill writes drafts. This skill audits drafts. The two failure modes are different: write-time failures show up as missing structure; review-time failures show up as drafts that are structurally fine but read wrong on second pass. Reviewing is a different job — closer to editing than writing — and the prompts have to be different to get good results. + +## Sample interactions + +**User:** *"Can you v2 this draft for me? [pastes draft]"* + +**Skill:** Run the 10-point checklist, produce a revised draft, list changes, flag anything that needed dropping vs editing. + +**User:** *"This feels generic but I can't tell why."* + +**Skill:** Diagnose against the 6 anti-patterns above, name the specific issue ("substance is at the top — move it to the end"), produce a revised version. + +**User:** *"Audit my wave-6 drafts."* + +**Skill:** Run the checklist across each draft, return a summary table per draft + per-draft revision suggestions. If 3+ drafts fail the same check, surface that as a wave-level pattern (e.g. "all 6 drafts have substance at the top — this is a template issue, not a per-draft issue"). diff --git a/jlc-vertrieb-mittelstand/skills/sniper-leads/SKILL.md b/jlc-vertrieb-mittelstand/skills/sniper-leads/SKILL.md new file mode 100644 index 00000000..dc116f9a --- /dev/null +++ b/jlc-vertrieb-mittelstand/skills/sniper-leads/SKILL.md @@ -0,0 +1,124 @@ +--- +name: sniper-leads +description: Build a "sniper" list — 2-3 named B2B Mittelstand accounts that score 8+/10 on the ICP gate AND carry a fresh trigger, each with a hand-built per-account first touch. Trigger when the user says "3 sniper accounts", "top ICP fits this week", "build a sniper list", "best 3 accounts to chase", or wants high-precision named-account targeting instead of a wave. Output includes per-account pain analysis, decision-maker map, approach path, and first-touch draft. +--- + +# Sniper Leads — Named-Account, High-Precision Outreach + +The sniper pattern is the opposite of the wave. A wave ships 5-10 drafts that share structure; a sniper list ships 2-3 drafts that share **no** structure — each one is hand-built end-to-end against everything the user knows about that single account. + +Use this skill when the user wants their highest-confidence accounts handled individually, not batched. + +## When to fire + +Trigger on phrases like: + +- "3 sniper accounts" +- "build a sniper list" +- "top ICP fits this week" +- "best 3 accounts to chase" +- "named-account targeting" +- "warm-cold hybrid" +- "GTM sniper — [date]" + +Do NOT fire for: + +- Wave-sized batches (5-10) → use `cold-outreach-welle` +- Pure cold-list sourcing (no pre-vetted candidates) → use `trigger-pipeline` + +## Inputs the user owes you + +1. **Candidate set** — typically 5-10 accounts the user has already noticed (Notion pipeline tagged `Active=YES, Status=Neu`, or a hand-curated list). Sniper-skill picks the top 2-3 from this set. +2. **Constraint set** — region, industry, anything off-limits +3. **Approach budget** — how much time the user has to invest in the touches (60 minutes for the batch is enough; 4 hours produces noticeably better drafts) + +## What "sniper" means + +Three commitments per account: + +1. **Decision-maker named by full name + role + tenure** — not "Geschäftsführer", not "Vertriebsleitung". If the name isn't reachable in 5 minutes of imprint + LinkedIn search, the account drops out. +2. **Pain hypothesis sourced from at least two independent signals** — a LinkedIn post AND a trade-press item, or a press release AND a chamber report. One-signal pain hooks belong in waves, not snipers. +3. **Approach path chosen explicitly** — cold-mail vs LinkedIn-DM vs phone vs hybrid. The choice is per-account, based on the decision-maker's surface (active on LinkedIn → DM; quiet online → mail; long-tenured founder type → phone with a personal-named opener). + +## Scoring (8+/10 to qualify as sniper) + +Each candidate scores out of 10: + +- **+3 if all hard gates pass** (industry / size / region / not-a-subsidiary / reachable) +- **+2 if the trigger is T1 or T2** from the `trigger-pipeline` taxonomy +- **+2 if there are at least 2 soft gates** firing (pressure signal, data asset, sales-background decision-maker, investment signal) +- **+1 if there's a regional or network bridge** (chamber, industry cluster, mutual contact) +- **+1 if the decision-maker is publicly visible** (LinkedIn-active, press-quoted, conference-speaker) +- **+1 if the engagement timing is right** (funded budget, fiscal-year start, mid-cycle for their typical buying season) + +Below 8 → don't sniper. Either route to a wave (if a working email exists) or back to the trigger pipeline. + +## Output format + +For each of the 2-3 selected accounts: + +```markdown +## #N — [Company Name] + +| Field | Content | +|---|---| +| **Company** | [Full name] · [Industry sub-segment] · [City], [Region] · [FTE] · founded [Year] | +| **Decision-maker** | [Name], [Role] (since [Year]) · [Contact path: phone / LinkedIn / verified email] | +| **Pain signal** | [Source #1 with date] + [Source #2 with date] | +| **ICP match** | **[Score]/10** — [terse list of which gates fire] | +| **Approach path** | [Cold-mail / LinkedIn-DM / Phone / Hybrid] — [why this choice for this DM] | +| **Funding story** | [How the engagement could be structured, including any applicable public funding mechanisms] | +| **First touch (draft)** | [Full draft of the first touch, in the chosen channel] | + +``` + +After the per-account blocks, produce a **batch overview table**: + +```markdown +| # | Company | Region | Industry | FTE | Score | Trigger | Approach | Send day | +|---|---|---|---|---|---|---|---|---| +``` + +And a **next-steps plan** for the user: + +- Per account: send-day + channel + follow-up date if no reply +- A fallback for each (if cold mail bounces / LinkedIn DM gets ignored) + +## Approach-path heuristics + +| Decision-maker profile | First touch | +|---|---| +| LinkedIn-active, posts about sales/revenue | LinkedIn DM (warm-cold hybrid) | +| LinkedIn-quiet, named in imprint | Cold mail to verified address, named in subject | +| Long-tenured founder/family GM, phone-listed | Phone call with a specific-anchor opener (a recent press item, an anniversary) | +| Recently appointed (T1 trigger) | Cold mail with the appointment as anchor, low-friction CTA | +| Multi-brand / multi-country company | Cold mail referencing the structural challenge (synchronization across brands, integration after acquisition) | + +## Risk register per account + +Sniper drafts include a 2-3-line risk register: what could make this account not respond, and what the fallback touch looks like. Examples: + +- "Decision-maker may filter outside-consultant requests by default → fallback via chamber-of-commerce referral or mutual-contact intro" +- "Multi-generational family business may be conservative about engaging consultants → fallback emphasizes regional / industry peer references and downplays methodology jargon" + +## Anti-patterns + +1. **Snipering 5+ accounts at once** — produces wave-quality, not sniper-quality. Cap at 3. +2. **Mass-personalization** — same body, different first paragraph. Fails the V2 check and reads as wave-grade mail. +3. **Hidden region anchor** — at sniper-level, the regional connection should be in the **first sentence** if any geographic proximity exists. +4. **Phone-first for online-active DMs** — the channel mismatch reads as "outside the loop" +5. **No risk register** — if you don't know what could go wrong, you don't know the account well enough yet + +## Typical pipeline value + +For a small consulting practice working DACH Mittelstand: + +- 3 snipers → 3 well-crafted touches → 1-2 conversations +- 1 conversation → typically 1 audit-tier engagement (small fixed scope) + 30-40% chance of follow-on operator engagement +- Across a quarter: 3 sniper batches → 18-25k revenue baseline + 30-50k follow-on potential + +These numbers are for a single-consultant practice. Scale up only by adding consultants, not by widening the sniper batch. + +## Companion files + +- `example-icp.md` — three anonymized example sniper accounts showing the full output shape (different industries, different approach paths, different decision-maker profiles) diff --git a/jlc-vertrieb-mittelstand/skills/sniper-leads/example-icp.md b/jlc-vertrieb-mittelstand/skills/sniper-leads/example-icp.md new file mode 100644 index 00000000..be9a896c --- /dev/null +++ b/jlc-vertrieb-mittelstand/skills/sniper-leads/example-icp.md @@ -0,0 +1,110 @@ +# Example: Sniper Batch — Three ICP Accounts (Anonymized) + +This is a worked example showing the output shape for a 3-account sniper batch. All names, regions, and details are pseudonymized. The patterns are real; the entities are not. + +--- + +## #1 — Toolmaker A GmbH + +| Field | Content | +|---|---| +| **Company** | Toolmaker A GmbH · stamping / drawing tools for automotive Tier-1 · regional city in the consultant's target region (15 km from base) · 51-100 FTE · founded 1964 | +| **Decision-maker** | M. A., Managing Director (in role 33 years, Dipl.-Ing. FH) · phone listed, named on imprint | +| **Pain signal** | (1) Trade-press feature, 18 March 2026, on the company's automotive-supply identity → highlights exact transition risk in BEV vs ICE stamping. (2) Regional chamber Q1/2026 economic report: "metal forming under sustained pressure, three years without growth visible in the segment." | +| **ICP match** | **9/10** — HG ✓✓✓✓✓ · SG: pressure-lage (E-mobility transition) · SG: data asset (long-running construction database) · SG: sales-background DM (33-year tenure → disciplined, not buzzword-receptive) | +| **Approach path** | **Cold mail** to imprint address with **named CC** to DM via LinkedIn-verified address. Region (15 km) is a strong anchor — mention proximity. Industry association membership is a credible bridge. | +| **Funding story** | Public sales-advisory funding scheme available at 50% subsidy in this region → small audit engagement structured as a 1-day check, low net cost to the prospect. Realistic engagement value: small audit then optional follow-on operator package. | +| **First touch (draft)** | **Subject:** `[Region] → [Toolmaker A]: Auto-Diversifizierung in der E-Mobility-Wende` | + +> Herr A., +> +> Ihr Trade-Press-Feature vom 18.03. — "in deutschen Autos fährt ein Stück [Stadt] mit" — markiert genau die Automotive-Konzentration, die in der BEV-Transition heute Ihr operativer Hebel ist. +> +> Aus [Region], 15 km von Ihnen, arbeitet [Consultancy] seit drei Jahren mit Werkzeug- und Sondermaschinenbau-Mittelstand am Bodensee/Oberschwaben — Fokus: Vertriebs-Diversifizierung jenseits der Automotive-Kette. +> +> Ansatz: **Vertrieb neu denken** — bestehende Pipeline gegen neue Branchen-Hypothesen testen (Konsumgüter, Weiße Ware, Medizintechnik), ohne das Stammgeschäft zu zerlegen. +> +> Hintergrund: 24 Jahre B2B-Vertrieb bei großen Industrie-OEMs, BAFA-zugelassener Berater, branchenverbundsnah über [Industry Association]. +> +> 20 Minuten Telko nächste Woche zur Vertriebs-Aufstellung — Mo 19.05. 10:00 oder Di 20.05. 14:00 wären offen. + +**Risk register:** + +- DM may filter outside-consultant inquiries by default → fallback via chamber-of-commerce sales-advisory referral +- 33-year tenure suggests strong gatekeeper-bypass discipline needed → name DM in subject, verify direct line via imprint + +--- + +## #2 — Sondermaschinenbau-Group B + +| Field | Content | +|---|---| +| **Company** | Sondermaschinenbau-Group B · custom machinery + machining + precision parts · three sites in the consultant's region (~30 km) · ~100 FTE · multi-brand structure after a 2016 acquisition | +| **Decision-maker** | M. P., GM of the merged brand (in role 01/2025, ~16 months) · LinkedIn-active · imprint + LinkedIn-verified path | +| **Pain signal** | (1) GM appointment 01/2025 → integration phase active, brand-synchronization workstreams visible from public org changes. (2) Investment signal: 1,200 m² additional hall opened in late 2025 — capacity expansion ahead of integrated sales motion. | +| **ICP match** | **9/10** — HG ✓✓✓✓✓ · SG: T1 trigger (GM appointment + acquisition + capacity investment — triple-signal) · SG: data asset (three sites → ERP/CRM fragmentation likely) · SG: investment signal | +| **Approach path** | **LinkedIn DM** to M. P. directly (warm-cold hybrid — DM is LinkedIn-active and within the first 18 months of the new role, when receptivity is highest). Industry-cluster membership is a credible bridge. | +| **Funding story** | Public sales-advisory funding available at 50% in this region → multi-site sales audit fits the 1.5-day scope. Follow-on potential: CRM consolidation across three sites under one brand. | +| **First touch (draft)** | **LinkedIn DM** | + +> Hallo Herr P., +> +> gratuliere zur 16-Monats-Marke als GF des integrierten Geschäfts. Drei Standorte unter einer Brand vertriebsstrategisch zu synchronisieren ist ein Pattern, das bei großen Industrie-OEMs regelmäßig auftaucht — gerade wenn der Brand-Mix Luftfahrt + Automotive + Sondermaschinenbau dahintersteht. +> +> [Consultancy] sitzt in [Region], ich bin praktisch in der Nachbarschaft zu Markdorf. Ansatz: **Vertrieb neu denken** — die drei Vertriebsmotionen entkoppeln und gegen die Brand-Identitäten kalibrieren. +> +> 20 Minuten Sondierung nächste Woche? Mo 19.05. 14:00 oder Mi 21.05. 09:30 wären offen. + +**Risk register:** + +- LinkedIn DM may sit unread if M. P. is in heavy operations phase → 5-WD fallback to cold mail at imprint address, same anchor +- Industry-cluster mention must be verifiable (membership directory) — otherwise reads as name-dropping + +--- + +## #3 — Drives Manufacturer C + +| Field | Content | +|---|---| +| **Company** | Drives Manufacturer C · drive technology (shaft gears, electric rack-and-pinion drives, manual shaft drives) · regional city (~50 km from consultant's base, edge of target region) · ~120 FTE · 5th-generation family business (founded 1844) · subsidiaries NL + USA + China | +| **Decision-maker** | F. L., GM (in role since 2002, 5th generation) · imprint phone + email + LinkedIn (low-frequency) | +| **Pain signal** | (1) Public statement on industry diversification — moving from traditional horticulture/agriculture niche into broader industrial-machine drive applications. (2) April 2026: new showroom + service hub opened in the Netherlands → fresh expansion signal, dated. | +| **ICP match** | **8/10** — HG ✓✓✓✓✓ · SG: pressure-lage (diversification toward industrial drive markets) · SG: data asset (construction + ERP heritage across decades) · SG: investment signal (NL showroom 04/2026) · SG: long-tenured DM (24 years) | +| **Approach path** | **Cold mail** with NL-showroom as anchor + 5th-generation-family register (substance-led, not buzzword-led). Regional chamber as common ground. | +| **Funding story** | Public sales-advisory funding at 50% subsidy → internationalization-audit scope (DE/NL/USA pipeline consolidation). Follow-on potential: CRM expansion and industrial-channel sales setup. | +| **First touch (draft)** | **Subject:** `[Region] → [Drives C]: NL-Showroom + Industriediversifikation` | + +> Sehr geehrter Herr L., +> +> ich habe die Eröffnung Ihres Showrooms im NL-Cluster im April gesehen — strategischer Move für die NL-Pipeline. Genau diese Industriediversifikation neben dem klassischen Stammmarkt ist ein Vertriebs-Pattern, das bei Familienunternehmen oft an einer einzigen Stelle hakt: an der Pipeline-Trennung zwischen Bestandskunden und neuen Industriekunden. +> +> Aus [Region] arbeitet [Consultancy] mit fertigendem Mittelstand am Bodensee — Fokus auf KI-augmented Sales als Schicht auf bestehende CRM-/ERP-Werkzeuge. +> +> Ansatz: **Vertrieb neu denken** — zwei getrennte Pipelines, gemeinsame Datenbasis, ohne das gewachsene Stammgeschäft anzufassen. +> +> Hintergrund: 24 Jahre B2B-Vertrieb bei Industrie-OEMs, BAFA-zugelassen, regionaler Industrieverband. +> +> 20 Min Telko nächste Woche zu Ihrer Vertriebsstruktur? Mo 19.05. 11:00 oder Do 22.05. 09:00. + +**Risk register:** + +- 5th-generation family business may be conservative on consultant intake → reference regional press + industry association rather than methodology jargon +- Edge-of-region (50 km) means proximity anchor is weaker → emphasize industry / generation signal instead + +--- + +## Batch overview + +| # | Company | Region | Industry | FTE | Score | Trigger | Approach | Send day | +|---|---|---|---|---|---|---|---|---| +| 1 | Toolmaker A | 15 km | Tooling | 51-100 | 9 | Press feature + chamber report | Cold mail + named CC | Mon | +| 2 | Sondermaschinenbau-Group B | 30 km | Custom machinery | ~100 | 9 | GM appointment + acquisition + hall | LinkedIn DM | Mon | +| 3 | Drives Manufacturer C | 50 km | Drive tech | ~120 | 8 | NL showroom + diversification | Cold mail | Tue | + +## Next steps + +- **Toolmaker A:** Send Mon 09:30. Fallback if no reply by Fri: chamber-of-commerce referral path. +- **Sondermaschinenbau-Group B:** Send Mon 11:00 (LinkedIn). If no reply within 5 WD → cold mail to imprint with same anchor. +- **Drives Manufacturer C:** Send Tue 09:00. Fallback if no reply by Fri: NL-showroom angle via LinkedIn comment under their public post about the opening. + +All three have realistic conversion paths to small audit engagements; one or two would naturally extend into a multi-month operator follow-on. diff --git a/jlc-vertrieb-mittelstand/skills/trigger-pipeline/README.md b/jlc-vertrieb-mittelstand/skills/trigger-pipeline/README.md new file mode 100644 index 00000000..0d4cf5fb --- /dev/null +++ b/jlc-vertrieb-mittelstand/skills/trigger-pipeline/README.md @@ -0,0 +1,44 @@ +# trigger-pipeline — Reference Notes + +Internal notes the skill draws on. Not loaded automatically — Claude reads this only if the user asks for the rationale behind a specific gate or trigger. + +## Why these four triggers, not others + +The four triggers — new leadership, open VP role, funded transformation, milestone anniversary — emerged from 80+ research entries plus 4 months of operational pipeline. They share three properties: + +1. **Verifiable** — a URL, a date, and a name can be pasted into the cold mail's first paragraph +2. **Time-boxed** — there's a window after which the receptivity drops (90 days, role-open duration, 6 months post-funding, 12 months around the anniversary) +3. **Mittelstand-typical** — these signals fire frequently enough in 30-250-FTE manufacturing to sustain a 10-15-hit-per-week pipeline + +Other triggers we tested and dropped from the priority list: + +| Trigger we tested | Why we dropped it | +|---|---| +| New website launch | Too vague — could mean anything from a vendor refresh to a strategic pivot | +| New office opened | Often a press release without operational substance | +| Sustainability commitment | High noise — every company has one; signal is weak | +| Patent filing | Indicates innovation, not buying receptivity | +| Job postings (other than VP Sales / Head of Sales) | High volume, low specificity | + +## Why 90 days for the leadership trigger + +Field data from this practice across 4 months and ~60 accounts: response rates to outreach citing "new in role" dropped sharply between day 90 and day 120 in the role. By day 180 they were indistinguishable from cold outreach with no trigger. The first 90 days are the receptive window. + +Caveat: this is a small sample (~60 accounts). Treat the 90-day number as a working hypothesis, not a fixed rule. If your data says 60 or 120, adjust. + +## Why VP Sales / Head of Sales specifically + +In Mittelstand 30-250 FTE, the VP Sales / Head of Sales role is typically the buyer for an outside sales-advisory engagement. CEO and CFO can authorize but rarely initiate. CTO/COO buy operations and technology, not sales process. + +If your sale targets a different buyer (e.g. CTO for operations consulting), substitute the role title throughout the skill and update the trigger gate accordingly. + +## Tool spend sanity check + +The pipeline runs at 60-90 minutes per week of manual time at the bottom tier (LinkedIn free, Google Alerts, two press outlets, one chamber publication, public registry on a quarterly cadence). This is the right starting point. + +Upgrade tooling when: + +- The hit-rate response stabilizes at ≥15% over 4 consecutive weeks → LinkedIn Sales Navigator pays back at ~99 EUR/month +- You hit a ceiling of 30 cold touches/week and need to scale sourcing → managed web scraping at ~50-150 EUR/month per channel + +Do not buy tooling earlier. The patterns matter more than the volume at this stage. diff --git a/jlc-vertrieb-mittelstand/skills/trigger-pipeline/SKILL.md b/jlc-vertrieb-mittelstand/skills/trigger-pipeline/SKILL.md new file mode 100644 index 00000000..001f186c --- /dev/null +++ b/jlc-vertrieb-mittelstand/skills/trigger-pipeline/SKILL.md @@ -0,0 +1,120 @@ +--- +name: trigger-pipeline +description: Identify B2B Mittelstand leads from fresh triggers — new VP Sales / GM in the last 90 days, VP Sales role open 8+ weeks, recently funded consulting/transformation, milestone anniversaries. Trigger when the user says "find leads from this week's news", "trigger-based prospecting", "hiring signal leads", "fresh prospects in [region]", or asks for accounts based on a specific event signal. Returns a scored, ICP-filtered candidate list with the trigger evidence inline. +--- + +# Trigger Pipeline + +Signal-driven lead identification. Instead of working evergreen lists, this skill surfaces accounts where **something just happened** that opens a brief window of high receptivity — typically the first 90 days after a leadership change, a funded initiative, or a public commitment. + +This is the source-of-leads step that feeds the `cold-outreach-welle` and `sniper-leads` skills. + +## When to fire + +Trigger on phrases like: + +- "find leads from this week's news" +- "hiring-signal leads" +- "trigger-based prospects for [region]" +- "fresh prospects in [segment]" +- "who's hired a new VP Sales lately" +- "build the trigger pipeline for KW [N]" + +## The four trigger types (priority order) + +| # | Trigger | Receptivity window | Why it works | +|---|---|---|---| +| **T1** | New VP Sales / GM appointed <90 days ago | 90 days | New role-holder is building their first 90-day plan; receptive to new tooling and outside perspective | +| **T2** | VP Sales / Head of Sales role posted 8+ weeks | Open-ended while role is open | Capacity gap is acute; revenue is exposed; interim cover often welcomes outside help | +| **T3** | Funded consulting / transformation initiative (publicly announced) | 6 months from announcement | Budget is committed; gatekeeper has authority to engage; competing implementers want a slot | +| **T4** | Milestone anniversary (25 / 50 / 75 / 100 years) | 12 months around the date | Storytelling moment; companies invest in revenue modernization to mark the occasion | + +For T1 the window matters most — receptivity at day 30 is roughly 3-5x receptivity at day 270 in the same role, based on our field data. + +## ICP gate (every trigger hit goes through this) + +A trigger is necessary but not sufficient. After surfacing a trigger hit, run the candidate through the ICP gate before adding to the pipeline: + +| Gate | Pass criterion | +|---|---| +| **HG-1 — Industry** | Manufacturing SME (machine building, tooling, plastics, metalworking, electronics, automation) | +| **HG-2 — Size** | 30-250 employees | +| **HG-3 — Region** | Within the user's defined target region | +| **HG-4 — Group structure** | Not a procurement-centralized subsidiary of a >500-FTE group | +| **HG-5 — Reachable** | Has a working web presence and a verifiable email path | + +Fails any one of these → drop. Don't soften the gate to pad the pipeline. + +## Soft gates (scoring layer, 0-10) + +After the hard gates, score 0-10 for prioritization: + +- +2 if the trigger is T1 or T2 (vs T3 / T4) +- +2 if there's a documented data asset (long-running ERP, structured CRM, archive of bids) +- +2 if there's a visible pressure signal (industry transition, export uncertainty, generational change) +- +1 if the decision-maker has a sales (not engineering) background +- +1 if the decision-maker posts publicly about revenue/sales efficiency + +Score 9-10 → priority of the cold-outreach queue +Score 7-8 → standard wave inclusion +Score 5-6 → borderline; manual review +Score ≤4 → drop + +## Output format + +```markdown +## Trigger Pipeline — [Date] — [N candidates] + +### Priority (score 9-10) + +#### 1. [Company] · [City] · [FTE] +- **Trigger:** T1 — [Name] appointed [Role] on [Date]; source: [URL] +- **ICP score:** 9 (HG ✓✓✓✓✓ · SG ✓✓✓) +- **Pain hypothesis:** [1-line, based on what the new role-holder is likely solving] +- **Decision-maker:** [Name, Role, contact path] +- **Suggested approach:** [sniper / wave] + +### Standard (score 7-8) +… same structure … + +### Dropped (with reason) +| Company | Trigger | Drop reason | +|---|---|---| +| … | … | HG-4 group screen | +``` + +## Sourcing channels + +This skill is tool-agnostic. Useful sourcing channels in DACH: + +| Channel | Trigger types it surfaces | Notes | +|---|---|---| +| **LinkedIn search** (role + region + posting date) | T1 (new appointments), T2 (open roles) | Free-tier sufficient at low volume; Sales Navigator pays off above ~50 candidates/week | +| **LinkedIn company-page mining** | T1 (announcements), T3 (funded initiatives) | Web-scraping framework helps at scale | +| **Trade press / industry news** | T3, T4, milestone announcements | Free; one or two outlets per industry is enough | +| **Public registry / Bonität** | T4 (anniversaries), structural change | Quarterly cadence — not high-frequency | +| **Google Alerts** keyed to role titles + region | T1 (appointments mentioned in press) | Set once, deliver to inbox | +| **Chamber-of-commerce reports** | T3, industry signals | Quarterly publication | + +## Volume targets (small consulting practice) + +- **10-15 trigger hits** identified per week (source step) +- **3-5 ICP-qualified** after the gate (typical 30-40% pass rate) +- **3-5 cold-outreach drafts** in the next wave +- **1-2 conversations** booked per 4 weeks + +Below these → tighten the sourcing channels. Above → upgrade tooling (Sales Navigator at ~50 hits/wk; managed scraping at ~150 hits/wk). + +## Anti-patterns + +1. **Trigger without ICP gate** — leads to outreach into accounts that look exciting but won't buy +2. **ICP gate without trigger** — leads to evergreen list grinding; response rates collapse +3. **Padding the pipeline** by widening the gates when sourcing comes up short — better to source one more channel +4. **T3/T4 only** with no T1/T2 — the trigger is too soft; you'll write good mail to lukewarm prospects +5. **Same trigger-type repeated across waves** — diversify across T1/T2/T3 so the pipeline doesn't depend on one signal + +## Companion skills + +- `sniper-leads` — when 2-3 hits from T1 stand out, route them to sniper treatment instead of the wave +- `cold-outreach-welle` — when 5-10 hits cluster in the same week, batch them into a wave +- `outreach-tuning` — apply the V2 pattern to whichever drafts result