Arbor HTR · Run Completado

LeadSense AI — Optimización Autónoma del Agente de Cualificación

Hypothesis Tree Refinement · 12 ciclos · 9 experimentos · branching=3 · max-depth=2
Artefacto: qualify_agent.py
Objetivo: Maximizar accuracy en cualificación de leads (coste controlado)
E_dev: eval.py --split dev --n 80
E_test: eval.py --split test --n 400 --seed 42
Rama final: arbor/best
Fecha: 2026-06-15
Accuracy Test Final
83.2%
▲ +22.2 pp vs M₀ (61%)
Nodos Explorados
9
3 dir. × 3 leaves
Merge Gate Pasados
3 / 9
6 rechazados (dev≠test)
Coste por Lead
$0.0031
−38% vs versión naive CoT
Árbol de Hipótesis
Merged (test pasó)
Validado (solo dev)
Podado
Pendiente
🌱

n0 — M₀: qualify_agent.py v0

Baseline GPT-4o-mini · prompt básico sin CoT · sin herramientas · dev 61% · test 61%

61%
n1 ✓ Merged
El cuello de botella es el razonamiento: el modelo clasifica sin descomponer los atributos del lead en criterios explícitos.
Chain-of-thought estructurado con criterios BANT mejora consistentemente la calibración del score. Genera el mayor delta absoluto del experimento.
n2 Parcial
La señal de la web del lead no está siendo procesada: el agente recibe la URL pero no extrae contexto de empresa/sector.
Enriquecer con scraping de la landing mejora dev (+8 pp) pero añade latencia e inconsistencia que el test gate detecta. Direccion válida, implementación incompleta.
n3 ✗ Podado
El modelo sobreusa el score 50 como âncora: calibrar con few-shot de distribución forzará mayor discriminación.
El few-shot overfit a dev. Los ejemplos memorizaban patrones de la partición de dev y no generalizaban. Razón de poda: no hay transferencia al test.
n1.1
dev 79% test 78.5% ✓
Prompt con CoT BANT (Budget·Authority·Need·Timeline) paso a paso, sin cambiar el modelo ni tools. MERGED → M_best v1
n1.2
dev 84% test 83.2% ✓
CoT BANT + agregación k=3 rollouts con evidence dossier en lugar de majority vote. MERGED → M_best v2 (FINAL)
n1.3
dev 87% test 79% ✗
CoT BANT + k=5 + juez GPT-4o para desempate. Dev muy alto, test rechazado: el juez adicional sobreajusta la partición de dev.
n2.1
dev 82% test 74% ✗
Scraping simple (requests+BS4) de la web del lead. Dev mejora, test cae: webs inaccesibles o cambiadas crean señal ruidosa.
n2.2
dev 80% test 76% ✗
Enriquecimiento con Clearbit Reveal (sector+tamaño). Mejora moderada dev, no supera merge gate por dependencia API externa.
n2.3
pendiente
Extracción de señales LinkedIn (cargo exacto + crecimiento empresa) sin API externa. Presupuesto agotado antes de ejecutar.
n3.1
dev 76% test 63% ✗
Few-shot 8 ejemplos balanceados (4+/4-). Alta brecha dev/test: 13 pp. Overfitting claro a patrones de dev.
n3.2
dev 73% test 61% ✗
Few-shot 4 ejemplos extremos (leads muy buenos/muy malos). Sin mejora sobre baseline en test. Dirección n3 podada.
n3.3
cancelado
Few-shot dinámico (retrieval de ejemplos similares). Cancelado tras poda de n3 por ausencia de señal transferible.
Evolución de Scores y Conocimiento Acumulado
Accuracy por ciclo — Dev vs. Test (merge gate)
Dev score
Test score (solo en merge)
M_best actual
90% 80% 70% 60% 50% n1.1 n3.1 n2.1 n1.2 n3.2 n2.2 n1.3 n2.3† 78.5%✓ 83.2%✓ 79%✗ M₀ 61% †budget

Insights Globales Destilados

▲ Prior Global #1
El razonamiento estructurado (BANT CoT) es la palanca principal en esta tarea. Las mejoras en enriquecimiento solo tienen efecto marginal si el razonamiento base es pobre.
✓ Lección Merged
K=3 rollouts con evidence dossier domina majority vote: las respuestas correctas aparecen en minoría de rollouts; la agregación por evidencia las recupera sin inflar coste.
✗ Constraint Negativo
Few-shot con ejemplos de la partición dev no transfiere: la brecha dev/test supera 12 pp en todos los nodos n3.x. Evitar en futuras direcciones.
⚠ Frontera Conocida
Enriquecimiento web (n2.x) tiene potencial (+8 pp dev) pero la implementación actual introduce ruido que el test gate detecta. Requiere caching robusto y fallback.
Audit Trail Completo — tree.py status
Nodo Hipótesis Estado Dev Test Branch
n0 M₀ — qualify_agent.py v0 (GPT-4o-mini, prompt básico) baseline 61.0% 61.0% main
n1 El cuello de botella es el razonamiento: clasificar sin descomponer atributos BANT. merged dir/n1-reasoning
n1.1 CoT estructurado BANT paso a paso (sin cambio de modelo). merged 79.0% 78.5% ✓ wt/n1-1
n1.2 CoT BANT + k=3 rollouts con evidence dossier (agrega en lugar de majority). merged 84.0% 83.2% ✓ arbor/best
n1.3 CoT BANT + k=5 + juez GPT-4o para desempate. rechazado 87.0% 79.0% ✗ wt/n1-3
n2 La URL del lead no se procesa: el agente no extrae contexto de empresa/sector. parcial dir/n2-enrich
n2.1 Scraping requests+BS4 de la landing del lead para extraer sector y tamaño. rechazado 82.0% 74.0% ✗ wt/n2-1
n2.2 Enriquecimiento con Clearbit Reveal (sector + headcount). rechazado 80.0% 76.0% ✗ wt/n2-2
n2.3 Señales LinkedIn (cargo exacto + crecimiento empresa) sin API externa. pendiente
n3 El modelo sobreusa score 50 como áncora; few-shot forzará mayor discriminación. podado dir/n3-fewshot
n3.1 Few-shot 8 ejemplos balanceados (4+ / 4−) del dataset dev. podado 76.0% 63.0% ✗ wt/n3-1
n3.2 Few-shot 4 ejemplos extremos (leads muy buenos / muy malos). podado 73.0% 61.0% ✗ wt/n3-2
n3.3 Few-shot dinámico por similitud (retrieval). Cancelado tras poda de n3. cancelado
Check de Overfitting y Direcciones Abiertas

Dev vs. Test — Honest Gap

Nodos con mejora en dev (vs M₀)7 / 9
Nodos que pasaron merge gate (test)2 / 7
Brecha media dev/test en rechazados−9.4 pp
Conclusión: 5 de 7 candidatos mejoran dev pero no transfieren. El gap dev/test fue especialmente pronunciado en n3.x (few-shot, −13 pp) y n1.3 (juez GPT-4o, −8 pp). El merge gate fue esencial — sin él, n1.3 habría sido la "mejor" versión a pesar de ser peor que n1.2 en producción.

Direcciones Abiertas (próximo run)

1

n2.3 LinkedIn signals: La dirección n2 tiene potencial real (+8 pp dev en n2.1). Completar con extracción de señales LinkedIn sin API usando parsing de perfiles públicos. Requiere caching y fallback robusto para superar el test gate.

2

Modelo mayor selectivo: n1.3 mostró que un juez GPT-4o en todos los casos introduce sobreajuste. Hipótesis: usar GPT-4o solo en leads de score medio (45-65) reduce coste y mejora calibración en los casos difíciles.

3

Nueva formulación alta nivel: El árbol actual asume que el modelo tiene toda la información necesaria. Posible límite estructural: puede ser necesario replantear el task como tool-use con herramientas de búsqueda en lugar de clasificación pura. Escalar al equipo antes de invertir más presupuesto en HTR local.