Umbral | documentación técnica

De la señal a la decisión · arquitectura, evidencia y límites del sistema para el jurado.

Umbral convierte señales informativas e indicadores públicos en una agenda explicable para una mesa editorial. El sistema conserva la procedencia de los datos, distingue prioridad de evidencia y entrega borradores que una persona puede revisar. No determina qué es verdadero ni publica contenido.

En una mirada

Decisión de diseño Cómo se expresa en Umbral
El orden debe poder discutirse Cada tema muestra un puntaje desglosado y una regla de priorización versionada.
El origen importa tanto como el texto Las noticias se agrupan por evento y procedencia; las réplicas no cuentan como confirmaciones independientes.
Una cita debe poder rastrearse Las respuestas usan identificadores y campos del corte de datos cargado.
La última palabra pertenece a la redacción La generación produce borradores; revisión y publicación siguen bajo control humano.
Los espacios de trabajo son privados La web guarda notas y borradores en el navegador; la API pública no conserva el trabajo editorial personal.

Mapa técnico

TVN RSS · GDELT · Banco Mundial · USGS
                    │
                    ▼
         Ingesta y preparación de datos
   normalizar · validar · agrupar · clasificar
                    │
                    ▼
       Snapshot versionado con manifest SHA-256
                    │
                    ▼
      API FastAPI ───────────────┐
          │                      │
          ▼                      ▼
 Web Astro + React       Aplicación Windows
 navegador + IndexedDB   Electron + SQLite
          │
          ▼
 Recuperación de evidencia → borrador citado → revisión humana

La redacción asistida es una ruta opcional. Si el proveedor de texto no está disponible, Umbral conserva una salida basada en plantilla y evidencia recuperada.

Componentes

Capa Tecnología Función
Preparación Python 3.12, uv, pipeline propio Normaliza metadatos, valida registros, agrupa eventos, clasifica y empaqueta cortes reproducibles.
Clasificación Laya multilingüe en PyTorch CPU Propone categorías y señales geográficas durante la preparación de datos o en Windows.
Recuperación BM25 y RapidFuzz Busca titulares y candidatos relacionados con un tema o consulta.
Servicio FastAPI, Pydantic 2 y OpenAPI Expone agenda, fichas, consultas, borradores, revisiones y exportación.
Web Astro 7, React 19, TypeScript y Tailwind 4 Presenta la experiencia editorial en español como sitio estático.
Escritorio Electron, API y pipeline empaquetados, SQLite Permite usar Umbral en Windows con los recursos locales disponibles.
Generación opcional Gemini en nivel gratuito o plantilla Sugiere texto estructurado; la salida siempre es un borrador y conserva referencias.

Del origen a una ficha

El pipeline transforma entradas en un paquete de datos identificado. Conserva titulares, enlaces, medio, fechas y metadatos; no redistribuye el cuerpo de los artículos. Un indicador estadístico conserva país, serie, período y unidad para no mezclar magnitudes distintas.

Origen Aporte Límite que conserva el producto
TVN RSS Titular, enlace y fecha de publicación Un titular atribuido a un medio no sustituye la nota ni una fuente primaria.
GDELT DOC 2.0 Metadatos y dominios enlazados Detectar una página no equivale a verificar lo que afirma.
Banco Mundial Series oficiales de contexto Un dato anual identifica su año y unidad; no confirma automáticamente una cifra trimestral.
USGS Catálogo de eventos sísmicos Su cobertura regional no equivale a una medición de impacto en Panamá.

Cada snapshot contiene registros normalizados, reporte de calidad y un manifest con huellas SHA-256. Las marcas de tiempo se guardan en UTC; la interfaz las presenta en hora de Panamá. Al cargar un corte, la API comprueba su integridad y mantiene sus predicciones asociadas a la versión correspondiente.

Corte usado en los ejemplos

Los casos y mediciones incluidos en este dossier corresponden al snapshot 20261007-cfa338b6, creado el 7 de octubre de 2026 a las 13:34:20 UTC. El manifest registra 991 noticias válidas (122 de TVN y 869 de GDELT), 80 registros inválidos apartados, 540 valores de indicadores, 910 grupos y 991 predicciones; el corte no contiene fixtures. Su SHA-256 es DBBA62F3D01D962D09018F7A00B82E6FD068AA7B705145898A9B2C739A74B050.

Este es el corte reproducible de referencia para los ejemplos de esta entrega. Fue descrito como provisional: no se contaba con un paquete oficial congelado y algunas consultas a GDELT recibieron HTTP 429. Las cifras sirven para explicar ese corte, no para describir una agenda en vivo ni para afirmar que el feed actual tenga los mismos datos.

Priorización: orden de lectura, no veredicto

La regla scoring-v1 asigna un puntaje de 0 a 100:

P = 30R + 25I + 20U + 15N + 10E

Variable Señal que representa
R Relevancia para Panamá
I Impacto editorial propuesto y su justificación
U Urgencia respecto de la fecha original
N Novedad del evento; la recirculación no añade novedad
E Solidez de procedencia, independencia y relación con fuentes primarias

Las bandas son bajo [0, 40), medio [40, 70) y alto [70, 100]. El puntaje ordena qué abrir primero. El estado de evidencia —insuficiente, parcial o suficiente para elaborar un borrador— responde una pregunta distinta. Un asunto prioritario puede seguir requiriendo investigación. Las probabilidades del clasificador del corte de referencia no están calibradas.

API y productos

La API ofrece contratos tipados y documentados. Entre sus operaciones públicas están:

Operación Ruta
Salud, versión y snapshot GET /api/v1/health
Agenda y detalle de tema GET /api/v1/topics · GET /api/v1/topics/{id}
Consulta con evidencia POST /api/v1/queries
Borrador asociado a un tema POST /api/v1/topics/{id}/drafts
Revisión editorial PATCH /api/v1/cases/{id}/review
Exportar ficha GET /api/v1/cases/{id}/export

La versión web pública no requiere cuenta. El trabajo personal vive en IndexedDB en ese navegador y se puede exportar o restaurar como paquete JSON; la API pública no guarda ese espacio. La aplicación de Windows utiliza SQLite bajo el perfil del usuario y puede trabajar sin red si dispone del corpus y del modelo locales. Gemini y la captura de fuentes nuevas requieren conectividad.

Citas, generación y manejo seguro

Antes de mostrar una respuesta generada, Umbral valida que las referencias existan, pertenezcan al snapshot correcto y respeten el esquema esperado. Las propuestas pueden contener un brief, enfoque, preguntas, verificaciones, guion breve y copy. La interfaz identifica si el texto fue generado por un modelo, recuperado o armado con plantilla.

La comprobación estructural confirma que una referencia se puede localizar; no certifica que la frase represente fielmente la fuente. Esa lectura corresponde a la persona editora. El contenido externo se trata como dato no confiable, nunca como una instrucción del sistema. Aprobar una revisión conserva un borrador y no activa publicación.

Evidencia de desarrollo

Estas mediciones describen pruebas programáticas y muestras de desarrollo, no resultados de una redacción ni una evaluación humana de exactitud.

Medición Resultado registrado Lectura adecuada
Consultas locales de desarrollo, 40 preguntas sobre cfa338b6 20/20 respuestas respondibles incluyeron una cita; 14/14 abstenciones correctas; 0/20 abstenciones incorrectas; 7/7 sondas adversariales; 0 errores HTTP La presencia de citas y las reglas de abstención se pueden medir; no equivalen a una revisión del sustento de cada afirmación.
Recuperación local caliente Mediana de 0,056 s No incluye red, Gemini ni arranque de un servicio remoto.
Generación opcional con Gemini, 10 casos 8/10 pasaron validación estructural; en 2/10 se conservó el fallback tras timeout Muestra pequeña; la estructura no demuestra fidelidad factual.

El benchmark local se registró el 7 de octubre de 2026 a las 13:34:56 UTC. El artefacto de resultados tiene SHA-256 5261BDAED2FA030DFB9B7540187A64FC1043F136515C3C0F251D0965D08926BA. La muestra de Gemini se registró el 8 de octubre de 2026 a las 06:20:28 UTC; su artefacto tiene SHA-256 70B6CC150E3313DAA4264C30392A14374A33FFBCB3209D84E4D22927414776D0.

Límites y responsabilidad

La visión funcional y la narrativa de demo están en Documentación funcional y Pitch Day. La descripción general del proyecto está en el README en español.