Correspondencia Jurídica Inteligente

Universidad Nacional de Colombia · 2026 - Actualmente

Next.jsSupabaseAI SDKGmail API

Una dirección de la Universidad firma resoluciones, viáticos y comisiones que llegan por correo desde todas las dependencias del campus. Esta aplicación convierte ese buzón en un flujo con trazabilidad: un agente ingiere los correos, una IA los resume y clasifica, el equipo de revisión asigna, quien tiene la firma decide, y el documento aprobado vuelve firmado, archivado y enviado a quien lo solicitó.

Arquitectura y Stack Tecnológico

Arquitectura Central

  • Framework: Next.js 16 (App Router), React 19, TypeScript
  • Base de datos y autenticación: Supabase, con almacenamiento privado de documentos
  • IA: Vercel AI SDK sobre un modelo de Mistral
  • Documentos: extracción de texto del PDF con fallback a OCR, y estampado de la firma en el servidor sobre la página renderizada
  • Google: la API de Gmail para la ingesta y la de Drive para el archivo, cada una con sus propias credenciales acotadas
  • UI: shadcn/ui + Tailwind CSS 4, siempre en español a través de un mapa de etiquetas
  • Pruebas: Vitest sobre la lógica de firma, rollback, actividad y prompts

Arquitectura en Capas

Flujo de una Petición

Características Principales

Características de un Vistazo

Ingesta automática desde Gmail

Los mensajes se traen directamente del buzón institucional, así nadie tiene que reenviar nada a mano, y los adjuntos PDF o Word se toman automáticamente. Los archivos Word se convierten y los escaneados caen al OCR.

Resumen ejecutivo, temática y acción sugerida

Para cada radicado la IA escribe un resumen ejecutivo, clasifica la temática en una de las categorías reales de la dependencia y sugiere una acción: aprobar, informar o remitir. Ante la duda se abstiene a "otro" — una etiqueta equivocada con seguridad cuesta más que un honesto "sin clasificar".

Checklist de vistos buenos

Una heurística detecta cuáles de los vistos buenos exigidos trae ya el documento, leyendo tanto el correo como los sellos dentro del texto del PDF. La falta de un visto bueno se muestra como observación, nunca como bloqueo: decide quien revisa.

Bandeja por rol

Una sola bandeja, dos vistas. Quien firma decide (aprobar, informar, remitir o negar con motivo obligatorio); el rol de revisión ajusta vistos buenos y observaciones, asigna, firma, despacha y puede reabrir un radicado ya procesado para corregirlo, conservando la nota original.

Firma posicionable

La imagen de la firma se carga, se arrastra y se redimensiona sobre la página del PDF renderizada, y se estampa en el servidor. El archivo firmado se archiva, el original sin firmar se descarta y el documento se envía por correo al solicitante detectado del CC.

Destacados Técnicos

El clasificador se midió, no se supuso

El prompt de acción se reescribió a partir de las correcciones reales del equipo y se evaluó contra un corpus etiquetado, lo que convirtió un "este prompt se siente mejor" en una mejora medible, sin regresión en la clase de aprobación. Remitir sigue siendo la clase difícil — decidir a qué dependencia va un documento depende de un conocimiento de enrutamiento que el texto simplemente no trae.

La firma nunca se guarda

Se carga en el navegador, vive en memoria y se envía solo en el momento de firmar. No hay archivo de firma en el servidor ni columna de firma en la base de datos — nada que filtrar si alguno llegara a comprometerse.

El acceso está cerrado por construcción

El ingreso está restringido a cuentas institucionales y toda restricción se revalida en el servidor — una comprobación solo en el cliente no es una comprobación. Y entrar no basta: la cuenta tiene que estar aprovisionada de antemano. La autorización se exige también en la capa de datos, así una operación privilegiada queda verificada en cada camino que puede alcanzarla.

Un corpus de correos que sigue mejorando el modelo

Un corpus etiquetado empareja la salida del propio clasificador con la corrección que hizo una persona. Eso es lo que permite medir un cambio de prompt en vez de adivinarlo.

Código en inglés, dominio en español

Tablas, columnas e identificadores van en inglés, mientras la máquina de estados conserva los términos propios del dominio en español y la UI siempre va en español a través de un único mapa de etiquetas. Nadie hardcodea una etiqueta y nadie tiene que traducir un estado mentalmente.

Impacto y Escalabilidad

  • Radicación, revisión, redacción, firma y envío viven en un solo flujo en vez de repartidos entre buzones y carpetas compartidas.
  • Una bitácora de eventos mantiene la trazabilidad de quién hizo qué y cuándo.
  • La calidad de la clasificación es medible contra un corpus etiquetado, así que el próximo cambio de prompt se puede demostrar en vez de discutir.

Notas

Construido con Next.js 16, Supabase, el Vercel AI SDK sobre Mistral, las APIs de Gmail y Drive, pdf-lib y shadcn/ui. El repositorio es privado — pertenece al Centro de Prototipado de la Universidad Nacional de Colombia.