En qué estamos trabajando
ContrastIA se construye a la vista. Estas son las fases del proyecto y cuánto llevamos de cada una.
Fase 0 · Arreglos y limpieza6 de 7
- Escribir este roadmap.
- Quitar las señales y ausencias falsas causadas por medios leídos sin resumen (Google Noticias), tanto en la web ya publicada como en las próximas ediciones (instrucción al Contraste).
- Extractor: cualquier cifra, fecha, plazo, nombre de ley o cargo del titular es una afirmación comprobable.
- Jefe de sección: descartar los actos de agenda sin contenido (entrevistas, asistencias, viajes sin anuncio).
- Alinear la rúbrica publicada con el código: hay discrepancia en cuanto las dos posiciones difieren.
- Quitar «h01» y la jerga más visible en la página del hecho.
- Borrar las ramas ya fusionadas y las carpetas de trabajo viejas (pide confirmación de Alberto).
Fase 1 · La página del hecho como producto (el corazón)6 de 6
- src/lib/lupa.ts: palabras y cifras distintivas por titular, sin IA.
- Componente MesaContraste.astro (tira desplazable en móvil, cuadrícula en escritorio).
- El Contraste añade por medio un encuadre: foco (a quién pone en el centro), tono (trámite, conflicto, escándalo, logro) y verbo (el verbo principal del titular).
- Rehacer rondas/[fecha]/hechos/[id].astro con el orden de arriba. La página de cada noticia se aligera y enlaza a su hecho.
- Lector de artículos completos (orquestador/lector.mjs): solo medios que no bloqueen la lectura automática ni reserven la minería de textos (El País la bloquea). El texto se guarda en workspace/, solo se usa para analizar y nunca se publica. Permite confianza alta en sesgo y más afirmaciones. Se decide solo, medio a medio, con su robots.txt y tdm-reservation; texto_completo: false en fuentes/medios.json excluye a mano. Prueba del 27/10: lo permiten elDiario.es, Europa Press y The Objective; El País, El Mundo, ABC, La Vanguardia, El Confidencial, 20minutos, Expansión y Cinco Días lo reservan frente a IA.
- Glosario corto en lenguaje llano (sustituye «corroborada», «discrepancia», «reparos del Editor»).
Fase 2 · Portada de periódico y navegación6 de 9
- Portada nueva: bloque «Hoy en un minuto» (los 3 hechos principales en una línea cada uno), el hecho principal con su mini mesa de contraste (tres titulares), una tira de señales del día y secciones con pestañas. Objetivo: menos de 6.000 px en el móvil.
- La lista completa de noticias pasa a /noticias con filtros (medio, sección, sesgo, verificación).
- Página por medio /medios/<medio>: su perfil acumulado (tendencia con tamaño de muestra, qué verifica bien, qué suele omitir, en qué hechos no aparece), sus titulares recientes y su forma de leerse (feed propio o Google Noticias).
- Historias: un tema que dura varios días (por ejemplo, la ley de nietos) agrupa sus hechos de distintas ediciones, con una cronología.
- Buscador con Pagefind: estático, gratis y funciona sin servidor.
- Páginas de confianza: Quiénes somos, Política de correcciones (con registro público de cambios), Contacto y Cómo leer ContrastIA (tres pasos). Además, /novedades muestra este roadmap en la web.
- Hablar como un periódico: «Edición del 27 de octubre» en vez de «Ronda», «Hecho» sin identificadores, fechas y horas en español.
- Imagen para compartir propia de cada hecho (generada al compilar con los titulares en tipografía Umbral). Sirve para redes y para no depender de las fotos de los medios.
- Rendimiento: ancho y alto fijados en las imágenes, versiones reducidas cuando el medio las ofrezca y carga diferida. Medir LCP en el móvil.
Fase 3 · Más amplitud y edición automática0 de 5
- Secciones: Política, Economía, Internacional, Sociedad y Ciencia y tecnología. El Jefe de sección elige por cuotas (por ejemplo 4/3/2/2/1). Así entran Expansión, Cinco Días y 20minutos, que ahora casi nunca salen.
- Edición diaria programada con el Programador de tareas de Windows (7:00): ronda completa → borrador → aviso al móvil (ntfy.sh, gratis) con un resumen → Alberto aprueba → publicación y subida. Requiere el PC encendido a esa hora.
- Robustez: reintento por paso, cambio de motor si uno falla (Claude ↔ Codex), validación del formato de cada JSON, límite de tiempo y reanudación automática desde el paso que falló.
- Informe de calidad de cada borrador (cobertura por medio, afirmaciones oficiales, señales, discrepancias) para aprobar en un minuto.
- Más adelante, cuando la calidad sea estable: publicación automática si el informe de calidad pasa unos umbrales, con revisión posterior.
Fase 4 · Verificación de verdad4 de 5
- Conectores oficiales que el Verificador consulta directamente: API de datos abiertos del BOE, API del INE (comprobada, funciona), datos abiertos del Congreso (votaciones e iniciativas), Eurostat y series del Banco de España. Objetivo: más del 40 % de las afirmaciones con fuente oficial.
- Verificadores profesionales: se leen los feeds de Maldita.es, Newtral, EFE Verifica y Verificat (todos comprobados). Si un hecho ya está verificado por ellos, se enlaza («Esto ya lo comprobó Newtral»). Es la forma más honesta de hablar de bulos.
- Prohibir «corroborada» con agregadores (Infobae, MSN, Yahoo) y con medios que solo copian a una agencia.
- Hemeroteca de datos: una cifra verificada se reutiliza en ediciones posteriores con su fuente.
- Redes: ampliar Bluesky a partidos, ministerios y cargos verificados; añadir Mastodon institucional. X sigue fuera.
Fase 5 · Sesgo serio: de qué pie cojea cada medio0 de 6
- Sesgo de selección («mapa de silencios»): qué hechos cubren todos menos un medio. Sale de la recolección, sin IA, y dice mucho de cada medio.
- Sesgo relativo por hecho: con el encuadre de la Fase 1, comparar cómo trata cada medio el mismo hecho. Es más fiable que una escala absoluta con dos líneas de texto.
- Perfil acumulado del medio: media de cada IA con intervalo y tamaño de muestra. No se muestra una tendencia por debajo de 30 noticias analizadas.
- Calibración de las IAs: un banco de 40 titulares de prueba con la valoración esperada. Se pasa a Claude y a Codex cada vez que cambia un modelo y se publica cuánto coinciden. Corrige desvíos como el de Codex hacia +1.
- Evolución en el tiempo del perfil de cada medio, mes a mes.
- Página Espectro renovada: fichas que se mueven con cada edición y enlazan al perfil del medio.
Fase 6 · App0 de 6
- PWA: manifiesto, icono, instalación en el móvil, última edición disponible sin conexión y modo lectura. Gratis en Cloudflare Pages.
- API pública estática: /api/ediciones.json, /api/hechos/<id>.json y /api/medios.json. La app nativa futura (Capacitor o Expo) leerá exactamente estos archivos.
- Resumen diario por correo y avisos web de la edición (Buttondown o similar, plan gratuito).
- Cuenta automática en Bluesky que publica los hechos del día con su imagen.
- Analítica sin cookies (Cloudflare Web Analytics, gratis) para saber qué se lee.
- Más adelante, con presupuesto: «Pregunta a la redacción» (chat sobre las ediciones publicadas) en Cloudflare Workers con clave de API y límite de gasto.
Fase 7 · Plataforma y crecimiento0 de 4
- Dominio propio (unos 10 €/año, por ejemplo contrastia.es).
- Pedir acceso autorizado a sus feeds a La Razón, Público, El Periódico, EFE y RTVE (aplazado: cuando haya público).
- Datos de las ediciones fuera del repositorio de código cuando pesen demasiado (hoy unos 130 KB por edición, unos 50 MB al año).
- Mudanza a un servidor propio o a un hosting con IA solo si hace falta (chat, cuentas de usuario o ediciones cada hora).
Últimos cambios
- 27/10/2026: Fase 4 en main y 2.ª edición republicada con la verificación nueva. Fase 2 en la rama fase2-portada: portada nueva, /noticias, perfiles de medios, buscador y páginas de confianza.
- 27/10/2026: Fases 1 y 0 en main; 2.ª edición del 27/10 publicada. Fase 4 en la rama fase4-verificacion.
- 27/10/2026: Fase 1 en la rama fase1-hecho. Arreglado de paso un fallo grave: los pasos de fuentes oficiales (BOE, La Moncloa) y redes (Bluesky) no se ejecutaban en las rondas desde que se crearon.
- 27/10/2026: primera versión tras la auditoría. Fase 0 en curso en la rama roadmap.