11 JULIO 2026
Desde las trincheras · Caso real

GPT-5.6 Sol vs. Claude Fable 5
Les di mi laboratorio para que lo destriparan

Mismo producto en laboratorio, mismo prompt y el mismo encargo. Coincidieron en 21 fallos, pero cada modelo vio una parte distinta del sistema. Esta es la comparativa completa: sin pruebas de juguete y sin maquillar el resultado.

Versión audio
Dos IAs debaten este artículo
Resumen ejecutivo
01

Dos modelos, un panel, un encargo

Puse a auditar V.A.I. a dos IAs de última generación —GPT-5.6 Sol y Claude Fable 5—, con el mismo prompt de auditor senior y las mismas reglas. Yo hacía de árbitro.

02

Cero humo, cero falsos positivos

Entre las dos consolidamos decenas de fallos reales. Ni un solo falso positivo en ninguno de los dos informes. Y coincidieron, por separado, en el núcleo más grave.

03

Una tensó, la otra entendió

Una IA fue más fuerte probando los límites: guardados, valores extremos, responsive. La otra desmontó mejor la lógica: coherencia financiera, semántica de métricas, accesibilidad.

04

Medir antes de arreglar

El resultado no es un parche. Es un mapa. Backlog único, repositorio y lote de fixes — sin meter la pala antes de terminar de medir el agujero.

Índice del artículo
SECCIÓN 01

Por qué puse una IA a auditar mi propia plataforma

Porque construir a solas te vuelve ciega. Y porque tenía una sospecha incómoda: que estaba enseñando pantallas antes de tener claro qué se sostenía por debajo.

Llevo meses levantando V.A.I. — mi panel de operaciones para agentes de voz con IA. Y cuando llevas meses metida en algo, dejas de verlo. Tus propios bugs se vuelven invisibles: pasas por encima de ellos todos los días sin pestañear.

Así que hice algo que me daba entre curiosidad y vértigo: puse a dos IAs a destriparla. No a una. A dos. Y las puse a competir.

La idea no era «a ver si la IA encuentra bugs» —eso ya lo sabemos, los encuentra—. La idea era más fina y más útil: poner dos modelos punteros ante el mismo producto, con el mismo encargo y las mismas reglas, y ver en qué se fijaba cada uno. Porque un modelo no es solo «mejor» o «peor». Es que miran distinto. Y esa diferencia, cuando la que audita es la máquina que va a tocar el código, importa muchísimo.

Elegí dos de última generación: GPT-5.6 Sol, trabajando desde ChatGPT Work con Codex —le puse de mote SOL—, y Claude Fable 5 —a la que llamé Fable—. A partir de aquí las llamo así. Yo me quedé en el único puesto que me interesaba: el de árbitro. Ni programé mientras auditaban, ni les soplé respuestas. Navegaban, observaban, anotaban. Y al final, cruzábamos.

La tesis

Auditar con IA no es apretar un botón y recibir una lista. Es un método: encargo cerrado, reglas iguales para todos, y un cruce con criterio antes de tocar una sola línea. La IA encuentra; el juicio de qué es grave, qué es humo y qué es causa raíz sigue necesitando cabeza. La tuya.

SECCIÓN 02

Qué es V.A.I. (y qué le pedí exactamente)

Un panel con dos caras: la del administrador que gestiona todos sus clientes, y la del cliente que solo ve lo suyo. Justo el tipo de producto donde un fallo se paga caro.

V.A.I. —mi fórmula: Voz + Automatización + IA— es el centro de mando de una operación de agentes de voz. Tiene dos paneles. El de Admin, desde donde yo gestiono campañas salientes, enrutado de llamadas entrantes, post-call, calidad, agentes, conocimiento, clientes, márgenes y calculadora de rentabilidad. Y el de Cliente, donde cada cliente ve solo su actividad: su resumen, su ROI, sus llamadas, sus números.

Esa palabra —solo lo suyo— es la que convierte a este producto en un campo de minas. En un panel donde un cliente jamás debe ver los datos de otro, un fallo de aislamiento no es un bug estético: es una fuga. Por eso quería una auditoría de verdad, no un paseo.

El encargo que les di fue idéntico para las dos, palabra por palabra. Un rol de auditor de producto y QA senior, con cuatro ejes obligatorios en cada pantalla y una escala de gravedad de tres niveles:

EjeQué tenían que mirar en cada pantalla
Funcional¿Hace lo que promete? Botones muertos, enlaces rotos, estados vacíos mal resueltos, filtros que no filtran, formularios que no validan.
Datos y lógica¿Los números tienen sentido y cuadran entre sí? Totales, unidades, KPIs contradictorios, cálculos sospechosos.
UX / diseñoConsistencia visual, jerarquía, legibilidad, responsive, terminología, estados hover/focus.
Robustez / seguridadManejo de errores, datos vacíos o extremos, ¿se ve información que no debería?, ¿el cliente ve solo lo suyo?

Y una escala de severidad que luego sería decisiva: 🔴 Crítico —rompe una función, dato que engaña o fuga de información—, 🟡 Mejora —funciona pero hay un problema real de usabilidad o coherencia— y 🔵 Pulido —detalle menor o cosmético—. Guárdate esta escala. Al final del duelo se convierte en el terreno donde se decidió casi todo.

Nota de seguridad

Todo lo que auditaron era un modo demo con datos ficticios: agentes de mentira, números de mentira, cero clientes reales. En este artículo no verás ninguna URL del panel, ni credenciales, ni nada que comprometa la operación. Solo el método, los hallazgos y las lecciones.

SECCIÓN 03

La ronda cero: la que no cuenta

Antes del duelo justo hubo un ensayo. Y en ese ensayo la plataforma se cayó de una forma que lo cambió todo — incluidas las reglas.

La primera pasada fue un desastre productivo. Las dos IAs entraron en el modo demo y, en varias pantallas, se encontraron con algo feo: el error técnico crudo volcado directamente en la cara del usuario. No un «vaya, algo ha fallado» con cariño. El churro entero: el HTML de un error 404, tal cual, dentro de un recuadro rojo enorme.

¿La causa? En modo demo, la app seguía llamando por detrás al backend real de la plataforma de voz — un backend que sin sesión de administrador no existe. Y en vez de tragar ese fallo con elegancia, lo escupía en pantalla. Un bug real, no del demo: los errores internos se propagaban sin filtrar hasta la interfaz.

Dos verdades incómodas de la ronda cero

Una: los errores técnicos llegaban crudos al usuario final. Dos: la sesión de demo no se conservaba al navegar, así que los enlaces directos a una pantalla concreta te echaban al login. Ambas se detectaron, se diagnosticaron con acceso al código, se corrigieron y se volvieron a desplegar en mitad de la prueba.

Y ahí saltó la cuestión metodológica, que es de las cosas más importantes de todo esto: la plataforma había cambiado durante el examen. Si una IA conoció el fallo y la otra no, la comparación deja de ser limpia. Así que tomamos una decisión de árbitro: todo lo anterior queda como «ronda de diagnóstico previa» y no cuenta. El duelo oficial empieza de cero, sobre la versión ya corregida, y las dos IAs vuelven a recorrerlo entero.

Lo dejo escrito aquí porque es de honestos: hubo una asimetría —una de las IAs llegó a ver parte del código y la causa raíz durante ese ensayo— y esa asimetría se anota, no se esconde. Una comparación solo vale si cuentas también dónde no era justa.

Ronda 0 · descartada
Diagnóstico previo
Ambas detectan los errores crudos en pantalla. Fable detecta además que la sesión demo no persiste al recargar o entrar por una ruta directa. Se corrige y se redespliega en caliente.
Ronda oficial
Mismo deploy, mismo prompt
Las dos recorren de nuevo Admin y Cliente, pantalla por pantalla, sobre la misma versión corregida, sin nuevos cambios durante la ronda oficial.
Cruce
Árbitro: yo
Se cruzan los dos informes hallazgo a hallazgo, se re-verifica en el navegador lo verificable y se arbitran las severidades con la escala en la mano.
SECCIÓN 04

Las reglas del duelo (y las trampas)

Para que una comparativa de modelos signifique algo, el input tiene que ser idéntico. Y las diferencias que no lo son, hay que ponerlas encima de la mesa.

Mismo prompt, palabra por palabra. Mismo deploy corregido. Mismo orden: primero Admin al completo, luego Cliente. Nada de lanzar campañas, nada de borrar, nada destructivo. Solo navegar, observar e interactuar sin romper. Hasta aquí, simétrico.

Pero hubo dos asimetrías que no se pueden barrer debajo de la alfombra, porque cambian la lectura del resultado:

Asimetría 1 · Esfuerzo

No corrieron al mismo ritmo.

SOL hizo el primer tramo del recorrido en modo «ligero» y solo subió a «medio» al llegar a la lógica financiera. Fable hizo toda su ronda en «medio». Es decir: SOL encontró parte de sus hallazgos con menos gasolina.

Asimetría 2 · Contexto

Una había visto el motor.

Durante la ronda cero, Fable llegó a ver parte del código y la causa raíz del fallo. SOL auditó siempre a ciegas, como una caja negra. Ventaja de contexto para Fable — anotada.

¿Por qué me obsesiona esto? Porque es exactamente el mismo error que veo en las empresas cuando «prueban» dos herramientas: las prueban en condiciones distintas y luego sacan conclusiones como si fueran iguales. Una comparación sin sus asimetrías anotadas no es una comparación: es una anécdota.

SECCIÓN 05

Lo que encontraron de verdad

Aquí es donde deja de ser un experimento bonito y se convierte en una lista de cosas que arreglar. Sin piedad. Y con nombres.

Voy a enseñarte los hallazgos que más me dolieron —porque son los que de verdad enseñan—. No están todos; están los que cuentan una lección. Los agrupo por gravedad, con la escala de antes.

🔴 El que me quitó el sueño: identidad cruzada

El panel de Cliente te saluda por tu nombre. En la demo, ese nombre era «Cliente A». Y en la pantalla de Ajustes, en efecto, ponía Cliente A. Perfecto. Salvo que el resumen, las llamadas, los agentes y hasta las transcripciones que veía esa cuenta eran de OTRO cliente — el Cliente B, una operación completamente distinta.

En la demo es una mezcla confirmada de datos de prueba (fixtures). En producción, con datos reales, el mismo patrón sería una fuga de información entre clientes. Y aquí un matiz que importa, técnica y jurídicamente: no hemos demostrado una fuga real. Hasta revisar el tenant, las consultas y las políticas de aislamiento (RLS) en el código, se trata como riesgo crítico, no como fuga probada. Aun así, es exactamente el hallazgo que, si estás vendiendo un panel multi-cliente, te hunde la venta. Las dos IAs lo cazaron por separado y las dos lo marcaron como lo más grave del panel. Cuando dos auditores independientes coinciden en tu peor pesadilla, ya no es opinión.

Recreación anonimizada de un panel que identifica la cuenta como Cliente A mientras muestra datos de Cliente B.
La identidad mostraba Cliente A, pero los agentes y transcripciones pertenecían a Cliente B. En demo eran fixtures cruzados; en producción, el mismo patrón supondría un riesgo crítico de aislamiento.

🔴 Varios universos de datos disfrazados de uno

El panel mezclaba, sin avisar, tres conjuntos de datos que no encajaban entre sí. Un resumen enseñaba millones de llamadas; otra pantalla, con los mismos «clientes», hablaba de 880; y las herramientas de construcción vivían en un tercer mundo con otros agentes distintos. Números correctos cada uno dentro de su fuente, pero engañosos cuando los lees juntos.

El detalle que lo resume: en el panel de Cliente, el Resumen presumía de 1.241 citas y, dos clics después, la pantalla de ROI usaba 223 «citas reales» para calcular el retorno. La misma cuenta, dos verdades. Un cliente que mira eso no piensa «qué interesante la arquitectura de datos». Piensa «esto no me lo creo».

Comparación entre el Resumen Cliente y el cálculo de ROI mostrando cifras de citas contradictorias.
La misma cuenta y el mismo periodo aparente: 1.241 citas en Resumen; 223 «citas reales» en ROI.

🔴 El error crudo que sobrevivió

Tres pantallas seguían mostrando el churro técnico —FAILED TO SEND A REQUEST TO THE EDGE FUNCTION— en la cara del usuario. El fix de la ronda cero había tapado unas pantallas, pero no las que llamaban a otro servicio. Lección de fontanería: tapar una fuga no es arreglar la instalación.

🔴 El «éxito falso» (este solo lo vio una)

En el editor de agentes, le das a Guardar y el panel te felicita: «Guardado. Los cambios crean una versión borrador». Suena a que ha ido bien. No ha ido bien: no se guarda nada. La escritura está bloqueada en demo, como debe, pero en vez de decírtelo, finge que ha funcionado. De todos los fallos, este es el más traicionero: un error que se disfraza de acierto es peor que un error a secas, porque no te enteras. Solo lo encontró Fable — porque fue la que se puso a pulsar botones de guardar. SOL, que no ejecutó escrituras, no podía verlo.

Matiz metodológico

Y aquí toca ser honesta con la letra pequeña: el prompt prohibía enviar formularios que dispararan acciones externas. Fable fue más allá de la lectura estricta de ese límite y probó Guardar dentro del entorno demo. No produjo ningún cambio real —la escritura estaba bloqueada— y el hallazgo se conserva, pero esa diferencia de iniciativa también forma parte de la comparación, no solo la agudeza.

🔴 Los decimales fantasma de la calculadora

Este es de orfebrería, y lo cazó SOL. En la calculadora de rentabilidad, con los mismos valores a la vista, el resultado cambiaba: 8.935 € la primera vez, 8.933 € después de tocar y volver. ¿Por qué? Precisión oculta detrás de los números redondeados que se muestran. Un cálculo que da dos respuestas distintas con los mismos datos visibles es, para una herramienta que sirve para decidir dinero, veneno.

Comparación del éxito falso descubierto por Fable y la diferencia de cálculo detectada por SOL.
Dos exclusivos, dos formas de engañar: comunicar un guardado inexistente y calcular resultados diferentes con los mismos valores visibles.

🔴🟡 Y una constelación de datos que engañan y funciones a medio cerrar

Algunas rompen de verdad y otras solo rozan, pero todas mienten un poco: un gráfico que dibuja citas (decenas al día) y llamadas (cientos de miles) sobre el mismo eje, haciéndolas parecer comparables. Un panel que dice «880 analizadas» cuando la suma da 846. Una sección llamada «No interesado» que mete dentro a los que pidieron «llamar más tarde» — que no es lo mismo, ni de lejos, y contamina la métrica. Un botón «Escuchar grabación» que apunta a la nada. Formularios que se lanzan con el nombre vacío, que aceptan fechas en el pasado, que tragan una tasa de cierre del 150 % o un volumen negativo. Y selectores, botones y pesos sin nombre accesible — invisibles para quien navega con lector de pantalla. Cuáles de estas son críticas y cuáles mejora lo verás en la tabla de arbitraje, un poco más abajo.

Lo que también hay que decir

No todo era ruina. Las dos IAs coincidieron en elogiar lo mismo: la limpieza de listas de la campaña saliente (detecta duplicados y teléfonos inválidos y te dice por qué), el recálculo en vivo de los márgenes, y que las fórmulas base de ROI y márgenes siguen la lógica prevista dentro de su fuente y gestionan bien los casos de división por cero. El esqueleto es bueno. El problema es la piel.

Un error a secas te frena. Un error disfrazado de acierto te miente.

Sobre el «éxito falso» al guardar
SECCIÓN 06

El cruce, número a número

Aquí es donde el árbitro se gana el sueldo. Dos informes, hallazgo a hallazgo, re-verificando en el navegador todo lo verificable antes de dar nada por bueno.

Cruzar no es sumar dos listas. Es preguntarse, por cada hallazgo: ¿lo vieron los dos? ¿es exclusivo de uno? ¿es el mismo problema con dos nombres? ¿es síntoma o causa? Y sobre todo: ¿es verdad? Antes de clasificar nada, volví al panel y re-verifiqué a mano cada hallazgo exclusivo que se pudiera comprobar sin código. Los números finales:

21
Coincidencias plenas
(las dos, por separado)
12
Exclusivos de SOL
verificados
11
Exclusivos de Fable
verificados
0
Falsos positivos
(hallazgos consolidados)
Además · una coincidencia parcial

Hubo un hallazgo número veintidós a medio camino: los dos vieron el síntoma —una sección que mete «llamar más tarde» dentro de «no interesado»—, pero solo SOL identificó que eso contamina semánticamente la métrica de rechazo. Coincidencia en el qué, no en la lectura.

Léelo despacio, porque hay dos datos gordos ahí dentro. El primero: cero falsos positivos entre los hallazgos consolidados. Tras la verificación, ninguno de los que entraron en el cruce resultó inventado —un único hallazgo de Fable quedó fuera del recuento por falta de evidencia suficiente, no por ser falso—. Para quien tenga la idea de que la IA «alucina bugs», ahí está el dato: con un encargo cerrado y verificación posterior, ninguno de los hallazgos consolidados resultó inventado.

El segundo: 21 coincidencias plenas. Veintiuna veces, dos modelos distintos, mirando por separado, apuntaron al mismo problema. Ese solapamiento es oro: son los hallazgos con máxima confianza, los que priorizas sin discutir — aunque la causa raíz todavía haya que validarla en el código. Y el núcleo duro —identidad cruzada, universos de datos, errores crudos— está entero ahí dentro.

Luego está lo que hace interesante la comparación: los exclusivos. Y aquí viene el matiz honesto — buena parte de esos exclusivos no son «uno es más listo que el otro», sino cobertura distinta. Fable ejecutó guardados y probó el móvil; por eso vio el éxito falso y el responsive roto — cosas que SOL, por su forma de auditar, ni tocó. SOL desmenuzó formularios, accesibilidad y decimales; por eso vio cosas que a Fable se le escaparon. No miraron lo mismo con distinta vista. Miraron sitios distintos.

El terreno donde se decidió: la severidad

Hubo 9 hallazgos en los que los dos coincidían en el qué pero discrepaban en el cómo de grave. Y esto, para mí, es lo más revelador de todo el experimento. Porque no me fié de ninguna: cogí la escala del prompt, la apliqué literalmente a cada uno de los nueve, y arbitré.

HallazgoSOLFableMi arbitraje
«880 analizadas» cuando son 846🔴🟡🔴
Citas y llamadas en un solo eje🔴🟡🔴
«Llamar más tarde» dentro de «No interesado»🔴🟡🔴
Versión v0 en la lista, v3 en el editor🔴🟡🔴
Crear demo sin agente disponible🔴🟡🔴
«0 agentes» mientras el Studio muestra 3🔴🟡🔴
«Escuchar grabación» que no lleva a nada🔴🟡🔴
Showcase + «aún no hay clientes» juntos🔴🟡🟡
Voz técnica y sin estado en las tarjetas🟡🔵🟡

El resultado del arbitraje, aplicando la letra de la escala: SOL estuvo mejor ajustado en 8 de los 9. Y no por casualidad. Fable tendía a leer un «dato que engaña» como un problema de coherencia (🟡), cuando la escala decía claramente que un dato falso presentado como verdadero es crítico (🔴). SOL calibraba mejor la gravedad. En el único donde le di la razón a Fable —el del showcase—, era porque ese bloque sí estaba rotulado como simulado, así que era incoherencia, no mentira.

SECCIÓN 07

Quién ganó (respuesta honesta)

La pregunta que todo el mundo quiere. Y la respuesta que casi nadie da: depende de qué le estés pidiendo a una auditoría.

SOL · familia GPT
Entendió mejor el sistema
Coherencia financiera+
Semántica de métricas+
Validación de formularios+
Accesibilidad+
Severidad bien calibrada8/9
Decimales ocultos
VS
Fable · familia Claude
Tensó mejor el comportamiento
Ejecutó escrituras+
Valores extremos+
Responsive / móvil+
El «éxito falso»
Fechas pasadas, 150%
Toda la ronda en «medio»

Si la pregunta es «¿qué modelo hizo la auditoría más profunda del producto y entendió mejor dónde podía engañar al usuario?» — la respuesta es SOL. Desmontó la lógica, calibró la gravedad y se metió en los rincones semánticos donde un producto miente sin querer.

Si la pregunta es «¿qué modelo cubrió más tipos de interacción, más bordes, más comportamiento real?» — la respuesta es Fable. Pulsó, rompió, estiró, giró la pantalla. Encontró el único fallo que se disfrazaba de acierto.

Pero hay un dato difícil de esquivar, y como árbitro me toca decirlo: SOL sacó una parte importante de sus hallazgos en modo ligero, mientras Fable trabajó toda la ronda en medio. Y en las nueve peleas de severidad, la lectura de SOL se impuso en ocho. Eso no es una paliza. Es algo más fino y más publicable:

Fable probó más bordes. SOL entendió mejor el sistema.

El veredicto, sin trampa

Y la conclusión de verdad, la que me llevo a la mesa de trabajo, no es «gana este». Es que la auditoría ideal usa a los dos. Uno para tensar el comportamiento hasta que algo cruja; otro para entender por qué crujió y cómo de grave es. Quedarte con uno solo es renunciar a media foto.

SECCIÓN 08

El siguiente paso: medir el agujero

Con el cruce cerrado, la tentación es obvia: abrir el editor y empezar a tapar. Y es justo lo que no voy a hacer todavía.

Porque ya me ha pasado en este mismo proyecto: cada parche a medida que salía el síntoma creaba una isla nueva. Al arreglar unas pantallas apareció un tercer universo de datos. Al tapar unos errores, quedaron otros. Parchear en caliente, hallazgo a hallazgo, no arregla el sistema: lo emborrona.

OJO. Y entonces sí: backlog único, repositorio y lote de fixes. Sin meter la pala antes de terminar de medir el agujero.

Así que el cruce queda congelado como documento oficial. No se negocian más cifras ni severidades. Y antes de tocar una sola línea, toca una revisión del repositorio —solo lectura, sin modificar nada— limitada a cuatro preguntas que ninguna auditoría de caja negra puede responder, porque viven en el código:

01

¿La identidad cruzada es un dato de pega mal puesto, o hay riesgo real de aislamiento?

Es la diferencia entre un bug cosmético de la demo y una fuga multi-tenant en producción. Hasta que el código y las consultas lo demuestren, se trata como lo segundo.

02

¿Por qué la calculadora conserva precisión oculta y cambia el resultado con los mismos valores a la vista?

Una herramienta que decide dinero no puede dar dos respuestas para la misma entrada. Hay que ver dónde se guarda ese decimal fantasma.

03

¿Por qué el editor muestra una versión del agente en la lista y otra distinta al abrirlo?

¿Dos objetos? ¿Caché sin invalidar? ¿Un dato que no se versiona? Una de las dos vistas miente, y hay que saber cuál y por qué.

04

¿Por qué «Guardar» simula éxito mientras las demás escrituras se rechazan bien?

El bloqueo de demo funciona en casi todo. Saber por qué en un sitio finge acierto es saber dónde está el interruptor mal cableado.

Y solo después de responderlas: se construye el backlog por causa raíz —no por síntoma—, se corrige sobre el repositorio —nunca sobre el paquete desplegado—, y se vuelve a pasar únicamente la checklist afectada para tener el «antes y después» con pruebas. Medir, entender, agrupar, arreglar, verificar. En ese orden. Siempre en ese orden.

El panel, por dentro

Para que veas de qué hablo cuando digo «centro de mando», este es el corazón del panel Admin: la vista agregada de toda la operación. Bonita, ¿verdad? Ese es precisamente el riesgo — que lo bonito tape lo que no cuadra por debajo. De ahí toda esta auditoría.

Recreación del panel Admin de V.A.I. con indicadores simulados de llamadas, citas, costes y eficiencia.
El centro de mando de V.A.I. en modo demo. Los indicadores cuadraban dentro de su fuente; el problema aparecía al cruzarlos con otras pantallas.
FAQ

Preguntas frecuentes

Lo que más me preguntan sobre auditar producto con IA — respondido corto y sin humo.

¿Sirve una IA para auditar el producto de otra empresa (o el tuyo)?

Sí, y muy bien, pero con condiciones. En esta prueba puse dos modelos punteros a auditar el mismo panel con el mismo encargo. Entre los dos encontraron decenas de fallos reales —ni un falso positivo entre los hallazgos consolidados— y coincidieron por separado en el núcleo más grave: datos de un cliente vistos bajo la identidad de otro, errores técnicos crudos en pantalla y varios universos de datos presentados como uno. La clave no es lanzar el modelo y ya: es darle un encargo cerrado, reglas iguales y cruzar sus hallazgos con criterio antes de tocar una línea de código.

¿Qué modelo audita mejor: el que prueba los límites o el que entiende el sistema?

Los dos, pero distinto. Uno fue más fuerte tensionando el comportamiento —ejecutó guardados, metió valores extremos, revisó el responsive y encontró el único caso de éxito falso al guardar—. El otro desmontó mejor la lógica: coherencia financiera, semántica de las métricas, validación de formularios, accesibilidad y contradicciones entre módulos, y su lectura de la gravedad se ajustó mejor a la escala acordada en 8 de 9 discrepancias. Uno probó más bordes; el otro entendió mejor el sistema. La auditoría ideal usa a los dos.

¿Por qué no hay que arreglar los bugs según van apareciendo?

Porque parchear a medida que salen los síntomas crea islas nuevas y esconde la causa raíz. En esta misma auditoría, cada parche parcial de una ronda anterior había generado un problema nuevo. Lo correcto es medir entero primero: cerrar el cruce de hallazgos, separar síntoma de causa raíz, revisar el repositorio para las preguntas que solo el código responde, y solo entonces construir un backlog único por causa y aplicar el lote de fixes. Sin meter la pala antes de terminar de medir el agujero.

¿Qué es un hallazgo de identidad cruzada y por qué es tan grave en multi-cliente?

Es cuando el panel identifica la cuenta como un cliente pero muestra los datos, agentes y transcripciones de otro. En la prueba, el panel de cliente saludaba como «Cliente A» mientras enseñaba las métricas de otra cuenta (Cliente B). En una demo con datos ficticios es un defecto de configuración; en producción con datos reales, el mismo patrón sería una fuga entre clientes. Por eso se trata como riesgo crítico hasta que el código y las consultas demuestren lo contrario: hay que revisar cómo se resuelve el inquilino (tenant) y las políticas de aislamiento antes de dar acceso a clientes reales.

Si te va el método

Cada semana, desde las trincheras

Casos reales, errores documentados y lo que funciona de verdad en IA aplicada a negocio.

Sin teoría. Sin hype. Desde producción.

Grupo privado · WhatsApp
Las trincheras, en directo

Hay un grupo de WhatsApp muy privado donde comparto lo que no llega al blog: las auditorías en crudo, las decisiones a medio cocer y lo que funciona de verdad antes de contarlo. Si quieres estar dentro, entra — se está calentito.

¿Construyes en serio y auditas antes de enseñar nada?

Así trabajo yo: nada sale del laboratorio a producción sin destriparlo mil veces primero. Si vas igual de en serio — con método, midiendo antes de mover una pieza — hablemos.

Escríbeme directo. Sin formularios. Sin intermediarios.
Si tienes proyecto, dame contexto. Si no encajamos, te lo digo.