Seis etapas, en este orden.
La secuencia es intencional: primero se decide la superficie y su valor diferenciado, después se construye la canalización de datos.
Atalaya se construye como una memoria visual de lo que la prensa colombiana ya publicó — un dossier editorial primero, una canalización de ingeniería después.
Marco del problema
El problema de fondo no es técnico. Es cultural: Colombia opera con amnesia institucional. Los antecedentes de candidatos y funcionarios se olvidan entre ciclos electorales — los mismos errores se repiten, los mismos actores regresan.
Atalaya parte de una premisa simple: la prensa colombiana ya hizo el trabajo periodístico. Lo que falta es una capa que indexe, deduplique y conecte lo publicado, de modo que el público pueda reconocer patrones a lo largo del tiempo.
El alcance es acotado: una herramienta de interés público para que los ciudadanos reconozcan a las personas conectadas con casos de corrupción y entiendan que la corrupción no es propiedad de un ala política u otra — es una red sistémica e interconectada.
El grafo como superficie principal
La decisión de diseño más importante se toma antes que cualquier línea de código: la navegación principal es un grafo de fuerzas, no una tabla.
Las tablas y los titulares aíslan los casos uno a uno. El grafo revela lo que el formato tabular oculta — las personas, instituciones y períodos que reaparecen entre casos. Ese es el aporte diferenciado frente a archivos existentes como OCCRP Aleph u OpenCorporates: el patrón sistémico se ve antes que el caso individual.
Fuente y reglas de publicación
La fuente única son los medios tradicionales colombianos: El Tiempo, El Espectador, Semana, La Silla Vacía, Vorágine, Cuestión Pública y prensa regional. Sin SECOP, sin Procuraduría, sin boletines judiciales como fuente primaria. La razón es deliberada: Atalaya indexa lo que ya es público y periodísticamente verificado, no lo que un funcionario podría reclasificar mañana.
Una afirmación se publica cuando dos o más medios distintos coinciden en (personas + institución + estado), con deduplicación de copias de cable para que una sola historia de Colprensa replicada por tres medios no cuente como tres fuentes. Las afirmaciones de una sola fuente también se publican, pero con una insignia `Fuente única` que comunica al lector la menor confianza.
La confrontación entre fuentes reemplaza al revisor humano por diseño. Atalaya es un agregador, no un editor. El fallo judicial más reciente sobrescribe el estado del caso — la justicia tiene la última palabra, la prensa tiene el primer borrador.
Pipeline de extracción asistida por IA
El pipeline tiene cuatro pasos: clasificación, extracción estructurada, embedding y enlace al grafo. La clasificación es la puerta de entrada — un clasificador de bajo costo descarta los artículos que no son sobre corrupción colombiana antes de tocar el extractor. Mantener el costo de entrada cerca de cero es lo que hace viable rastrear toda la prensa diariamente.
El extractor devuelve JSON validado contra un esquema estricto: personas, instituciones, montos, estado procesal, período presidencial. Si el JSON no valida, la entrada se rechaza — preferimos perder una afirmación que publicar una mal formada.
Cada entidad extraída se embebe y se busca contra el corpus existente por similitud semántica. Si la similitud supera un umbral, el sistema enriquece un caso existente en lugar de crear un nodo duplicado. Así crece el grafo: cada nuevo artículo aporta evidencia a un caso ya conocido, o abre uno nuevo.
Aprender de los modos de falla
Los tres patrones de diseño más importantes salieron de fallas reales en producción, no del tablero de diseño.
**Cambio como institución.** Una versión temprana del extractor confundía menciones del medio Cambio con el verbo «cambio» y creaba nodos espurios. La corrección no fue un parche al modelo — fue una lista de exclusión (`stoplist`) de menciones ambiguas que se aplica antes de la extracción. La regla quedó: si un token tiene riesgo de fusión semántica, se filtra en la entrada, no se confía en que el modelo lo desambigüe.
**Conflación Siria–narcotráfico.** El extractor fusionó dos casos completamente distintos porque compartían personas secundarias y ambos contenían la palabra «narcóticos». La corrección fue añadir deduplicación multi-señal: la identidad de un caso ya no depende solo de las personas, sino de la combinación (personas + institución + período + tipo de hecho). Un solo eje no basta para fusionar.
**Sumas ingenuas de montos.** El primer cálculo del «monto en imputaciones» sumaba todas las cifras mencionadas en cada artículo, lo que inflaba un caso cada vez que una nota lo recapitulaba. La corrección fue tomar el valor modal — el monto que aparece con más frecuencia entre las fuentes — en lugar de la suma. La métrica pasó de ruido a señal.
Registro visual
El registro visual es deliberadamente sobrio: editorial oscuro, líneas técnicas de 1 px, tipografía monoespaciada para los datos y una sans editorial para los títulos. El color funcional —rojo señal, ámbar, verde azulado, azul— solo aparece para diferenciar tipos de relación y niveles de confianza, nunca como decoración.
El objetivo es que el sitio se lea como un dossier de vigilancia, no como una landing comercial. La densidad de información, las líneas de cuadrícula y la ausencia de imágenes decorativas refuerzan la posición editorial: Atalaya muestra lo que la prensa publicó, sin embellecer ni dramatizar.