Benchmark IA Dental — los 6 proyectos completos (encargos ejecutables)
Fecha: 2026-09-26
Contexto: detalle ejecutable del eje en [CREDENCIAL].md.
Uso: cada brief se pega como encargo a un agente de código (opencode / Claude Code)
en su carpeta del monorepo. IDs = mismos del eje. Orden de ejecución:
E1 → E6 (transversal, arranca con E1) → E2 → E4 → E5 → E3 (condicional).
Base común (los 6 la heredan)
- Vertical: clínica dental ficticia. Cero nombres ni datos de clínicas reales.
- Corpus sintético español MX (~15 docs): FAQs, precios, políticas (cancelación, pagos, privacidad), preparación pre/post operatoria, horarios, perfiles. Encabezado visible: “datos ficticios de laboratorio”.
- Golden set: 50 preguntas con respuesta esperada, categoría y flag “escala sí/no” (20 redactadas a mano primero; 30 variaciones).
- Stack fijo: LlamaIndex (RAG), FAISS (índice), promptfoo (evals), RAGAS (métricas). LLM principal pesos MIT: MiMo-V2.6-Pro o DeepSeek V4 Pro; económico: DeepSeek V4.1 Flash o MiMo-V2.6-Flash. Embeddings: Qwen3 Embedding 4B/8B. Qwen/GLM/Kimi solo experimentos internos, nunca base de reventa sin revisar términos.
- Coste: cada corrida registra coste por interacción (tokens in/out × tarifa + infra).
- Prohibido en toda la fase: datos reales de pacientes o clínicas, mensajería masiva, publicar números del benchmark.
- Cada proyecto entrega 3 cosas: artefacto concreto + columna para el informe + límite conocido por escrito.
benchmark-ia-dental/
├── shared/ # corpus/, golden_set/, harness_eval.py, costos.py
├── e1_rag/
├── e2_prompts/
├── e3_finetune/
├── e4_agente/
├── e5_n8n/
├── e6_benchmark/ # informe/benchmark_v0.md
E1 — RAG conversacional · rama: recuperación + generación
Objetivo: responder preguntas de pacientes desde el corpus, citando la fuente. Artefacto: índice + CLI de consulta + tabla RAGAS sobre las 50 preguntas. Pasos:
- corpus v0 (15 docs) + golden set v0 (20 preguntas a mano).
- chunking semántico 256-512 tokens con metadatos (fuente, categoría, fecha).
- índice FAISS + retrieval híbrido vector + BM25 con RRF.
- rerank top-50 → top-8 (Qwen3 Reranker local; cross-encoder ligero si no está).
- respuesta con cita al chunk; “no lo sé, te canalizo” cuando no hay contexto.
- correr RAGAS + registrar coste/interacción.
Métricas/umbrales: faithfulness >0.85 · context precision >0.75 · context recall >0.75 · answer relevance >0.80 · citation accuracy >0.90. Sin problemas: solo corpus sintético; LLM MIT; nada que imite una clínica real. Tiempo/coste: 1-2 semanas · $0-20.
E2 — Prompts A/B versionados · rama: prompting
Objetivo: tratar prompts como código y medir su efecto con datos, no con opinión.
Artefacto: 3 variantes (A genérico, B recepcionista consultiva, C empática
anti-ansiedad) + tabla de deltas + make regress que re-corre todo.
Pasos:
- criterios: precisión, tono (rúbrica 1-5 en 20 casos), escalado correcto.
- versionar prompts en git (ej. v1.0.0-baseline).
- promptfoo: 50 preguntas × 3 variantes.
- elegir ganadora, congelar v1.0, dejar regresión automatizada.
Métricas: delta de answer relevance vs E1 · cumplimiento de formato · sin regresión >2% al cambiar de versión. Sin problemas: sin secretos en prompts; el prompt no promete nada no medido. Tiempo/coste: 3-5 días · ~$0.
E3 — Fine-tuning ligero de intención · rama: especialización — CONDICIONAL
Objetivo: clasificador local y barato de intención (agendar, precio, urgencia, queja, info, fuera de alcance). Se activa solo si E1/E2 muestran coste/interacción o latencia p95 inaceptables (umbral que fija el informe). Si no se activa, se documenta el porqué: también es dato. Artefacto: dataset sintético 500-1000 ejemplos etiquetados + adaptador QLoRA + F1 por clase + comparativa contra few-shot del LLM grande. Pasos: generar dataset (revisar 100 a mano) → split estratificado → QLoRA r=16, α=32, 1-2 épocas con early stopping → eval → comparar coste/latencia. Métricas: F1 macro >0.90 · latencia local <300 ms · caída ≤3% vs LLM grande · coste por clasificación ~0. Sin problemas: revisar términos de la base (Gemma/Qwen) antes de usar derivados en reventa; no entrenar con datos reales. Tiempo/coste: 1 semana · $5-50 de compute.
E4 — Agente con herramientas + human-in-the-loop · rama: agentes
Objetivo: agente que consulta disponibilidad (simulada), crea lead (simulado) y escala a humano; toda escritura con aprobación. Artefacto: grafo LangGraph + 3 herramientas + gate de aprobación + log JSONL auditable + informe de task success. Pasos:
- contratos:
consultar_disponibilidad(fecha),crear_lead(nombre, tel, motivo),escalar_a_humano(motivo). - nodos razonar → actuar → verificar; HITL obligatorio para crear_lead.
- 20 conversaciones simuladas, 3 de ellas con prompt injection dentro de un documento del corpus (el agente debe ignorarla, no ejecutarla).
- medir y documentar.
Métricas: task success >85% · tool accuracy >90% · escalado correcto >90% · 0 acciones no aprobadas · 0 instrucciones inyectadas ejecutadas. Sin problemas: herramientas 100% simuladas; least privilege; auditoría completa; los ataques se prueban solo contra nuestro propio agente. Tiempo/coste: 1-2 semanas.
E5 — Captación automatizada con n8n · rama: integración
Objetivo: lead entra → mensaje personalizado en minutos → notificación → seguimiento a 24 h. Artefacto: workflow n8n exportado (JSON) + medición de tiempos + plantilla reutilizable por vertical. Pasos: webhook → validar input → mensaje con LLM flash → guardar lead (Sheets/Supabase) → notificar → recordatorio 24 h → 20 corridas de prueba. Métricas: respuesta <5 min (objetivo: segundos) · 0 fallos en 20 corridas · coste por lead medido. Sin problemas: solo cuentas/números propios de prueba; nada de envío masivo (anti-spam); n8n self-hosted con auth; secretos en env. Tiempo/coste: 3-5 días · $0-10.
E6 — Benchmark y cálculo de alcances · rama: evaluación — EL EJE
Objetivo: un informe re-ejecutable que convierte métricas en alcances prometibles.
Artefacto: informe/benchmark_v0.md (1-2 páginas): columna por proyecto,
coste por interacción, límites conocidos, 3 frases de alcance listas para cliente.
Pasos:
make benchcorre E1-E5 y regenera el informe (mismas seeds → mismos números).- consolidar métricas + coste + límites.
- redactar frases con la fórmula: métrica + condiciones + coste.
- revisión dura: todo número con su límite escrito; si un número no se sostiene, se baja la promesa, no se maquilla.
Métricas: 100% de afirmaciones con número + límite + coste · re-ejecutable con un comando · reproducible con seed. Sin problemas: interno; no se publica ni se presenta como caso de éxito; cero testimonios ficticios. Tiempo: continuo desde el día 1.
Regla de promoción y testigo
Ninguna estación se promueve hasta estar estable 2 semanas y con número en el informe. Una clínica dental real ve el benchmark v0 antes de la semana 8; sin testigo externo no se avanza a E4.