Si la auditoría falla,
la acción falla.
Cierre no es un SDR con un registro de actividad encima. La bitácora es la arquitectura. Cada prompt, cada llamada al modelo, cada aprobación humana queda grabada de forma sincrónica antes de que la acción se complete — y la cadena la hace verificable después de los hechos.
Escritura sincrónica
Cada acción de IA — enriquecimiento, redacción, clasificación, envío — escribe una fila en la bitácora antes de devolver el resultado al usuario. Si la escritura falla, la acción falla.
Encadenamiento por fila
Cada fila incluye el hash de la fila anterior dentro del mismo tenant. Alterar una fila histórica invalida todas las filas posteriores y rompe la cadena.
Raíz Merkle diaria
Un cron diario calcula la raíz Merkle de los hashes del día anterior y la persiste por separado. Verificar la integridad de cualquier día toma segundos, no horas.
Bloqueo a nivel de DB
Cuando un prospecto pide darse de baja, el lead se bloquea a nivel de base de datos. Cualquier intento posterior de generar un mensaje queda registrado como rechazo.
Cada fila apunta a la anterior.
El row_hash de cada entrada se calcula a partir de los campos de esa fila más el row_hash de la fila anterior dentro del mismo tenant. Modificar cualquier fila histórica invalida la cadena desde ese punto en adelante — y la siguiente raíz Merkle diaria expone la inconsistencia.
Ejemplo simplificado. En producción cada fila incluye también el hash del prompt (sha256), el modelo usado, y los metadatos del evento.
Una raíz por día, por tenant.
A las 00:30 UTC, un cron computa el árbol Merkle binario de todos los row_hash del día anterior y persiste la raíz en una tabla aparte (merkle_roots). Si más adelante alguien manipula una fila, la raíz recomputada del día no coincide.
Árbol binario clásico (estilo Bitcoin): si el número de hojas es impar, la última se duplica para mantener la estructura. Cinco hojas en este ejemplo — cinco eventos en el día.
Lo que no hacemos.
- No hay borrado lógico. Las filas de la bitácora son inmutables. Solo se pueden añadir; nunca modificar ni eliminar.
- No hay envíos sin auditoría. El evento
SENTse registra antes del envío externo. Si el envío falla, quedaSEND_FAILED— nunca un envío fantasma. - No hay borradores para leads bloqueados. El bloqueo de baja se aplica antes de cualquier llamada al modelo. Cualquier intento deja huella como
DRAFT_REFUSED_LOCKED. - No usamos los datos del cliente para entrenar modelos. Las llamadas a la API de Anthropic excluyen el entrenamiento por defecto.
¿Necesita un artefacto auditable
que un colegio profesional acepte?
El plan Compliance+ incluye exportación firmada en PDF, raíz Merkle diaria publicada y plantillas de restricciones por vertical (HIPAA, FINRA).