
Mi IA de rastreo del conocimiento quería certificar a un alumno que trucó el curso. El código que escribí se negó.
Dos empleados, dos marcas de verificación verdes idénticas, y una de ellas es una mentira
La primera vez que puse los dos registros uno al lado del otro, las marcas de verificación parecían idénticas, y ese era todo el problema. Una analista BSA sénior con ocho años en el puesto y un gerente de sucursal a seis meses de su traslado acababan de «completar» la misma recertificación de cuatro horas contra el blanqueo de capitales. Su LMS reportó lo mismo para cada uno: una marca verde, «SCORM Completed», listo. Una de ellas podía dirigir una investigación de actividad sospechosa con los ojos cerrados. El otro tenía carencias reales exactamente en los conceptos que le importan a un regulador. El sistema que se supone que debía certificarlos para el trabajo de cumplimiento no podía distinguirlos, porque nunca estaba midiendo lo que sabían. Estaba midiendo si el vídeo terminaba de reproducirse.
Esa brecha no es académica, y construir esta demo me obligó a mantener las consecuencias delante de mí. Las empresas estadounidenses gastan unos 102.800 millones de dólares al año en formación corporativa, aproximadamente 874 dólares por alumno (Training Magazine, 2025), y una cuarta parte completa de los responsables de L&D dice que no pueden medir si algo de eso funcionó. En el trabajo regulado la brecha tiene un precio en el registro público. TD Bank absorbió una sanción de 3.100 millones de dólares por PBC vinculada en parte a un programa de formación inadecuado. A partir del 2 de agosto de 2026, el artículo 4 del Reglamento de IA de la UE empieza a exigir alfabetización en IA basada en roles, con sanciones de hasta 35 millones de euros o el 7% de los ingresos globales. En cada uno de esos casos el registro de «Completed» no vale nada como evidencia, porque la finalización nunca fue competencia.
El sistema no estaba midiendo si aprendían. Estaba midiendo si el vídeo terminaba de reproducirse.
Construí una demo llamada Attest para ver si podía cerrar esa brecha con honestidad. Puedes ejecutarla en veriprajna.com/es/demos/attest-ia-de-aprendizaje-adaptativo-que-certifica-competencia-no-finalizacion. Este ensayo trata de la parte de construirla que genuinamente me sorprendió, y no fue el modelo.

Lo que realmente me propuse construir fue un modelo que supiera lo que cada persona sabía
Empecé donde empieza cada propuesta de «aprendizaje adaptativo», y luego tiré la mayor parte a la basura. La mayoría de los productos que se llaman adaptativos están ejecutando filtrado colaborativo por debajo: «personas como tú tomaron el Curso X a continuación». Eso es un motor de recomendaciones vestido con toga de diploma. Sabe lo que hicieron alumnos similares. No tiene ni idea de lo que tú, en concreto, entiendes. Cornerstone lanzó un «Adaptive Learning Agent» en marzo de 2026 que todavía funciona así. Yo no quería un mejor recomendador. Quería un modelo que lea el flujo bruto de interacciones de una persona e infiera, concepto por concepto, lo que realmente ha dominado.
Ese es un problema de investigación real y antiguo llamado rastreo del conocimiento, y la versión honesta de él es un transformer, no un promedio de cuestionario. Entrené un modelo de rastreo del conocimiento autoatentivo, SAKT, unos 119.809 parámetros, lo bastante pequeño como para entrenarse en una CPU en noventa segundos y cachearse después. Reproduce la secuencia de interacciones de cada alumno y emite una probabilidad de dominio para cada uno de los dieciocho conceptos del curso. En nuestro benchmark sintético sembrado de rastreo del conocimiento alcanzó un AUC retenido de 0.8315, con una precisión de siguiente paso de 0.771. Los datos del benchmark los genera una familia de modelos completamente distinta (Performance Factors Analysis, un modelo logístico clásico), así que el transformer no está calificando sus propias asunciones. Como contexto externo, los resultados publicados de SAKT en el dataset público ASSISTments rondan 0.80 (Pandey y Karypis, 2019). El mío estaba en el mismo vecindario.
Estaba orgulloso de ese número. Pensé que el número era el producto. Bastó exactamente un alumno para mostrarme que no lo era.
Entonces lo alimenté con alguien que había trucado todo el curso
El alumno que rompió mi confianza fue el tercero de la cohorte, un asociado de operaciones que había usado un asistente de IA para auto-responder todo el módulo. Mira lo que hizo mi modelo con él. Concepto tras concepto, la inferencia SAKT volvía alta: 0.927 en identificación de banderas rojas de SAR, 0.95 en blanqueo de capitales basado en el comercio, 0.992 en riesgo de banca corresponsal, 0.994 en disparadores de diligencia debida reforzada. Casi perfecto en todas partes. Si hubiera confiado en el modelo, habría certificado los dieciocho conceptos y le habría entregado a esta persona un registro de cumplimiento limpio y firmado.
El problema es que el dominio era falso. Las respuestas fueron rápidas y perfectas a lo largo de dieciocho no relacionados conceptos, una distribución de tiempos de respuesta incompatible con el recuerdo genuino. Un experto real es rápido en algunas cosas y lento en otras. Este patrón era plano e imposiblemente rápido en todas partes, la firma de una clave de respuestas, no de una memoria. Mi cuidadoso modelo de AUC 0.83 miró una clave de respuestas y vio a un alumno estrella.
Mi modelo no se limitó a pasar por alto el truco. Estaba más seguro exactamente donde más se equivocaba.

Ese fue el momento en que este ensayo se volvió verdadero para mí. Un modelo mejor no me habría rescatado aquí. Un transformer más preciso entrenado con datos más limpios habría mirado las mismas respuestas rápidas y perfectas y habría estado aún más seguro de que esta persona lo había dominado todo. El fallo no era una escasez de precisión. Era que había dejado que un modelo probabilístico tomara una decisión que un modelo nunca debería poder tomar por sí solo.
¿Por qué no simplemente entrenar el modelo para detectarlo?
Mi primer instinto fue el equivocado, y quiero ser honesto sobre el día que perdí a causa de él. Intenté hacer el modelo mismo robusto frente al truco. Añadir características de tiempo de respuesta, entrenarlo para desconfiar de secuencias implausiblemente rápidas, enseñar al transformer a ser suspicaz. Es un plan seductor porque mantiene todo dentro de un sistema elegante, y a mí me gustan los sistemas elegantes. Tampoco funciona, por una razón que me costó más aceptar de lo que debería. Cualquier cosa que le enseñes a un modelo a detectar, también le has enseñado a equivocarse con confianza en los casos que no anticipaste. El trabajo entero de un modelo es generalizar y suavizar. Una decisión de gobernanza necesita lo contrario: tiene que ser frágil exactamente en el lugar correcto, y negarse.
Así que me detuve, y saqué la decisión del modelo por completo. El modelo aconseja. Código determinista puro decide. Después de que corre la inferencia SAKT, un trozo de lógica en Python puro que llamo la compuerta de competencia toma la decisión de certificar o no, y el modelo no puede anularla. La compuerta certifica un concepto solo si tres cosas son todas verdaderas a la vez: el dominio está en o por encima de 0.747, hay al menos tres interacciones reales de evidencia detrás, y el patrón de respuesta no es anómalo. Falla cualquiera de las tres y el concepto no se certifica. Se marca «necesita prueba», y el alumno recibe un desafío de verificación en lugar de una marca de verificación.
Cuando la compuerta miró al asociado de operaciones, hizo lo que mi modelo no podía. Señaló la evidencia como anómala, rechazó cada concepto y certificó cero de dieciocho. Tiempo de asiento retenido, pendiente de verificación.

Quiero ser cuidadoso con cómo enmarco eso, porque el brief que me escribí a mí mismo es cuidadoso al respecto. Esto no es un detector de tramposos con una tasa de acierto, y nunca lo presento como tal. Es un resultado de gobernanza sobre un alumno ilustrativo: conceptos retenidos porque la evidencia no era lo bastante buena para certificar. El punto no es «te pillé, hiciste trampa». El punto es que Attest certifica solo lo que puede demostrar, y se mantiene honesto sobre el resto.
Los agentes aconsejan, el código decide, y esa línea resultó ser portante
Sigo volviendo a esa división del trabajo porque, para cuando terminé, era toda la arquitectura más que un eslogan. Hay exactamente dos lugares en Attest donde corre algo inteligente y probabilístico, y ambos solo aconsejan. Un agente LLM (construido sobre Pydantic AI, por defecto claude-opus-4-8) hace el etiquetado de conceptos, descomponiendo un curso plano de «AML Training» en una taxonomía de dieciocho conceptos: CDD, narrativa SAR, detección de transacciones estructuradas, cribado OFAC, y el resto. Ese paso de etiquetado es lo que el campo te dirá que es la mayor razón individual por la que mueren los proyectos de aprendizaje adaptativo, y es genuinamente difícil, pero es consultivo. El modelo SAKT infiere el dominio, también consultivo. Cada decisión que realmente importa, qué camino recorre un alumno y qué se certifica, la toma código determinista al que ningún modelo puede convencer para pasar.
El secuenciador es la otra mitad de ese código, y es donde se esconde el dinero. Por concepto: si el dominio está en o por encima de 0.67 el alumno se salta o solo verifica; entre 0.38 y 0.67 se queda en la zona de flujo; por debajo de 0.38 recibe andamiaje. Esos puntos de corte no son números que elegí a ojo. Están validados cruzadamente contra la cohorte etiquetada, y el repo incluye un test A/B de cinco pliegues que muestra que vencen al alternativa fijada a mano sin cambiar el significado de la decisión. Ejecuta esa lógica sobre la analista sénior y se salta casi todo lo que ya sabe: dieciséis de dieciocho conceptos certificados, el tiempo de asiento cayendo de 240 minutos a 47.3, una reducción del 80.3%. Ejecuta el código idéntico sobre el gerente de sucursal que tiene carencias reales, y se niega a darle el mismo descuento: diez de dieciocho certificados, solo un 38.9% ahorrado, porque genuinamente necesita la formación.
El mismo código le entrega a la experta un curso de 47 minutos y al novato uno de verdad. Ninguno de los dos puede discutir con él.
Esa asimetría es todo el punto. Un sistema que le ahorra a todo el mundo el mismo tiempo es solo un curso más corto con mejor marca. Un sistema que ahorra tiempo en proporción estricta a lo que cada persona puede demostrar que sabe está haciendo rastreo del conocimiento, y lo está haciendo en código que puedo leer línea por línea.
Lo que le entregas a un regulador en lugar de una marca de verificación
El artefacto del que más orgulloso estoy es el que una marca de verificación verde nunca puede producir. Cuando la compuerta termina, Attest exporta un Certificado de Competencia firmado, y guardo dos muestras reales en disco. Para la analista sénior lista los dieciocho conceptos, cada uno con su probabilidad de dominio, el recuento de interacciones detrás de esa estimación, el estado certificar-o-necesita-prueba, y la regulación concreta a la que se mapea (31 CFR 1020.220, FATF Rec. 12, 31 USC 5318, y el resto). Registra el nombre del modelo, su versión y el AUC del benchmark. Lleva un pie de limitaciones honesto que señala que el AUC mide la predicción del siguiente ítem más que la retención a largo plazo, porque una probabilidad de dominio es evidencia, no una garantía. Y todo el documento está firmado con una firma HMAC-SHA256 para que no pueda editarse en silencio después del hecho.

Esta es la respuesta duradera a la verdadera pregunta del auditor, que nunca es «¿terminaron?». Es «demuestra qué interacciones respaldaron qué afirmación de dominio». Una marca de verificación no puede responder eso. Tampoco un modelo base mejor, por muy bueno que se vuelva, porque la precisión no es procedencia. Un modelo más preciso sigue sin poder mostrarle a un auditor el rastro de evidencia detrás de una decisión que tomó. Ese rastro tiene que construirse como un artefacto, a propósito, fuera del modelo. Eso es lo que es el certificado, y es lo que me hizo dejar de pensar en el modelo como el producto.
La precisión no es procedencia. Un modelo mejor sigue sin poder demostrar qué interacciones respaldaron qué afirmación.
Puedes inspeccionar todo esto en la demo en ejecución en veriprajna.com/es/demos/attest-ia-de-aprendizaje-adaptativo-que-certifica-competencia-no-finalizacion, incluidos los dos conceptos que el certificado se niega a certificar para la analista, donde su dominio se sitúa honestamente por debajo de la línea 0.747.
La parte que sobrevive a un modelo mejor
Construí esto esperando que el modelo fuera la parte difícil, y equivocarme en eso cambió cómo pienso sobre toda la categoría. El modelo fue la parte tratable: noventa segundos en una CPU y un AUC respetable. La parte difícil, la que realmente hace que la salida sea digna de confianza, fue todo lo que puse alrededor del modelo para impedir que tomara decisiones que no le correspondían: la compuerta determinista, la regla de suficiencia de evidencia, el rechazo por anomalía, el rastro firmado.
Esa es también la parte que no envejece. Cuando muestro los números de la cohorte (un 51.9% de reducción de tiempo de asiento a lo largo de una cohorte simulada de recertificación de 500 personas, aproximadamente 77.872 dólares recuperados en este único módulo, una cifra anualizada cercana a 389.362 dólares que la app etiqueta en pantalla como proyección), el titular deliberadamente no es el AUC. El AUC solo demuestra que es un modelo real de rastreo del conocimiento y no un libro de calificaciones. El titular es el porcentaje de tiempo de asiento ahorrado y el porcentaje de conceptos auto-certificados frente a los derivados a prueba, y ambos se mantienen sin importar lo bueno que se vuelva el modelo subyacente. Un transformer más inteligente el año que viene no cambia el hecho de que la decisión, y el recibo, viven en código que puedes auditar.
Y si preferirías verlo antes que leerme describirlo, aquí está toda la cosa corriendo de extremo a extremo.
Así que aquí está la pregunta con la que he estado dándole vueltas, y la que le plantearía a cualquiera que construya en este espacio. Si la salida más importante de tu sistema es una decisión en la que un regulador se apoyará, ¿quieres que esa decisión sea tomada por el modelo, o por algo que el modelo solo puede asesorar? Lo tuve al revés durante un día. Luego un falso alumno estrella, rápido y perfecto en dieciocho cosas que no sabía, entró y me puso en su sitio.


