Benchmark IA Dental — un eje, seis estaciones (2026-09-26)
Contexto: pichardo.com quiere vender paquetes de IA a clínicas dentales sin experiencia previa. El benchmark interno es la evidencia que convierte capacidades en alcances prometibles. Sustituye al plan de “6 proyectos sueltos”: son 6 estaciones de una misma línea de medición.
Decisión: un eje, seis estaciones
Todo comparte 4 objetos únicos (si una estación no agrega columna al informe, no se construye):
- Corpus sintético de una clínica dental ficticia (~15 documentos): FAQs (30-50), lista de precios y tratamientos, políticas (cancelación, pagos, privacidad), preparación pre/post operatoria, horarios/ubicación, perfiles de dentistas.
- Golden set: 50 preguntas de pacientes con respuesta esperada y categoría (precio/pago, preparación/urgencia, seguros, logística, objeción/nueva cita, fuera de alcance → debe escalar).
- Harness de medición: RAGAS + promptfoo + eval de agente + contador de coste por interacción.
- Informe interno (plantilla única): cada estación agrega columnas.
Estaciones (orden por dependencia)
| # | Estación | Objeto concreto que produce | Depende de |
|---|---|---|---|
| E1 | RAG conversacional | Índice + agente respondiendo del corpus (LlamaIndex + Qwen3 Embedding 4B/8B + LLM pesos MIT: MiMo-V2.6-Pro o DeepSeek V4 Pro; FAISS local) | — |
| E6 | Medición (arranca junto a E1) | Tablero: métricas RAGAS, coste/interacción, límites escritos | E1 |
| E2 | Prompts A/B versionados | 3 variantes + deltas medidos contra golden set | E1, E6 |
| E4 | Agente con herramientas + HITL | Task success rate, escalados, log auditable (calendario/CRM simulados) | E2 |
| E5 | Automatización n8n | Workflow captura de lead → mensaje → notificación + tiempo de respuesta medido | E1 |
| E3 | Fine-tuning ligero — CONDICIONAL | Clasificador de intención + ahorro medido | Solo si E1/E2 lo justifican por coste/latencia |
Regla de promoción: no se pasa de estación hasta que la anterior esté estable 2 semanas y con número en el informe. Ritmo objetivo: 8 semanas.
Fórmula de alcance (lo que se puede prometer)
alcance prometible = métrica medida + condiciones escritas + coste por interacción
Ejemplo (una vez medido): “8 de cada 10 preguntas frecuentes respondidas correctamente (faithfulness 0.87, RAGAS sobre 50 preguntas), bajo estas 5 condiciones, a $X por conversación.”
Sin los tres componentes no hay promesa comercial.
Criterios numéricos v0 (se ajustan con la primera corrida)
- E1 listo: faithfulness > 0.85, context precision > 0.75, context recall
0.75, answer relevance > 0.80.
- E4 listo: task success > 85%, escalado correcto > 90%.
- E5 listo: respuesta a lead < 5 min, 0 fallos en 20 corridas.
- E3 se activa solo si coste/interacción supera el umbral que fije E1, o latencia p95 > 3 s.
Guardarraíles “sin meternos en problemas”
- Datos 100% sintéticos en todo el benchmark. Ningún dato real de paciente.
- Licencias: LLM principal con pesos MIT; Qwen/GLM/Kimi no se revenden sin revisar términos (revenue gates).
- Claims: nunca “publicación/supervisión automática sin humano”. Se vende “generación asistida con aprobación”.
- El informe es interno: no se presenta como caso de éxito sin permiso del piloto.
- Coste: fase en local / free tier; presupuesto máximo $50 de compute.
NO (duro)
- No fine-tuning antes de que E1/E2 lo justifiquen.
- No multi-cliente, no panel admin, no multi-tenant.
- No integraciones reales de CRM/WhatsApp (solo simuladas).
- No infraestructura productiva.
- No promesas a terceros con números del benchmark (interno hasta el piloto).
Testigo
Una clínica dental real ve el benchmark v0 en demo de 15 min antes de la semana 8. Sin testigo externo no se avanza a E4. Witnessed > finished.
Conexión con pichardo.com
Los números del benchmark son contenido propio citable (ventaja GEO): “medimos X con esta metodología”, no claims genéricos. El benchmark alimenta las páginas de servicio del plan SEO ya acordado.
Siguiente acción
Scaffold de ~/nef/projects/benchmark-ia-dental/: corpus sintético v0
(15 docs), golden set v0 (10 preguntas), harness RAGAS mínimo corriendo en
local, primera corrida de E1 con resultados en bruto.