ワンクリックで
contact-enrichment
Get verified emails, phones, socials.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Get verified emails, phones, socials.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Sistema de personalización por niveles para outbound B2B, destilado de ColdIQ: cuándo personalizar en masa vs en profundidad, los 6 buckets de research rankeados, hooks fuertes vs ligeros, calibración ATL/BTL por seniority, esqueletos de email adaptables y cadencias de secuencia. Usar cuando el usuario pregunte 'cuánto personalizo', 'personalización a escala', 'primera línea del email', 'hooks', 'qué research hago del prospect', 'plantillas de cold email', 'cadencia', 'cada cuánto mando follow-ups', 'secuencia de toques', o al preparar los mensajes de una campaña outbound. Complementa el paso de personalización batch de Yalc (rol + empresa + señal verificada) y define el tier profundo para el futuro Investigador. NO usar para elegir el trigger (ver b2b-sales-triggers) ni definir la audiencia (ver b2b-targeting-playbook).
Catálogo accionable de 137 sales triggers para outbound B2B, destilado de ColdIQ (metodología Flip the Script). Cada trigger responde: qué señal lo dispara, cómo detectarla y qué ángulo de mensaje activa. Usar cuando el usuario pregunte 'con qué excusa/razón contacto a este lead', 'qué trigger uso', 'por qué escribirle ahora', 'sales triggers', 'buying signals', 'señales de compra', 'campaña signal-based', 'win-back', 're-engagement de closed-lost', 'a quién priorizo del inbound', o esté montando outbound y necesite elegir la premisa de contacto. NO usar para definir el ICP (ver b2b-targeting-playbook) ni para decidir el nivel de personalización o redactar la secuencia (ver b2b-personalization-depth).
Playbook de targeting e ICP para outbound B2B, destilado de las master skills de list building y ABM de ColdIQ. Define y refina audiencias: ICP en 3 capas, scoring 0-100 con tiers A-D, criterios de exclusión, lookalikes desde mejores clientes, dimensionado de lista (revenue reverse-engineering) y mapeo del comité de compra. Usar cuando el usuario pida 'definir el ICP', 'ideal customer profile', 'a quién apuntamos', 'targeting', 'audiencia de outbound', 'segmentar la lista', 'scoring de cuentas', 'priorizar cuentas', 'tiers ABM', 'target account list', 'criterios de exclusión', 'cuántas cuentas necesito', o antes de lanzar cualquier campaña outbound nueva. NO usar para elegir el trigger de contacto (ver b2b-sales-triggers) ni para redactar mensajes o decidir personalización (ver b2b-personalization-depth).
Planifica por chat una búsqueda de creators para Partnerships (SAN-79). Conversación en el chat global de Sancho: recomienda sectores/redes/tiers según el contexto del cliente, itera con el usuario y produce un PLAN estructurado (plan-card). Al confirmar, crea la búsqueda: campaign type=Partnerships en Yalc + tarea Outreach madre + runner de discovery encolado. Usar cuando: 'crear nueva búsqueda', 'busca creators', 'lanza un discovery de influencers', 'programa de creators', o desde el botón 'Crear nueva búsqueda' del tab Encuentra (Outreach). NO usar para: outreach B2B clásico (outreach-playbook), construir secuencias (outreach-sequence-builder), ni ejecutar el scraping (discovery-search-runner).
Design a complete acquisition metrics plan for any business type. Classifies the business into archetypes (SaaS/App, Fintech, Marketplace, E-commerce/D2C, Lead-to-Sale, Hybrid), defines activation events, builds 4-level metrics hierarchy, sets benchmarks, creates review cadence, and generates a personalized Excel tracking template. Reads company-context, budget, ecps from Context Lake. Writes metrics-plan.md to brand/. Use when onboarding a new client, launching a product, restructuring metrics tracking, or user says design metrics plan, what should we measure, acquisition KPIs, metrics setup, tracking plan. Do NOT use for diagnosing existing metrics (use diagnose) or for designing experiments (use design-experiment).
Connect a client to an external API (GA4, GSC, Meta Ads, HubSpot, Stripe, etc.) via Mission Control. Use when user says connect, conecta, conectar, link, vincular, integrar followed by an API name or service. Also triggers on "quiero conectar", "necesito conectar", "configura la API de", "añade", "enlaza". NEVER ask for credentials in chat — always redirect to the Mission Control connect page.
| name | contact-enrichment |
| description | Get verified emails, phones, socials. |
| metadata | {"author":"Alfonso Sainz de Baranda (Growth4U)","version":"1.0","system":"SanchoCMO","phase":"Encuentra (one-to-one)","depends_on":"decision-maker-finder","chains_to":"outreach-sequence-builder, email-sequences"} |
| context_required | ["brand/{slug}/company-brief/company-brief.current.md","brand/{slug}/go-to-market/ecps/ecps.current.md","brand/{slug}/go-to-market/ecps/ecps.current.md"] |
| context_writes | ["campaigns/","brand/{slug}/operational/assets.md"] |
"The best outreach fails if it lands in the wrong inbox."
Este skill convierte una lista de decision makers en contactos listos para outreach. No basta con saber quienes son — necesitas saber COMO llegar a ellos: email verificado, telefono directo, perfiles sociales.
Diferencia con decision-maker-finder:
Read ./brand/ per _system/intelligence/brand-memory.md (if using SanchoCMO framework)
Follow _system/output/output-format.md (if using SanchoCMO framework)
Required input:
brand/{slug}/operational/decision-makers-YYYYMMDD.jsonAPI Keys needed (at least ONE):
Optional context:
brand/{slug}/operational/target-companies.json (for domain lookup)brand/{slug}/go-to-market/ecps.json (for title matching validation)Check which enrichment APIs are configured:
CHECK environment for API keys:
├─ APOLLO_API_KEY → apollo available
├─ HUNTER_API_KEY → hunter available
├─ SIGNALHIRE_API_KEY → signalhire available
├─ SNOV_CLIENT_ID → snov available
├─ LUSHA_API_KEY → lusha available (phone)
└─ ZOOMINFO_* → zoominfo available (phone)
Mode: FULL (3+ providers) / STANDARD (1-2) / LIGHT (manual)
Estimated found rate:
FULL: 85-95% emails, 50-70% phones
STANDARD: 70-85% emails, 30-50% phones
LIGHT: 40-60% emails (manual)
If NO API keys → switch to LIGHT mode (see section below).
Read from Context Lake:
└─ brand/{slug}/operational/decision-makers-YYYYMMDD.json
Extract per contact: name, title, company, domain, LinkedIn URL, existing data
If NO decision makers file → ERROR: Run /decision-maker-finder first
Present: total contacts, % with LinkedIn URL, % with domain, how many already have email.
| Depth | What | Best for | Cost per 100 |
|---|---|---|---|
| Email Only | Email waterfall + verification | Email-first outreach | $5-15 |
| Email + Phone | Full waterfall | Multi-channel, SDR teams | $20-40 |
| Full Enrichment | Email + Phone + Social | ABM, high-value prospects | $30-60 |
User selects -> Proceed with appropriate depth.
For each contact, try providers in order. STOP at first verified match.
See waterfall-providers.md for complete API details.
Pass 1 — Apollo.io (if available):
POST https://api.apollo.io/v1/people/match
Body: { first_name, last_name, organization_name, domain }
IF email_status == "verified" → ACCEPT (high confidence)
BONUS: Also capture phone if returned
IF email_status == "guessed" → pending_verification
IF no result → CONTINUE
Hit rate: 60-70%. Time: ~2 min/100 contacts.
Pass 2 — Hunter.io (if available):
GET https://api.hunter.io/v2/email-finder
Params: domain, first_name, last_name
IF score >= 90 → ACCEPT (high confidence)
IF score >= 70 → pending_verification
IF no result → CONTINUE
Additional hit rate: 15-25%.
Pass 3 — SignalHire (if available):
POST https://www.signalhire.com/api/v1/candidate/search
Body: { linkedin_url }
IF isVerified == true → ACCEPT (high confidence)
BONUS: Phone numbers often included
IF no result → CONTINUE
Additional hit rate: 5-15%.
Pass 4 — Snov.io (if available):
POST https://api.snov.io/v1/get-emails-from-name
Body: { firstName, lastName, domain }
IF emailStatus == "valid" → ACCEPT (medium confidence)
IF emailStatus == "unverifiable" → low confidence
IF no result → "not_found"
Last resort. Additional hit rate: 5-10%.
See email-verification.md for full pipeline.
VERIFICATION PIPELINE:
1. Syntax check (instant) — regex, remove malformed
2. MX record check (instant) — DNS lookup, remove no-MX domains
3. Hunter.io verification API:
GET https://api.hunter.io/v2/email-verifier?email={email}
"deliverable" + score >= 90 → HIGH
"deliverable" + score 70-89 → MEDIUM
"risky" → MEDIUM (max)
"unknown" → LOW
"undeliverable" → DISCARD
4. Catch-all detection — if catch-all domain → cap at MEDIUM
5. Disposable email check — if disposable → DISCARD
Only runs for "Email + Phone" or "Full Enrichment" depth.
PHONE WATERFALL:
1. Check Apollo responses (may already have phone from Step 3)
2. SignalHire → POST /api/v1/candidate/search (LinkedIn URL input)
3. Lusha → POST https://api.lusha.com/person (name + company)
4. ZoomInfo → enterprise only, if client has subscription
Only runs for "Full Enrichment" depth.
1. LinkedIn URL — already from decision-maker-finder (95%+ coverage)
2. Twitter/X — WebSearch: "{name} {company} site:twitter.com OR site:x.com"
3. GitHub/Medium — optional, for technical/content decision makers
FOR each contact:
HIGH = email verified + non-catch-all + 2+ sources (90%+)
MEDIUM = email found + MX valid + catch-all OR single source (70-89%)
LOW = email guessed + no verification OR pattern match only (<70%)
overall = min(email_confidence, phone_confidence) if phone requested
OR email_confidence if email only
CONTACT ENRICHMENT — Complete
Emails: [found]/[total] ([%]) | Verified: [N] | HIGH: [N] | MEDIUM: [N] | LOW: [N]
Phones: [found]/[total] ([%]) | Mobile: [N] | Direct: [N]
Social: LinkedIn [N] | Twitter [N]
Provider breakdown + cost per provider
Total cost: $X for [N] contacts
READY FOR OUTREACH: [N] HIGH confidence (safe) + [N] MEDIUM (caution)
File: brand/{slug}/operational/contacts-enriched-YYYYMMDD.json
{
"date": "2026-02-21",
"source": "contact-enrichment",
"enrichment_depth": "email+phone",
"providers_used": ["apollo", "hunter", "signalhire"],
"contacts": [
{
"name": "Jane Doe",
"title": "VP Marketing",
"company": "Example Corp",
"email": "jane@example.com",
"email_confidence": "high",
"email_source": "hunter",
"email_verified": true,
"phone": "+34 612 345 678",
"phone_type": "mobile",
"phone_source": "signalhire",
"linkedin_url": "linkedin.com/in/janedoe",
"twitter_url": "twitter.com/janedoe",
"enrichment_date": "2026-02-21"
}
],
"stats": {
"total_contacts": 142,
"email_found": 128,
"email_verified": 115,
"phone_found": 67,
"email_found_rate": "90%",
"avg_confidence": "high",
"providers_hit_rate": {
"apollo": "65%",
"hunter": "20%",
"signalhire": "5%"
}
}
}
Append summary to ./brand/{slug}/operational/assets.md.
When no API keys are configured or budget is zero.
Hunter.io Free Plan — 25 searches/mo + 50 verifications/mo. Use for top-priority contacts.
Domain Pattern Detection — GET https://api.hunter.io/v2/domain-search?domain=example.com. Find the pattern, apply to all contacts at that domain.
Common Email Patterns (try in order):
{first}.{last}@domain.com jane.doe@example.com
{first}{last}@domain.com janedoe@example.com
{first}@domain.com jane@example.com
{f}{last}@domain.com jdoe@example.com
{first}_{last}@domain.com jane_doe@example.com
Google Pattern Search — "jane doe" "example.com" email or "jane.doe@example.com"
Manual LinkedIn — Profile > Contact info (requires connection or InMail).
LIGHT Workflow:
1. Group contacts by domain
2. Hunter.io domain search per domain → detect pattern
3. Apply pattern to all contacts at that domain
4. Verify top 5 per domain via Hunter.io verifier
5. If pattern works → apply to rest (MEDIUM confidence)
6. Remaining: Google search + LinkedIn manual
7. Output mostly MEDIUM confidence
| Depth | Providers | Cost | Found Rate |
|---|---|---|---|
| Email only (free) | Apollo free + Hunter free | $0 | 40-60% |
| Email only (paid) | Apollo + Hunter paid | $5-15 | 80-90% |
| Email + Phone | Apollo + Hunter + SignalHire | $20-40 | Email 85%, Phone 50% |
| Full enrichment | All providers | $30-60 | Email 90%+, Phone 60%+ |
| Contacts | Email Only | Email + Phone | Full |
|---|---|---|---|
| 50 | $3-8 | $10-20 | $15-30 |
| 100 | $5-15 | $20-40 | $30-60 |
| 500 | $25-75 | $100-200 | $150-300 |
| 1,000 | $50-150 | $200-400 | $300-600 |
This skill handles personal data. Comply with applicable data protection laws.
| Requirement | Action |
|---|---|
| Legal basis | Document legitimate interest for B2B prospecting |
| Data minimization | Only collect data needed for outreach purpose |
| Storage limitation | Delete enriched data after 12 months if no engagement |
| Right to erasure | If contact requests removal, delete within 30 days |
| Opt-out mechanism | Every outreach must include unsubscribe option |
| Record keeping | Log when and where each data point was obtained |
EU (GDPR): B2B email to professional addresses permitted under legitimate interest. Personal emails (gmail, yahoo) require more care. Always include company name + opt-out.
Spain (LOPDGDD): Follows GDPR. AEPD active on enforcement. Add "Conforme al Art. 21 LSSI" in commercial emails.
Best practice: Limit outreach to professional email addresses at company domains. Avoid personal email and mobile unless clear business relationship.
| File | What it provides | How it's used |
|---|---|---|
| brand/{slug}/operational/decision-makers-YYYYMMDD.json | Names, titles, companies, LinkedIn URLs | Input contacts to enrich |
| brand/{slug}/operational/target-companies.json | Company domains | Domain lookup for email patterns |
| brand/{slug}/go-to-market/ecps.json | Target titles/roles | Validation enriched contacts match target |
| File | What it contains |
|---|---|
| brand/{slug}/operational/contacts-enriched-YYYYMMDD.json | Enriched contacts with emails, phones, socials |
| ./brand/{slug}/operational/assets.md | Append: Enrichment summary and stats |
/outreach-sequence-builder — Build personalized outreach sequences/email-sequences — Create email drip campaigns to verified emails/direct-response-copy — Write outreach copy using contact context/decision-maker-finder — Must run first to provide contacts to enrichThe last mile matters most. Verified data = delivered outreach = real conversations.