⚙️
Tools Box
Toutes les skills

prospection-multicanal

Routine de prospection multicanal (LinkedIn + email) pilotée par Folk CRM, Unipile et Firecrawl. À utiliser quand l'utilisateur demande de "lancer la séquence d'outreach", "envoyer les invitations LinkedIn du jour", "faire tourner la prospection", de relancer un prospect, ou de progresser dans la cadence J0/J+3/J+10/J+15 sur les contacts Lead/Hunted dans Folk. Sait s'arrêter automatiquement sur réponse prospect, sortie de statut, ou drapeau Reco.

Installation & invocation

1. Crée le fichier sur ta machine :

~/.claude/skills/prospection-multicanal/SKILL.md

2. Colle le contenu du SKILL.md ci-dessous, et redémarre Claude Code. Tu peux ensuite l'invoquer manuellement avec :

/prospection-multicanal

Claude peut aussi la déclencher automatiquement quand le contexte matche.

🇫🇷 Résumé FRCe que fait cette skill, en français

Routine LinkedIn + email pilotée par Folk + Unipile + Firecrawl. Cadence J0/J+3/J+10/J+15, stop auto sur réponse.

Contenu de la skill

Prospection multicanal — Folk × Unipile × Firecrawl

Ce que fait cette skill

Pour chaque contact Folk en statut Lead ou Hunted sur le groupe Lead, exécuter la prochaine étape de la séquence :

J0     Invitation LinkedIn (note ≤ 300 car.)
J+3    invitation acceptée → LK msg | invitation pending → Mail 1
J+10   bascule de canal (LK→Mail ou Mail→LK selon acceptation)
J+15   dernière relance sur le canal opposé puis Status="Not qualified"

Stop automatique dès qu'un prospect répond (LinkedIn ou email), dès que son Status sort de Lead/Hunted, dès qu'il est marqué Reco, ou si l'équipe a interagi avec la fiche dans les 3 derniers jours.

Pré-requis (à faire une fois)

  1. Compléter le schéma Folk — voir references/folk-setup.md pour les 5 champs custom à créer dans le groupe Lead.
  2. chmod 600 scripts/env.sh (déjà fait à l'install) ; vérifier que les 6 variables sont peuplées.
  3. Smoke test : bash scripts/env.sh && python3 -m prospection check_setup → doit retourner "ok": true.

Invocation typique (orchestration)

Quand cette skill est déclenchée, Claude doit suivre cette boucle exactement :

1. Bootstrap

source ~/.claude/skills/prospection-multicanal/scripts/env.sh
cd ~/.claude/skills/prospection-multicanal/scripts
python3 -m prospection check_setup

Si ok: false, arrêter et afficher la liste issues à l'utilisateur. Le schéma Folk doit être complet avant tout envoi.

2. Discovery

python3 -m prospection discover

Renvoie deux listes :

  • queue — contacts qui ont une action à faire aujourd'hui
  • skipped — contacts ignorés et pourquoi

Afficher le résumé (nombre / nom / action prévue) à l'utilisateur sous forme de tableau condensé. Si queue est vide, dire "rien à faire aujourd'hui" et sortir.

3. Pour chaque candidat de la queue (séquentiel)

3a. Preflight

python3 -m prospection preflight <person_id>

Output : {ok, action, msg_body, msg_state, ...}. Si ok=false, le contact est déjà géré (Status changé, reply, etc.) → passer au suivant.

3b. Génération du message si nécessaire

Si msg_body est vide ou msg_state ∈ {null, Regeneré, Erreur} :

  1. OSINT Firecrawl (en parallèle quand possible) :

    • firecrawl_scrape sur la linkedin_url du contact
    • firecrawl_search "<First> <Last> <Company>" (top 3)
    • firecrawl_scrape sur l'URL entreprise si présente dans Folk (/companies/{id})

    Si Firecrawl échoue (LinkedIn bloque souvent) → fallback sur le titre/entreprise déjà dans Folk, et noter [generic] dans le log.

  2. Rédaction, suivant l'action :

    • SEND_INVITE → note d'invitation LinkedIn ≤ 300 caractères. Tutoiement, première ligne accroche basée sur 1 signal OSINT, pas de pitch direct, fin avec un hook léger.
    • SEND_LK_MSG, SEND_LK_MSG_AFTER_MAIL, SEND_LAST_RELANCE_LK → message LinkedIn ≤ 300 caractères, ton humain, référence à un signal récent.
    • SEND_MAIL_1, SEND_MAIL_2, SEND_LAST_RELANCE_MAIL → email avec subject + body HTML court (≤ 800 car.). Premier mail = pitch ExoTeach + signal personnalisé. Mail 2 = relance "remontée en haut de boîte". Last relance = porte de sortie polie.
  3. Sauvegarde :

    python3 -m prospection save_message <person_id> "<body>" [--subject "<s>"]
    

3c. Envoi

python3 -m prospection send <person_id>

Le module re-fait un preflight (idempotent — re-vérifie reply / status / age), exécute l'action via Unipile, met à jour Folk (Étape séquence, Date dernier envoi, Unipile chat ID, Message IA = "Envoyé", puis vide Body+Subject pour la prochaine étape).

Sleep 1–2 s entre chaque prospect pour ménager les rate-limits.

4. Rapport

python3 -m prospection report

Affiche les compteurs du run du jour. Le détail JSONL est dans runs/<YYYY-MM-DD>.jsonl.

Garanties critiques

  • Avant chaque envoi, le module relit Folk + interroge Unipile : si reply apparue depuis le dernier check, on s'arrête sans envoyer. Cf. preflight().
  • Les invitations LinkedIn sont capées à WEEKLY_INVITE_CAP (80/sem par défaut) pour éviter le ban LinkedIn — modifiable dans env.sh.
  • Les notes d'invitation sont tronquées à 300 caractères côté Unipile (sécurité serveur, pas notre problème de comptage côté client).
  • Une action ne se redéclenche jamais le même jour sur un même prospect (Date dernier envoi == today ⇒ NOOP).

Cas particuliers

  • Pas de LinkedIn URL sur un contact en Lead/Hunted : il est sauté avec raison no LinkedIn URL. Si tu as une URL et qu'elle n'est pas détectée, vérifie le format (le helper cherche linkedin.com/in/).
  • Pas d'email mais Mail attendu : le contact est sauté avec raison no email on contact au moment du send. La séquence reprendra dès qu'un email sera renseigné.
  • Plusieurs groupes Lead : si un contact est dans plusieurs groupes exposant un Status compatible, on prend celui dont la Date dernier envoi est la plus récente comme groupe principal pour lire/écrire les états.

Liens

  • Source du moteur : scripts/prospection.py
  • Helper Unipile : scripts/unipile.py
  • Helper Folk (réutilisé) : ~/.claude/skills/folk-exoteach/scripts/folk.py
  • Setup Folk requis : references/folk-setup.md
  • Endpoints Unipile utilisés : references/unipile-endpoints.md
  • Diagramme état → état : references/sequence-state-machine.md

Skills proches

founder-sales

Help founders close their first customers and build repeatable sales processes. Use when someone is doing founder-led sales, trying to get their first customers, writing cold outreach, running early sales calls, or asking when to hire their first salesperson.

prospection-mail

Rédiger des cold emails B2B et des séquences email / drip qui obtiennent des réponses. Charge ce skill quand l'utilisateur veut écrire un cold email, une relance, une séquence de prospection ou une campagne drip automatisée.

prospection-stack

Orchestrateur de prospection B2B qui route les demandes vers le bon MCP de la stack disponible (Vibe Prospecting, Common Room, Firecrawl, Apify, Notion, Gmail, Granola, Fireflies, Calendar). Utilise ce skill dès que l'utilisateur veut trouver des leads, enrichir un contact ou un compte, scraper un site, préparer un call, drafter un outreach, qualifier un prospect, sourcer un ICP, retrouver un échange passé avec un compte. Déclenche aussi sur "trouve-moi des leads", "qui est X chez Y", "prépare mon call avec Z", "scrape ce site", "enrichis cet email", "log dans Notion", "drafte un cold email", "infos sur cette boîte". Skill agnostique de toute entreprise et de tout CRM : aucune cible métier ni stack CRM hardcodée. Ne jamais utiliser Apollo ni FullEnrich, ils sont explicitement exclus. Aucun CRM dans le scope (ni Folk ni HubSpot ni Pipedrive ni Salesforce ni autre) : pour toute écriture CRM, déléguer aux skills dédiés que l'utilisateur a installés. Demande toujours où pousser le résultat avant d'écrire dans un système tiers.

revops

When the user wants help with revenue operations, lead lifecycle management, or marketing-to-sales handoff processes. Also use when the user mentions 'RevOps,' 'revenue operations,' 'lead scoring,' 'lead routing,' 'MQL,' 'SQL,' 'pipeline stages,' 'deal desk,' 'CRM automation,' 'marketing-to-sales handoff,' 'data hygiene,' 'leads aren't getting to sales,' 'pipeline management,' 'lead qualification,' or 'when should marketing hand off to sales.' Use this for anything involving the systems and processes that connect marketing to revenue. For cold outreach emails, see cold-email. For email drip campaigns, see email-sequence. For pricing decisions, see pricing-strategy.

sales-enablement

When the user wants to create sales collateral, pitch decks, one-pagers, objection handling docs, or demo scripts. Also use when the user mentions 'sales deck,' 'pitch deck,' 'one-pager,' 'leave-behind,' 'objection handling,' 'deal-specific ROI analysis,' 'demo script,' 'talk track,' 'sales playbook,' 'proposal template,' 'buyer persona card,' 'help my sales team,' 'sales materials,' or 'what should I give my sales reps.' Use this for any document or asset that helps a sales team close deals. For competitor comparison pages and battle cards, see competitor-alternatives. For marketing website copy, see copywriting. For cold outreach emails, see cold-email.

sales-qualification

Help users qualify sales leads effectively. Use when someone is wasting time on bad leads, struggling with low conversion rates, needs to build a qualification framework, or wants to improve their discovery process.