Decisiones tomadas antes de tocar ningún archivo:
| Dimensión | Decisión | Razón |
|---|---|---|
| Operación | create | skill nueva, sin prior art |
| Clase | workflow-process | flujo ordenado con clasificación + respuesta |
| Shape primario | router + prompt-chaining | clasificación primero → rama de respuesta |
| Shapes rechazados | inline simple | lógica de rama hace inline demasiado denso |
| Portabilidad | cross-provider | sin hooks Claude-específicos |
References cargadas para este shape:
Inventario de fuentes
| # | Fuente | Tipo | Tier | Cobertura |
|---|---|---|---|---|
| S1 | BANT Framework — Budget / Authority / Need / Timeline | Metodología | Tier 1 | Criterios de cualificación base |
| S2 | MEDDIC — Metrics / Economic Buyer / Decision Criteria | Metodología | Tier 1 | Validación de decisor y métricas de éxito |
| S3 | ICP CULTIVA IA (Notion interno) | Datos propietarios | Tier 1 | Sectores, tamaño, geografía, buyer |
| S4 | Emails históricos anonimizados (15 ejemplos) | Evidence | Tier 1 | Patrones de lenguaje HOT/WARM/COLD/DISCARD |
| S5 | HubSpot Lead Scoring Guide 2024 | Documentación | Tier 2 | Escalas de puntuación, thresholds |
| S6 | Plantillas de respuesta actuales del equipo | Assets | Tier 2 | Tono, estructura, CTA por nivel |
| S7 | Directrices GDPR / LOPDGDD para emails comerciales | Compliance | Tier 2 | Boundary: no almacenar datos PII en la skill |
| S8 | Análisis de competidores (Qualifier.ai, Exceed.ai) | Benchmark | Tier 2 | Factores de scoring diferenciadores |
| S9 | Conversion benchmarks B2B PYMEs España | Estadísticas | GAP | No disponible — uso de proxy HubSpot global |
Decisiones de diseño clave
Coverage Matrix
| Dimensión requerida | Estado |
|---|---|
| Precondiciones del flujo | ✓ cubierta |
| Flujo ordenado (pasos) | ✓ cubierta |
| Manejo de fallos / edge cases | ✓ cubierta |
| Safety boundaries (PII/GDPR) | ✓ cubierta |
| Schema de output | ✓ cubierta |
| Ejemplos happy-path | ✓ cubierta |
| Anti-patrones | ✓ cubierta |
| Benchmarks locales España | ⚠ gap explícito |
3 ejemplos piloto procesados con la skill en borrador para validar comportamiento:
Estructura de archivos generada:
--- name: email-lead-qualifier description: | Qualifies inbound sales leads from email or web form text. Use when a new lead message arrives and you need: ICP scoring (1-10), classification (HOT/WARM/COLD/DISCARD), a reply draft, and next-step recommendation. Triggers on: "tenemos un lead", "nos escribió un cliente", "analiza este email de ventas", "cualifica este contacto", "lead scoring". metadata: version: 1.0.0 class: workflow-process shape: router + prompt-chaining owner: CULTIVA IA safety: no-pii-persistence --- # email-lead-qualifier ## Preconditions - Input: texto del email/formulario del lead (puede incluir nombre, empresa, cargo). - Load `references/icp-criteria.md` before scoring. ## Step 1: Extraer señales del lead Identify: nombre, empresa, cargo, sector, tamaño estimado, país, pain points, timeline, presupuesto mencionado. Si falta información crítica, marca el campo como "—" y reduce el score proporcionalmente. ## Step 2: Puntuar ICP fit (1-10) Read `references/scoring-rubric.md`. Aplica la rubric punto a punto. Multiplica ×1.5 si el emisor es decisor (capped 10). Penaliza -2 si el lead es una agencia de marketing/consultora (potencial competidor). ## Step 3: Clasificar Route: | Score | Clasificación | Acción | |-------|---------------|--------| | 8–10 | HOT | Demo / propuesta inmediata | | 5–7 | WARM | Discovery call + case study | | 2–4 | COLD | Nurture — newsletter | | 0–1 | DISCARD | No responder / archivo | ## Step 4: Redactar borrador de respuesta Read `references/reply-templates.md`. Elige la plantilla por clasificación. Personaliza con: nombre del lead, empresa, pain point mencionado, propuesta de siguiente paso. Mantén tono: directo, sin jerga, bajo en fricciones, 150-200 palabras. ## Output format Return: 1. Análisis del lead (tabla: señales extraídas) 2. Score ICP (puntuación + justificación por criterio) 3. Clasificación (HOT/WARM/COLD/DISCARD + razón principal) 4. Borrador de respuesta (listo para enviar o editar) 5. Siguiente paso recomendado
# SPEC — email-lead-qualifier v1.0.0 ## Contract Input: Texto libre del email/formulario (string) Output: Objeto estructurado: {señales, score, clasificacion, borrador, siguiente_paso} ## Invariants - Score siempre en [0, 10], con 1 decimal. - Clasificación siempre una de: HOT | WARM | COLD | DISCARD. - Borrador siempre en español, 150-200 palabras. - Sin almacenamiento de PII (LOPDGDD). ## Failure modes | Condición | Comportamiento | |-----------|----------------| | Email vacío o ilegible | Score 0, DISCARD, nota al usuario | | Empresa fuera de ICP geográfico | Reducción -3 puntos, explicar | | Posible competidor detectado | Score reducido -2, flag en output | | Decisor ambiguo | No aplicar multiplicador, marcar como "incierto" | ## Maintenance contract Actualizar `references/icp-criteria.md` cuando el ICP de CULTIVA IA cambie. Actualizar `references/scoring-rubric.md` cada Q con evidencia de leads cerrados.
Ejemplo de output generado por la skill (lead HOT — Clínica Bienestar):
SEÑALES EXTRAÍDAS
| Nombre | María García |
| Empresa | Clínica Bienestar |
| Cargo | CEO (decisor ✓) |
| Sector | Clínicas · salud |
| Tamaño | 18 empleados |
| Pain | Automatización citas + WhatsApp |
| Budget | 8.000€ aprobado Q3 |
| Timeline | Esta semana (demo) |
SCORING
| ICP geográfico | +2.0 |
| Sector objetivo | +2.0 |
| Tamaño 5-200 emp | +1.5 |
| Pain explícito | +2.0 |
| Budget declarado | +1.5 |
| Base score | 6.1 |
| × Decisor (CEO) | × 1.5 → 9.2 |
Should-trigger (true positives)
Should-NOT-trigger (false positives rechazados)
email-lead-qualifier v1.0.0 creada, registrada y lista para invocar como /email-lead-qualifier desde Claude Code. 1 warning abierto (portability note) no bloquea el despliegue.
references/evidence/ — añadir tras primeros 20 leads reales.