🍳 Promesas

llms
propuestas
ragnar
ellmer

Usando LLMs para entender y comparar las propuestas de los candidatos presidenciales

Autor/a
Afiliación

Recetas Electorales

Análisis independiente

Fecha de publicación

29 de marzo de 2026

Fecha de última modificación

12 de junio de 2026

¿Qué proponen los candidatos?

Los programas de gobierno son documentos extensos, dispersos, y escritos para que nadie los lea. Cada campaña publica sus propuestas en su propia página, con su propio formato y su propia lógica de navegación. Compararlos requiere leerlos todos, organizarlos mentalmente, y tener buena memoria.

Los LLMs son buenos para esto. Resumen, comparan, y extraen información de textos enormes. El problema es que no tienen acceso a la información que está en las páginas de los candidatos: necesitan que alguien se las dé.

TipUn asistente que leyó todos los programas de gobierno

La app de abajo es un chatbot que usa Retrieval-Augmented Generation (RAG) para responder preguntas sobre los programas de gobierno de los candidatos. Toda la información proviene de los documentos PDF oficiales de cada programa de gobierno y de las páginas web de cada campaña.

Ingredientes

La app fue construida con:

  • ragnar: para crear un store vectorial con el contenido de las páginas web de cada campaña. El store usa DuckDB como base de datos, embeddings de OpenAI (text-embedding-3-small) para la búsqueda semántica, y BM25 para la búsqueda por palabras clave.
  • ellmer: para conectar con un LLM (GPT-4o-mini) que responde las preguntas usando el contexto recuperado del store.
  • shinychat: para la interfaz de chat dentro de una app de Shiny.

El proceso tiene dos pasos:

  1. Ingesta: se procesan los PDFs de los programas de gobierno y se recorren las páginas oficiales de cada candidato. Todo el contenido se divide en fragmentos (chunks), se generan embeddings, y se almacenan en el store.
  2. Consulta: cuando el usuario hace una pregunta, el LLM busca los fragmentos más relevantes en el store y los usa como contexto para generar una respuesta fundamentada.

Fuentes

El store combina dos tipos de fuentes para cada candidato:

  • Programas de gobierno (PDF): los documentos oficiales registrados ante el CNE por cada campaña.
  • Páginas web: el contenido publicado en las páginas oficiales de cada campaña.
Ver código
library(tidyverse)
library(tinytable)

tibble::tibble(
  Candidato = c("Claudia López",
  "Sergio Fajardo",
  "Iván Cepeda",
  "Abelardo de la Espriella",
  "Paloma Valencia"),
  `Programa de gobierno (PDF)` = c(
    "Claudia-lopez-Programa-de-Gobierno.pdf",
    "Programa de gobierno Cambio. Serio. Seguro.pdf",
    "programa-gobierno-2026-2030 (1).pdf",
    "programa-de-gobierno-abelardo-delaspriella-.pdf",
    "Plan-Integrado-de-Gobierno-Final_compressed.pdf"
  ),
  `Página web` = c(
    "claudia-lopez.com",
    "sergiofajardo.com",
    "movimientopactohistorico.co",
    "defensoresdelapatria.com",
    "palomavalencia.com"
  )) |>
    tinytable::tt()
1
Cargamos tidyverse y tinytable (para construir la tabla).
2
Definimos la tabla de fuentes: por candidato, el PDF del programa de gobierno y su página web oficial.
3
Renderizamos la tabla con tinytable::tt().
Tabla 1: Fuentes consultadas por candidato
Candidato Programa de gobierno (PDF) Página web
Claudia López Claudia-lopez-Programa-de-Gobierno.pdf claudia-lopez.com
Sergio Fajardo Programa de gobierno Cambio. Serio. Seguro.pdf sergiofajardo.com
Iván Cepeda programa-gobierno-2026-2030 (1).pdf movimientopactohistorico.co
Abelardo de la Espriella programa-de-gobierno-abelardo-delaspriella-.pdf defensoresdelapatria.com
Paloma Valencia Plan-Integrado-de-Gobierno-Final_compressed.pdf palomavalencia.com

La app Promesas


  • El contenido del store refleja lo publicado en las páginas oficiales al 29 de marzo de 2026. Las campañas pueden actualizar sus propuestas después de esa fecha.
  • Algunas páginas tienen contenido dinámico (JavaScript) que puede no capturarse completamente durante la ingesta.
  • El LLM puede cometer errores de interpretación. Siempre es buena idea verificar las respuestas consultando directamente las fuentes.
  • La calidad de las respuestas depende de la calidad del contenido publicado por cada campaña. Si un candidato no publica propuestas detalladas, el asistente no podrá inventarlas.

Resultado — primera vuelta 31 de mayo de 2026

NotaResultados oficiales
Candidato % Votos válidos
Abelardo de la Espriella 43.72%
Iván Cepeda 40.92%
Paloma Valencia 6.92%
Sergio Fajardo 4.26%
Claudia López 0.95%

La primera vuelta la ganó Abelardo de la Espriella con 43.72%, superando a Iván Cepeda (40.92%). Ambos pasan a segunda vuelta. La comparación de propuestas analizadas en este artículo cobra mayor relevancia de cara al balotaje.

Cómo citar

BibTeX
@online{recetas_electorales2026,
  author = {{Recetas Electorales}},
  title = {🍳 Promesas},
  date = {2026-03-29},
  url = {https://recetas-electorales.netlify.app/elecciones/2026-colombia/2026-03-29-promesas/2026-promesas.html},
  langid = {es}
}
Por favor, cita este trabajo como:
Recetas Electorales. 2026. “🍳 Promesas.” March 29. https://recetas-electorales.netlify.app/elecciones/2026-colombia/2026-03-29-promesas/2026-promesas.html.