with one click
company-finder
Find ICP-matching companies.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Find ICP-matching companies.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
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 | company-finder |
| description | Find ICP-matching companies. |
| metadata | {"author":"Alfonso Sainz de Baranda (Growth4U)","version":"1.0","system":"SanchoCMO","phase":"Encuentra (one-to-one)","depends_on":"niche-discovery-100x, company-context","chains_to":"decision-maker-finder"} |
| 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","brand/{slug}/market-and-us/competitors/competitors.current.md"] |
| context_writes | ["campaigns/","brand/{slug}/operational/assets.md"] |
Finding the right 100 companies beats spamming 10,000. Precision targeting with ICP-scored prospecting.
Takes the ICP defined in niche-discovery-100x, translates it into search filters for Apollo.io, Clay, or LinkedIn Sales Navigator, executes the search, enriches with firmographics, scores each company against the ICP (1-10), and delivers a prioritized list of target companies ready for decision-maker-finder.
This skill is the bridge between "knowing who your ideal customer is" and "having a list of real companies to pursue." It does NOT find people within those companies — that's decision-maker-finder's job.
Before starting, load context from the brand directory:
brand/{slug}/company-brief/company-brief.current.md — Our company context (what we sell, to whom)brand/{slug}/go-to-market/ecps.json — ICP definition (industry, size, geo, tech stack, etc.)brand/{slug}/go-to-market/ecps.json — Early Customer Profiles with scoring from niche-discovery-100xbrand/{slug}/market-and-us/competitors.json — Competitor data (to exclude or identify competitor customers)All output follows the standard SanchoCMO output format. JSON outputs use the schema defined in the Output Format section below.
brand/{slug}/go-to-market/ecps.json and brand/{slug}/go-to-market/ecps.json must exist.APOLLO_API_KEY)CLAY_API_KEY)APIFY_TOKEN) for LinkedIn scrapingStep 0: Tool Detection → Check available APIs → FULL vs LIGHT mode
Step 1: Load ICP → Read brand/{slug}/go-to-market/ecps.json + ecps.json
Step 2: Select Tool → Decision tree: Apollo vs Clay vs LinkedIn
Step 3: Map ICP to Filters → Translate ICP attributes to API parameters
Step 4: Execute Search → Run API calls with pagination
Step 5: Enrich Companies → Firmographics, tech stack, funding, signals
Step 6: Score & Filter → ICP fit score, filter >=7, prioritize
Step 7: Present Results → Formatted table with scores for review
Step 8: Save Output → companies-YYYYMMDD.json
Check which tools are available and set execution mode.
Detection sequence:
APOLLO_API_KEY environment variable → Apollo available?CLAY_API_KEY environment variable → Clay available?APIFY_TOKEN environment variable → Apify/LinkedIn available?Mode determination:
| Available Tools | Mode | Behavior |
|---|---|---|
| Apollo API key | FULL (Apollo) | Direct API search + enrichment |
| Clay API key | FULL (Clay) | Waterfall enrichment workflow |
| Apify token | FULL (Apify) | Actor-based search (LinkedIn, Google Maps) |
| Multiple keys | FULL (Best fit) | Select per decision tree (Step 2) |
| None | LIGHT | Manual research with WebSearch |
Communicate mode to user:
Read ICP definition from the brand directory.
Required data from brand/{slug}/go-to-market/ecps.json:
Required data from brand/{slug}/go-to-market/ecps.json:
Validation:
icp.json is missing or empty: STOP. "Necesitas definir tu ICP primero. Ejecuta niche-discovery-100x."Apply the decision tree from references/tool-comparison.md:
Standard ICP (industria + tamano + geo) → Apollo
Complex ICP (multi-signal, conditional) → Clay
People-first (roles + seniority) → LinkedIn (via Apify)
No API keys → LIGHT mode (WebSearch)
Present selection to user: "Basandome en tu ICP, recomiendo [tool] porque [reason]. Procedo?"
If multiple tools available, explain trade-off: "Puedo usar Apollo (rapido, 275M empresas) o Clay (mas preciso con waterfall enrichment). Para un ICP standard como el tuyo, Apollo es suficiente. Quieres Clay para mayor precision?"
Translate each ICP attribute to the selected tool's filter format using references/icp-to-filters.md.
Process:
Example mapping (Apollo):
ICP: "SaaS B2B fintech, 10-50 empleados, Espana, usa Stripe, Series A"
Apollo query:
{
"q_organization_keyword_tags": ["SaaS", "fintech", "B2B"],
"organization_num_employees_ranges": ["11,50"],
"organization_locations": ["Spain"],
"currently_using_any_of_technology_uids": ["stripe_uid"],
"organization_latest_funding_stage_cd": ["series_a"],
"per_page": 100,
"page": 1
}
Show the mapped filters to user before executing: "Estos son los filtros mapeados. Confirma o ajusta antes de ejecutar la busqueda."
Run the search with proper pagination and rate limiting.
Apollo execution:
POST https://api.apollo.io/api/v1/mixed_companies/search
- Paginate: page 1, 2, 3... until no more results or limit reached
- Rate limit: max 100 calls/min (free), 300/min (paid)
- Collect all results into a single array
- Target: 100-500 raw companies (before filtering)
Clay execution:
Apify execution:
# LinkedIn company search
Actor: apify/linkedin-company-scraper
Input: { "searchUrl": "[mapped LinkedIn search URL]", "maxItems": 200 }
# Google Maps (for local/geo businesses)
Actor: apify/google-maps-scraper
Input: { "searchTerms": ["fintech Spain"], "maxItems": 200 }
During execution, report progress:
Add missing data points needed for scoring.
Enrichment priority:
| Data Point | Source Priority | Why |
|---|---|---|
| Industry | Apollo > Clay > LinkedIn | Core ICP filter |
| Employee count | LinkedIn > Apollo > Clay | Most accurate on LinkedIn |
| Revenue | Clay (waterfall) > Apollo | Clay cross-validates |
| Tech stack | BuiltWith > Apollo > Clay | BuiltWith most comprehensive |
| Funding | Crunchbase > Apollo > Clay | Crunchbase is source of truth |
| Growth signals | LinkedIn + Apollo dept changes | Combine for best coverage |
| Domain | Apollo > Clay > manual | Primary dedup key |
Enrichment rules:
Deduplication:
domain (company website)company_name + hq_city as composite keyApply ICP Fit Score to every enriched company. See references/icp-to-filters.md for full scoring methodology.
Scoring process:
Filtering:
Priority assignment:
If fewer than 20 companies pass the filter: "Solo [X] empresas pasan el filtro de score >= 7. Opciones: (1) Relajar filtros, (2) Ampliar geografia, (3) Incluir industrias adyacentes. Que prefieres?"
If more than 200 companies pass: "[X] empresas pasan el filtro. Recomiendo subir el threshold a score >= 8 para priorizar los mejores. O puedo segmentar por ECP."
Show results in a formatted, scannable table.
Summary first:
Resultados Company Finder para [Company Name]:
Busqueda: [tool used] | Filtros: [summary of key filters] Raw: [n] empresas | Filtered (score >= 7): [n] empresas HOT: [n] | WARM: [n] | COLD: [n]
Top 10 table:
| # | Company | Domain | Industry | Size | Revenue | Geo | Score | Priority | Top Signal |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Example Corp | example.com | SaaS/Fintech | 45 | $5M-10M | Madrid | 9.2 | HOT | Hiring 3 engineers |
| 2 | ... | ... | ... | ... | ... | ... | ... | ... | ... |
Ask for feedback: "Estos son los top 10. Quieres ver la lista completa, ajustar filtros, o guardar y proceder a decision-maker-finder?"
Save the complete results to brand/{slug}/operational/companies-YYYYMMDD.json.
JSON Schema:
{
"date": "2026-02-21",
"source": "company-finder",
"search_criteria": {
"industry": ["SaaS", "fintech"],
"size": "11-50",
"geo": ["Spain"],
"tech_stack": ["Stripe"],
"funding": "Series A",
"additional_filters": {}
},
"tool_used": "apollo",
"mode": "FULL",
"companies": [
{
"name": "Example Corp",
"domain": "example.com",
"industry": "SaaS",
"sub_industry": "Fintech",
"employees": 45,
"revenue_range": "$1M-$10M",
"hq_location": "Madrid, Spain",
"hq_country": "ES",
"tech_stack": ["Stripe", "HubSpot", "AWS"],
"funding": "Series A ($5M)",
"funding_date": "2025-09-15",
"founded_year": 2021,
"growth_signals": [
"Hiring 3 engineering roles",
"New office in Barcelona"
],
"icp_score": 8.5,
"signal_boost": 0.7,
"final_score": 9.2,
"priority": "hot",
"data_confidence": "high",
"linkedin_url": "https://linkedin.com/company/example",
"source": "apollo",
"enriched_from": ["apollo", "builtwith"]
}
],
"stats": {
"total_found": 234,
"enriched": 234,
"filtered": 87,
"hot": 12,
"warm": 45,
"cold": 30,
"discarded": 147,
"avg_score": 7.8,
"top_industries": ["SaaS", "Fintech", "Payments"],
"top_geos": ["Madrid", "Barcelona", "Valencia"]
},
"metadata": {
"skill_version": "1.0",
"execution_time_minutes": 25,
"api_calls_used": 15,
"credits_consumed": 234
}
}
Also save a human-readable summary to brand/{slug}/operational/companies-YYYYMMDD-summary.md with the table from Step 7.
When no API keys are available, the skill degrades to manual research using WebSearch and public sources.
Translate ICP into Google search queries:
"[industry] companies [geo] [size indicator]"
"[industry] startups [geo] [funding stage]"
"top [industry] companies [geo] [year]"
site:linkedin.com/company "[industry]" "[geo]"
site:crunchbase.com "[industry]" "[geo]"
Execute WebSearch queries (5-10 queries). Sources to prioritize:
For each company found, manually check:
Apply the same ICP Fit Score methodology, with lower data confidence scores.
LIGHT mode limitations:
Communicate clearly: "En modo LIGHT he encontrado [X] empresas. La precision es menor que con APIs — recomiendo validar manualmente los top 10 antes de proceder a decision-maker-finder."
| Connection | Direction | What Flows |
|---|---|---|
| niche-discovery-100x | INPUT | ICP definition, ECPs, pain scores, reachability data |
| company-context | INPUT | Our company profile (for relevance filtering) |
| competitor-intelligence | INPUT | Competitor list (to identify competitor customers or exclude) |
| decision-maker-finder | OUTPUT | Filtered company list → find people within these companies |
| contact-enrichment | OUTPUT | Company data enriches contact profiles downstream |
| signal-monitor | BIDIRECTIONAL | Signals feed scoring; new companies feed monitoring |
| daily-pulse | OUTPUT | New HOT companies appear in daily briefing |
niche-discovery-100x (ICP)
|
v
COMPANY-FINDER (this skill) ←── competitor-intelligence (exclude/identify)
|
v
decision-maker-finder (find people in target companies)
|
v
contact-enrichment (enrich contact data)
|
v
outreach execution (personalized sequences)
| File | Purpose |
|---|---|
| references/tool-comparison.md | Detailed comparison of Apollo, Clay, LinkedIn SN, Apify |
| references/icp-to-filters.md | ICP attribute to search filter mapping + scoring methodology |
ICP is very niche (few companies exist):
ICP spans multiple ECPs with different criteria:
Competitor companies appear in results:
is_competitor: true and note which competitorData quality is low (many unknowns):
Too many HOT companies (>50):
On refresh: Compare new results against previous companies-YYYYMMDD.json. Flag new companies, score changes, and companies that dropped below threshold.