C

Ingeniería Agéntica — Lead Scoring v2

CULTIVA IA · Plan de ejecución con control de calidad y coste · Junio 2026

Claude Code Eval-First 5 unidades × 15 min
Objetivos y presupuesto del proyecto
Coste máx. / lead
0,05 €
~1.800 tokens promedio
Latencia objetivo
<3s
p95 endpoint /score-lead
Unidades de trabajo
5
cada una independiente y verificable
Tiempo estimado total
75 min
3 sesiones · 2 fases de eval
Bucle Eval-First
Criterios de finalización definidos ANTES de escribir código
📋
1. Definir Evals
Eval de capacidad: clasificar 50 leads de test.
Eval de regresión: v1 no empeora.
📊
2. Baseline
v1 accuracy: 71 %.
p95 latencia: 4,2 s.
Fallos capturados.
⚙️
3. Implementar
Agente ejecuta unidades 1-5 con criterios de done.
4. Re-evaluar
v2 accuracy: 89 %.
p95 latencia: 1,8 s.
Regresión: 0 fallos.
Eval Métrica Baseline v1 Target v2 Resultado v2 Estado
capability-01 Accuracy clasificación leads 71 % ≥ 85 % 89 % ✓ PASS
capability-02 Latencia p95 /score-lead 4,2 s ≤ 3 s 1,8 s ✓ PASS
capability-03 Coste por lead (tokens) ≤ 2.000 tok 1.740 tok ✓ PASS
regression-01 Leads "calientes" no clasificados como "frío" 3 fallos / 50 0 fallos 0 fallos ✓ PASS
regression-02 Webhook Slack enviado si caliente N/A (no existía) 100 % entrega 100 % ✓ PASS
regression-03 Compatibilidad API v1 (sin breaking changes) 0 breaking 0 breaking ✓ PASS
Descomposición en unidades de 15 min
1
Esquema Pydantic + endpoint FastAPI
Riesgo: tipado incorrecto en campos opcionales
15 min
2
Agente de enriquecimiento (Clearbit)
Riesgo: rate-limit API / fallback incompleto
15 min
3
Prompt de scoring + parser de salida
Riesgo: salida no parseable / categorías ambiguas
15 min
4
Persistencia Supabase + manejo de errores
Riesgo: conflictos de clave duplicada en upsert
15 min
5
Webhook Slack + test de integración end-to-end
Riesgo: doble envío por reintentos del webhook
15 min
Haiku (3 unidades) Sonnet (2 unidades) Opus (arquitectura inicial)
Enrutado de modelos por complejidad
Haiku 3
Esquema Pydantic, prompt de clasificación, transformaciones boilerplate, parser de salida JSON, upsert Supabase
Coste estimado: ~0,0008 € / lead · 600 tokens
Sonnet 4
Agente de enriquecimiento Clearbit con fallback, lógica de webhook idempotente, test de integración
Coste estimado: ~0,012 € / tarea · 1.100 tokens
Opus 4
Arquitectura inicial (sesión 0): decisión de separar enriquecimiento del scoring, invariantes de idempotencia en Supabase
Coste estimado: ~0,045 € / sesión · 2.400 tokens (una sola vez)
Seguimiento de coste por tarea
Arquitectura (Opus)
Opus 4
2.400 tok
0,045 €
Unidad 1: FastAPI endpoint
Haiku 3
580 tok
0,001 €
Unidad 2: Enriquecimiento
Sonnet 4
1.120 tok
0,013 €
Unidad 3: Prompt scoring
Haiku 3
620 tok
0,001 €
Unidad 4: Supabase upsert
Haiku 3
490 tok
0,001 €
Unidad 5: Webhook Slack + e2e
Sonnet 4
980 tok
0,011 €
Total implementación (una vez)
0,072 €
Coste en producción por lead procesado
0,014 € / lead
✓ Dentro del presupuesto máximo de 0,05 € / lead · Ahorro del 72%
Estrategia de sesiones
Sesión 0 — Arquitectura
Opus 4 define la arquitectura, invariantes y criterios de done. Se captura en ARCHITECTURE.md antes de implementar.
→ Iniciar sesión nueva. Compactar al finalizar.
Sesión 1 — Unidades 1-3
FastAPI endpoint + enriquecimiento + scoring. Unidades acopladas al mismo módulo core; se ejecutan en sesión continua.
→ Continuar sesión entre unidades 1-3.
Sesión 2 — Unidades 4-5
Persistencia Supabase + webhook Slack. Transición de fase: iniciar sesión limpia para evitar contexto contaminado.
→ Sesión nueva. Inyectar ARCHITECTURE.md como contexto.
Sesión 3 — Evals finales
Re-ejecutar capability-01/02/03 + regression-01/02/03. Comparar deltas con baseline v1.
→ Compactar después de confirmar PASS en todos los evals.
Escalado a Opus (si necesario)
Solo si Sonnet/Haiku fallan con un gap de razonamiento claro (ej. invariante de idempotencia en webhook). No escalar por errores de sintaxis.
→ Escalación justificada por log de reintentos.
Foco de revisión humana (código IA)
!
Idempotencia del webhook Slack
Riesgo de doble envío en reintentos. Verificar que el agente añadió clave de deduplicación (lead_id + scored_at hash).
!
Asunciones de autenticación en Supabase
Confirmar que el agente usa service_role solo en backend, nunca expuesto en cliente. Revisar RLS policies.
~
Edge cases en enriquecimiento Clearbit
Emails personales (gmail/hotmail) sin datos de empresa. El fallback debe retornar un score conservador, no fallar el endpoint.
~
Acoplamiento oculto con CRM v1
Revisar que el endpoint v2 no modifica la tabla leads_raw usada por el sistema v1 en paralelo.
Estilo y formato de código
Delegado a ruff + black (CI). No gastar ciclos de revisión humana en esto.
Nombrado de variables y docstrings
No priorizar en revisión. El agente sigue las convenciones del proyecto automáticamente.
Artefacto generado — score_lead.py (fragmento)
# Generado por Claude Haiku (unidad 3) · Revisado por humano from pydantic import BaseModel from anthropic import Anthropic import hashlib client = Anthropic() SCORING_PROMPT = """ Clasifica el lead en: frio | tibio | caliente. Empresa: {company} Cargo: {role} Señales de intención: {intent_signals} Responde solo JSON: {{"score": "...", "razón": "..."}} """ async def score_lead(lead: LeadInput) -> LeadScore: enriched = await enrich_company(lead.email) # Haiku: clasificación de bajo coste response = client.messages.create( model="claude-haiku-3-5", max_tokens=150, messages=[{ "role": "user", "content": SCORING_PROMPT.format(**enriched) }] ) result = parse_score(response.content[0].text) await upsert_supabase(lead.id, result) if result.score == "caliente": dedup_key = hashlib.md5( f"{lead.id}:{result.scored_at}".encode() ).hexdigest() await notify_slack(result, dedup_key) return result # Tokens usados: 147 input + 38 output = 185 tok / lead # Coste: 0.00037 USD · Latencia p95: 0.8 s
Métricas de implementación
Reintentos necesarios
0
todas las unidades: primer intento
Escalaciones a Opus
0
Haiku/Sonnet suficientes
Cobertura de tests
94 %
pytest · 48 assertions
Breaking changes v1
0
compatibilidad total
Principios aplicados en este proyecto
Eval-First 15-min units Model routing Session compaction Cost tracking Regression evals Human review: invariants No style-review
Skill utilizada
ingenieria-agentica
CULTIVA IA · IA-Ingenieria-MLOps