Metodología abierta · ¿Con quién coincides?

Cómo se hizo «¿Con quién coincides?»

Esta página cuenta, paso a paso, cómo se construyó la ayuda al voto para las generales: de dónde salen los datos, qué decidió una persona, qué hizo una IA (con los prompts literales), cómo se calcula tu coincidencia y qué falla todavía. No es perfecta. La idea es que puedas comprobar cada paso y proponer mejoras.

Solo votos reales del CongresoCálculo sin IA, reproducibleResúmenes con IA revisados con IATodas las votaciones del Congreso XV, por temasEnmiendas leídas en el BOCGVersiones anteriores siempre accesiblesFalta revisión humana independienteCódigo y datos abiertos

En 30 segundos

  • Lo que comparas son votos, no promesas. Cada pregunta clave resume todas las votaciones nominales del Congreso (legislatura XV) sobre un mismo eje temático —1.023 votaciones de 587 iniciativas en 29 preguntas—; la posición de un partido es hacia dónde empujaron sus diputados en todas ellas.
  • 29 preguntas clave + 334 votaciones reales una a una (363 preguntas en total), de 2023-09-21 a 2026-09-30.
  • También las enmiendas: cada enmienda votada se leyó en el BOCG (su texto, no solo su número), así que las direcciones por tema recogen también el trabajo fino sobre las leyes, sin que una ley con muchas enmiendas pese más que otra.
  • Si una pregunta te parece demasiado general, respóndela por partes: se desglosa en votaciones concretas y tu resultado se afina con ellas.
  • Además del test: un mapa con hacia dónde empujó cada partido en 33 ejes temáticos y una ficha por diputado/a con todas sus votaciones.
  • Cada mejora del test es una versión nueva; las anteriores siguen online con tus respuestas para que puedas compararlas.
  • El cálculo de coincidencia es una fórmula sencilla, sin IA, que se ejecuta en tu navegador. Tus respuestas no salen de tu dispositivo.
  • La IA se usó para escribir (código, redacción de afirmaciones y resúmenes en lenguaje llano del texto oficial), para clasificar cada votación en un tema leyendo el texto oficial (sin ver los votos) y para revisar. Nunca para decidir cómo votó un partido: eso sale de los datos oficiales.
  • Estado honesto: todo está revisado por IA, pero ninguna afirmación ni resumen ha pasado aún una revisión humana independiente. Ese es el siguiente paso, y puedes ayudar.

1 Datos de partida: votaciones nominales del Congreso

La fuente es el portal de datos abiertos del Congreso de los Diputados, que publica cada votación nominal en JSON con el voto de cada diputado (Sí, No, Abstención, No vota) y su grupo parlamentario. El ETL del proyecto los descarga y guarda en una base SQLite (tablas parl_vote_events y parl_vote_member_votes), conservando la URL original de cada votación para poder comprobarla.

Comando de ingesta usado para el último tramo: python3 scripts/ingestar_parlamentario_es.py ingest --source congreso_votaciones --congreso-legs 15 --since-date 2025-11-01 --strict-network. En cada pregunta de la herramienta hay un enlace al JSON oficial de la votación.

2 De diputados a partidos de la papeleta

  • Se comparan 12 partidos que concurren a las generales: PSOE, PP, VOX, Sumar, Podemos, ERC, Junts, EH Bildu, PNV, BNG, Coalición Canaria, UPN.
  • La mayoría de partidos se asignan por su grupo parlamentario. Podemos, BNG, Coalición Canaria, UPN votan dentro de otros grupos (sobre todo el Mixto), así que se asignan diputado a diputado por nombre, definido en etl/data/seeds/voting_aid_generales_v1.json.
  • Posición del partido en una votación = la opción mayoritaria entre Sí / No / Abstención de sus diputados. «No vota» no cuenta. Si hay empate exacto entre las dos opciones más votadas, la posición es «votos distintos».
  • Diputados que no se asignan a ningún partido (sus votos no cuentan):
    • José Luis Ábalos Meco: Diputado no adscrito a ningún partido que concurra a las elecciones (Grupo Mixto desde 2024).
    • Àgueda Micó Micó: Compromís; en el Grupo Mixto solo desde julio de 2025.
    • Francisco Javier Ortega Smith-Molina: Pasó del grupo VOX al Grupo Mixto el 2026-07-23 (cambio de group_code); no consta con qué partido concurrirá.
  • Si falta un dato, la celda queda como «sin datos» y no cuenta: nunca se inventa una posición. Hoy hay — celdas sin datos de — en las afirmaciones curadas.

3 Las 29 preguntas clave: una por tema, muchas votaciones cada una

Cada afirmación («Hay que bajar impuestos…», «España debería presionar más a Israel…») corresponde a un eje temático del codebook (etl/data/seeds/vote_atlas_axes_v1.json) y la respaldan todas las votaciones cuyo tema principal es ese eje, con confianza alta o media: hoy 1.023 votaciones de 587 iniciativas. Así se cubre más terreno con menos preguntas que con una votación por pregunta.

  • Posición del partido = media, sobre esas votaciones, de signo × (Sí − No) / (Sí + No + Abstención) de sus diputados, orientada hacia la afirmación. Va de −1 (siempre en contra) a +1 (siempre a favor) y se muestra como porcentaje (0 % a 100 %). Los puntos de una misma moción votada por partes comparten un solo peso.
  • Quién las redactó: Claude Opus 5.5, una por eje, a partir de las votaciones clasificadas en él. Borrador sin revisión humana. Definición en etl/data/seeds/voting_aid_generales_v2.json.
  • Sesgo de aquiescencia: las frases se redactan en ambos sentidos para que responder siempre «de acuerdo» no favorezca a un bloque: hoy coincide solo con el PSOE (y no con el PP) en 10 preguntas y solo con el PP en 12.
  • Antes de responder ves ejemplos de lo votado (sin decir quién votó qué); después, el porcentaje de cada partido y el enlace al mapa con todas las votaciones.
  • Responder por partes: cada pregunta clave se puede desglosar en hasta 6 votaciones concretas, una por iniciativa (de las más recientes, leyes y decretos antes que mociones). La opción está visible antes de responder y se ofrece de forma destacada si contestas «neutral», porque a menudo «depende». Al desglosar, tu respuesta a la pregunta general deja de contar y cada votación concreta cuenta como una pregunta del modo infinito (si esa votación ya estaba en el modo infinito, es la misma pregunta: nunca respondes dos veces lo mismo).
  • La versión anterior (33 afirmaciones con 1 a 3 votaciones cada una, etl/data/seeds/voting_aid_generales_v1.json) sigue publicada para que los enlaces compartidos funcionen; su revisión está en el paso 8.
Ver cómo está definida una pregunta clave (dato real, primeras votaciones)
{
  "statement_id": "eje-vivienda-intervencion",
  "axis_id": "vivienda_intervencion",
  "pole": "+",
  "concern_id": "vivienda",
  "theme": "Vivienda",
  "text": "El Estado debería intervenir más en el alquiler: limitar precios, proteger más al inquilino y regular el alquiler turístico y de temporada.",
  "context": "Eje «Intervención en el mercado de la vivienda»: Más intervención pública frente a Más mercado.",
  "votes_total": 51,
  "initiatives_total": 29,
  "cells": {
    "psoe": {
      "position": "mixed",
      "score": 0.265,
      "votes_with_data": 51,
      "votes_total": 51
    },
    "pp": {
      "position": "disagree",
      "score": -0.74,
      "votes_with_data": 51,
      "votes_total": 51
    },
    "vox": {
      "position": "disagree",
      "score": -0.983,
      "votes_with_data": 51,
      "votes_total": 51
    },
    "sumar": {
      "position": "agree",
      "score": 0.834,
      "votes_with_data": 51,
      "votes_total": 51
    },
    "podemos": {
      "position": "agree",
      "score": 0.828,
      "votes_with_data": 51,
      "votes_total": 51
    },
    "erc": {
      "position": "agree",
      "score": 0.972,
      "votes_with_data": 51,
      "votes_total": 51
    },
    "junts": {
      "position": "mixed",
      "score": 0.028,
      "votes_with_data": 51,
      "votes_total": 51
    },
    "bildu": {
      "position": "agree",
      "score": 0.899,
      "votes_with_data": 51,
      "votes_total": 51
    },
    "pnv": {
      "position": "agree",
      "score": 0.375,
      "votes_with_data": 51,
      "votes_total": 51
    },
    "bng": {
      "position": "agree",
      "score": 0.91,
      "votes_with_data": 45,
      "votes_total": 51
    },
    "cc": {
      "position": "mixed",
      "score": 0.099,
      "votes_with_data": 51,
      "votes_total": 51
    },
    "upn": {
      "position": "disagree",
      "score": -0.655,
      "votes_with_data": 51,
      "votes_total": 51
    }
  },
  "votes": [
    {
      "id": "v-1d420e35d0",
      "vote_event_id": "url:https://www.congreso.es/webpublica/opendata/votaciones/Leg15/Sesion175/20260428/Votacion003/VOT_20260428200330.json",
      "vote_date": "2026-04-28",
      "title": "Real Decreto-ley 8/2026, de 20 de marzo, de medidas en el alquiler en respuesta a las consecuencias económicas y sociales de la Guerra de Irán.",
      "subgroup": "",
      "summary_yes": "Aprobar la prórroga extraordinaria de los alquileres y el tope del 2 % a la subida de la renta hasta 2027.",
      "g": "c2ff0ef7",
      "kind": "rdl",
      "agree_vote": "Sí",
      "approved": false,
      "totals": [
        166,
        177,
        5
      ],
      "parties": "SNNSSSNSASSN",
      "source_url": "https://www.congreso.es/webpublica/opendata/votaciones/Leg15/Sesion175/20260428/Votacion003/VOT_20260428200330.json"
    },
    {
      "id": "v-59ac7a1d1f",
      "vote_event_id": "url:https://www.congreso.es/webpublica/opendata/votaciones/Leg15/Sesion197/20260915/Votacion002/VOT_20260915204523.json",
      "vote_date": "2026-09-15",
      "title": "Proposición de Ley del Grupo Parlamentario Plurinacional SUMAR, para la modificación de la Ley 12/2023, de 24 de mayo, por el derecho a la vivienda.",
      "subgroup": "",
      "summary_yes": "Tramitar la ley que limita a personas físicas la compra de viviendas",
      "g": "f64994e5",
      "kind": "toma",
      "agree_vote": "Sí",
      "approved": false,
      "totals": [
        44,
        175,
        127
      ],
      "parties": "ANNSSSNSASAN",
      "source_url": "https://www.congreso.es/webpublica/opendata/votaciones/Leg15/Sesion197/20260915/Votacion002/VOT_20260915204523.json"
    }
  ]
}

★ El mapa de votaciones por temas y por diputado

Las preguntas clave salen de un trabajo más grande: leer todas las votaciones nominales del Pleno del Congreso XV (2.175 entre 2023-09-19 y 2026-09-30) y colocar cada una en ejes por tema. El resultado se puede explorar en el mapa por temas (hacia dónde empujó cada partido) y en la ficha de cada diputado/a.

  1. Qué se clasifica: todas las votaciones con partidos enfrentados (al menos uno vota Sí y otro No) que no son trámites: tomas en consideración, votaciones finales, decretos ley, enmiendas a la totalidad, proposiciones no de ley y mociones (también punto por punto) y, desde el 13 de octubre de 2026, también las enmiendas.
  2. Enmiendas: la votación solo dice «Enmienda 327» o «Enmiendas al artículo 13», así que para cada ley se localizó su expediente (confirmado porque su ficha lista esas votaciones) y se descargaron del BOCG sus enmiendas («ENMIENDA NÚM.»), las enmiendas del Senado (mensaje motivado) y el dictamen con los votos particulares (etl/data/seeds/vote_atlas_amendment_docs_v1.json). Cada votación se empareja por número (rangos incluidos); las transaccionales, por las enmiendas que transaccionan; el «resto de las enmiendas» de un grupo, por sus enmiendas no votadas aparte (en los Presupuestos, solo las de esa sección); las del Senado, por el tramo del mensaje motivado sobre ese precepto. Resultado: 2.457 votaciones de enmiendas con partidos enfrentados en 64 leyes (Presupuestos 2023 incluidos); texto localizado en 2.419 (1.569 por número, 177 transaccionales, 354 «resto», 299 del Senado, 20 votos particulares). Comprobación: en las 3.594 enmiendas numeradas, el firmante coincide siempre con el grupo que cita la votación. Los propios clasificadores detectaron tres fallos del localizador (firmantes en plural, «resto» de los Presupuestos sin filtrar por sección, el número propio de las transaccionales); se corrigieron en el código, con tests, y se reclasificaron las votaciones cuyo texto cambió. Las clasificó otro prompt adaptado (docs/etl/sprints/VOTE-ATLAS-20261013/prompts/clasificar-enmiendas.md): votar Sí = incorporar la enmienda; partidas presupuestarias para una obra o un territorio = demanda local. Todas las enmiendas de una ley comparten un peso por eje, para que una ley con cien enmiendas no pese cien veces más. Muestra de control a ciegas: 95 % mismo eje principal y 99 % mismo sentido (129 votaciones; docs/etl/sprints/VOTE-ATLAS-20261013/evidence/vote-atlas-classification-agreement-enmiendas.json). Limitación: muchas enmiendas del Senado solo citan su número y su texto está en el BOCG del Senado, que hoy no responde; esas quedan «sin texto», sin dirección inventada.
  3. Texto oficial: para cada moción y PNL votada se localizó su expediente en el buscador del Congreso (confirmado porque la ficha enlaza esa misma votación) y se extrajo el texto literal de cada punto del BOCG (etl/data/seeds/vote_atlas_texts_v1.json).
  4. Codebook: 33 ejes en 14 temas, cada uno con dos polos descritos en lenguaje llano (etl/data/seeds/vote_atlas_axes_v1.json).
  5. Clasificación: subagentes de Claude Opus 5.5 leyeron cada votación y decidieron hasta dos ejes, hacia qué polo empuja votar Sí y con qué confianza, sin ver cómo votó ningún partido: 14 para las votaciones de la XV, 4 para las de la XIV y 20 para las enmiendas de ambas, más 5 para reclasificar las votaciones cuyo texto cambió al corregir el localizador de enmiendas (43 clasificadores en total). En la XV, 1.296 votaciones tienen eje y 1.029 cuentan (confianza alta o media) (etl/data/seeds/vote_atlas_classifications_v1.json).
  6. Control de calidad: otros 3 subagentes reclasificaron a ciegas una muestra aleatoria de 150 votaciones. Coincidieron en el eje principal en el 92 % de los casos y en el sentido del voto en el 100 % cuando coincidían en el eje; de las votaciones que cuentan, el 99 % recibió el mismo eje en la segunda lectura (docs/etl/sprints/VOTE-ATLAS-20261013/evidence/vote-atlas-classification-agreement.json). Falta la revisión humana.
  7. Diputados: la misma cuenta con el voto de cada persona (solo ejes con al menos 3 votaciones), comparada con la de su partido. Su ficha muestra además la participación (votos emitidos entre las votaciones en que era diputado/a), el porcentaje de veces que votó igual que la mayoría de su partido y la lista de votos distintos (incluidas enmiendas y trámites; algunos son errores al votar corregidos en una votación repetida). Quien cambió de grupo se cuenta con el partido en el que estaba en cada votación.
  8. Final de la XIV legislatura (desde el 2022-10-01): 2.378 votaciones más, con el mismo método (textos enlazados y 1.106 clasificadas con eje), para cubrir los últimos cuatro años. Su propia muestra de control a ciegas (60 votaciones al azar, reclasificadas por otros 2 subagentes): 100 % mismo eje principal y 100 % mismo sentido cuando coinciden en el eje (docs/etl/sprints/VOTE-ATLAS-20261013/evidence/vote-atlas-classification-agreement-xiv.json). Solo cuentan en la ficha de cada diputado/a: los grupos de entonces (Unidas Podemos, Ciudadanos, Plural…) no equivalen a los partidos de la papeleta de hoy, así que el mapa por partidos y el test usan solo la XV. En la XIV, «votar distinto» se mide frente a su grupo parlamentario, salvo los grupos Mixto y Plural, que reunían a varios partidos. Una misma persona en las dos legislaturas se reconoce por su identificador o, si falta, por su nombre.
  9. Qué no entra: 126 votaciones sin partidos enfrentados (no distinguen a nadie) y 157 trámites (prórrogas, avocaciones, correcciones técnicas). Las votaciones con contenido pero sin eje claro se marcan con su motivo: demanda local (78), sin eje (180), sin texto (153), trámite (110).
Reglas de clasificación
  • Clasificar por el contenido de lo votado (texto oficial, título y punto), no por quién lo propone ni por cómo votaron los partidos.
  • Una votación puede tocar como máximo dos ejes (principal y secundario); si no encaja en ninguno, eje null con motivo.
  • yes_pushes = '+' si votar Sí empuja hacia el polo positivo, '-' si empuja hacia el negativo.
  • Las enmiendas a la totalidad: votar Sí devuelve el proyecto al Gobierno (o propone un texto alternativo), así que empuja contra el contenido del proyecto.
  • Peticiones territoriales concretas (una carretera, un tren de una provincia) sin componente ideológico van a eje null con motivo 'demanda_local', salvo que el texto lo plantee como política general.
  • Si el texto mezcla medidas en direcciones distintas, elegir la dominante y bajar la confianza; si no hay dominante, eje null con motivo 'mixto'.

4 El modo infinito: 334 votaciones reales

  • Selección automática (sin elección manual): todas las votaciones nominales de la legislatura XV de estos tipos — tomas en consideración, convalidaciones de decretos ley, proposiciones no de ley, mociones y votaciones finales — en las que al menos un partido votó Sí y otro No. Las unánimes no dicen nada sobre diferencias y se descartan.
  • Reparto actual por tipo: final 14, mocion 98, pnl 91, rdl 38, toma 93. Si una ley tiene toma en consideración y votación final, solo queda la final.
  • La pregunta es el título oficial sin el grupo que lo propuso (se revela tras responder, para que no te condicione). «De acuerdo» siempre significa votar Sí.
  • Orden: primero las curadas; luego se alternan votaciones donde el Sí favorece al PSOE, al PP o a ambos (100 / 111 / 123), empezando por las que dividen a más partidos (206 con ≥2 partidos en cada lado). Así responder siempre «Sí» no te arrastra hacia un lado.
  • Tema: por palabras clave del título (reglas en scripts/export_voting_aid_pool.py). Es tosco: 91 votaciones quedan en «Otros».

5 El texto oficial de cada votación

Un título puede esconder mucho: un decreto «de transporte» que también cambia impuestos. Por eso cada votación se enlaza al documento oficial votado: decretos ley en el BOE, proposiciones y proyectos en el BOCG (serie B/A), proposiciones no de ley y mociones en el BOCG serie D. Hoy hay texto para 375 votaciones (373 documentos), cada uno con su URL y su huella SHA-256, para que cualquiera compruebe que es el mismo documento.

  • Las PNL y mociones sin enlace directo se buscaron en el buscador de iniciativas del Congreso, y el expediente solo se aceptó si su ficha enlaza la misma votación nominal (scripts/voting_aid_motion_texts.py).
  • Se indica qué versión del texto es: aprobado, original votado en sus términos, original con enmienda incorporada, enmienda transaccional no publicada, texto inicial antes de enmiendas…
  • Ómnibus (automático, sin IA): si el título, los bloques y las normas que modifica abarcan 3 o más temas (24 documentos). También se marcan los «cambios ajenos al título» en disposiciones finales. Puedes excluir las ómnibus del cálculo.

6 «Qué se votaba»: resúmenes en lenguaje llano con IA

Antes de responder ves hasta 6 viñetas que dicen qué contenía el texto votado y una frase «En pocas palabras». Esto sí lo escribió una IA, con reglas estrictas (ver prompts):

  • Solo la parte dispositiva (el articulado o los puntos que se piden), nunca la exposición de motivos.
  • Cada viñeta lleva un localizador («Artículo 9 bis», «Punto 3») para comprobarla en el documento.
  • Neutral: sin partidos, sin quién lo propuso, sin resultado, sin adjetivos valorativos.
  • Condicional en proposiciones («se permitiría…»): no se presenta como ley vigente lo que solo se propuso.

Proceso: (1) Claude Sonnet 5.5 redacta por lotes leyendo el texto extraído del PDF/XML oficial; (2) otro subagente Sonnet 5.5, sin ver el borrador como «correcto», comprueba cada viñeta contra el texto y la corrige; (3) un validador automático (scripts/export_voting_aid_vote_bullets.py) rechaza viñetas sin localizador, con nombres de partidos, de más de 6 o cuyo documento no coincide en URL y SHA-256 con el publicado. La frase «En pocas palabras» la escribió el agente principal (Claude Opus 5.5) a partir de las viñetas ya revisadas, sin añadir nada.

375votaciones con viñetas (de 375)
1.848viñetas
306 / 373documentos corregidos por el revisor IA
1.006cambios hechos en la revisión (cifras, condiciones, localizadores…)
165avisos abiertos para revisión humana
0revisadas por una persona

Que el revisor corrigiera 306 de 373 documentos indica que el primer borrador de una IA no es fiable por sí solo. Cada corrección queda guardada (borrador original, cambios y avisos) en etl/data/seeds/voting_aid_vote_bullets_v1.json.

7 «Ramificaciones»: a quién afecta y qué puede pasar después (piloto)

Una ley describe una regla, pero para juzgarla hace falta saber a cuánta gente toca y qué consecuencias puede tener. Debajo de «Qué se votaba», algunas preguntas muestran tres capas con distinto grado de certeza:

  • A quién afecta: solo cifras oficiales (INE, Banco de España, Interior, CGPJ, BOE…) con su periodo y enlace. Ningún número sale de la memoria de una IA.
  • Qué cambiaría para cada colectivo: del texto oficial, con su localizador, incluido el colectivo que sale peor parado.
  • Posibles consecuencias: beneficios esperados y riesgos señalados, siempre de los dos tipos, cada uno con su fuente: un organismo público, un estudio publicado o un argumento del debate con su página del Diario de Sesiones (sin decir quién lo dijo, porque se ve antes de responder). Son previsiones, no hechos.

Cubre 1.117 votaciones y 62 preguntas con 680 cifras oficiales, en borrador sin revisión humana; de los efectos indirectos, 3.114 vienen del debate, 2 de organismos públicos y 1 de estudios. Las proposiciones de ley de los grupos no llevan memoria oficial de impacto, y la tarjeta lo dice. Las preguntas a la IA piden lo mismo: escala, efectos por colectivo y consecuencias en ambos sentidos. Datos y reglas en etl/data/seeds/voting_aid_vote_impacts_v1.json; validador en scripts/export_voting_aid_vote_impacts.py.

Las posibles consecuencias no se muestran ahora mismo. No se muestran: en una revisión de 20 votaciones al azar fallaron 4 (argumentos del debate sobre otros puntos de la iniciativa que el votado) y, limitados a votaciones de la iniciativa entera, fallaron 2 de 10 (debates de una fase posterior, beneficios sin respaldo en el debate o redactados con la voz de un lado). Revisión en docs/etl/sprints/VOTING-AID-20261011/evidence/impacts-review-20261013.json.

8 Revisión independiente de las afirmaciones (primera versión)

Esta revisión se hizo sobre las afirmaciones de la primera versión del test (11/10/2026), que sigue online. Las preguntas clave de la versión actual resumen los ejes del paso 3, cuya clasificación se contrastó con un segundo clasificador independiente.

Dos revisores IA independientes (claude-sonnet-5-5) por afirmación; cada uno leyó el texto oficial (BOCG/BOE) de cada votación y juzgó si votar agree_vote equivale a estar de acuerdo con la afirmación, y si la redacción es neutral y de una sola idea. No vieron cómo votaron los partidos. Sin revisión humana.

78 / 82comprobaciones de sentido correctas
0erróneas
4dudosas
14objeciones de redacción (de 66 juicios)

Resultado: 82 comprobaciones de sentido de voto (41 votaciones × 2): 78 correctas, 0 erróneas, 4 dudosas (pacto verde, reescrita; embargo de armas 2025, anotada). 7 afirmaciones reescritas por doble afirmación o por ir más allá de lo votado. La evidencia completa, con la cita literal y el localizador que usó cada revisor, está en docs/etl/sprints/VOTING-AID-20261011/evidence/voting-aid-statement-review-20261012.json.

9 Cómo se calcula tu coincidencia

  • Tus respuestas: de acuerdo / sí = +1, neutral / me da igual = 0, en desacuerdo / no = −1.
  • Partido en una pregunta clave: su dirección de −1 a +1 sobre todas las votaciones del eje (paso 3). En el modo infinito: a favor = +1, en contra = −1, abstención o votos divididos = 0.
  • Coincidencia en una pregunta = 1 − |tú − partido| / 2 (1 si coincidís del todo, 0 si sois opuestos). Un partido que empujó a favor en el 80 % de los casos coincide más contigo que uno que lo hizo en el 60 %.
  • Coincidencia total = media ponderada; las que marcas como «me importa mucho» cuentan doble.
  • Las preguntas que saltas y las celdas sin datos no cuentan. Ves con cuántas preguntas se ha comparado cada partido.
  • Con menos de 8 respuestas el resultado se marca como provisional.

Código: ui/site/app/citizen/vota/votingAidModel.mjs (función scoreParties), con tests en tests/test_citizen_voting_aid_model.mjs.

10 Privacidad y los botones «Pregúntale a una IA»

  • Tus respuestas se guardan solo en tu navegador (localStorage). No hay servidor que las reciba.
  • Compartir es voluntario y usa el fragmento de la URL (#r=…), que los navegadores no envían al servidor.
  • Los botones de ChatGPT, Claude y Gemini abren esos servicios con una pregunta ya escrita que contiene lo votado (título, fechas, enlaces oficiales, viñetas) y, solo después de responder, cómo votó cada partido. Nunca incluye tus respuestas, y puedes leerla entera antes de enviarla. Lo que conteste ese servicio no lo controlamos ni lo revisamos: úsalo como ayuda, no como fuente.

Versiones del test: todas siguen online

Cuando mejoramos el test no borramos el anterior. La versión nueva es la que se abre por defecto; las anteriores siguen en su propia dirección, con sus mismas preguntas y datos, y con tus respuestas guardadas aparte en tu navegador. Así puedes volver a ver lo que respondiste, revisarlo y comparar tu resultado con el de la versión nueva (la página de resultados lo hace por ti). Al estrenar una versión solo se copian las respuestas a preguntas que ambas comparten (las votaciones del modo infinito).

  • Por temas (13/10/2026) · versión actual: 29 preguntas clave que resumen 1.023 votaciones, cada una divisible en votaciones concretas. Datos: citizen/data/voting_aid_generales_v2.json.
  • Primera versión (11/10/2026) · versión anterior: 33 afirmaciones respaldadas por 41 votaciones (1 a 3 por afirmación). Datos: citizen/data/voting_aid_generales_v1.json.

Registro de versiones: ui/site/app/citizen/vota/votingAidVersions.mjs.

Quién hizo qué: personas, modelos y código

TareaQuiénComprobación
Idea, dirección y decisiones de productoEl mantenedor del proyecto (persona)—
Descarga de votaciones y textos oficiales, posiciones de partidos, selección del modo infinito, ómnibus, temasCódigo determinista (Python), sin IA en tiempo de ejecuciónTests automáticos y datos oficiales enlazados
Escribir ese código y la webClaude Opus 5.5 (Anthropic) como agente de programación, dirigido por el mantenedorTests, revisión del mantenedor
Redactar las afirmaciones de la versión anterior y su sentido de votoClaude Opus 5.52 revisores Claude Sonnet 5.5 independientes · falta revisión humana
Clasificar cada votación (XV y XIV) en un eje temáticoClaude Opus 5.5 (18 subagentes, sin ver votos)Reclasificación a ciegas: XV 92 % y XIV 100 % mismo eje principal · falta revisión humana
Localizar el texto de cada enmienda votada en el BOCG y emparejarlo con su votaciónCódigo determinista (Python)Firmante = grupo citado en todas las enmiendas numeradas · tests automáticos
Clasificar cada enmienda en un eje temáticoClaude Opus 5.5 (20 subagentes + 5 de reclasificación, sin ver votos)Reclasificación a ciegas: 95 % mismo eje principal, 99 % mismo sentido · falta revisión humana
Redactar las 29 preguntas clave (una por eje)Claude Opus 5.5Equilibrio PSOE/PP automático · falta revisión humana
Viñetas «Qué se votaba»Claude Sonnet 5.5 (subagentes por lotes)Otro subagente Sonnet 5.5 + validador automático · falta revisión humana
Frase «En pocas palabras»Claude Opus 5.5Validador (≤180 caracteres, sin partidos) · falta revisión humana
Enlazar cada moción y PNL a su texto oficial y extraer sus puntosCódigo determinista (buscador del Congreso + BOCG)Solo se acepta el expediente si su ficha enlaza la misma votación
Direcciones por partido y por diputado, desglose «por partes»Fórmula determinista (Python y tu navegador), sin IATests automáticos
Calcular tu coincidenciaFórmula en tu navegador, sin IATests
Respuestas en «Pregúntale a una IA»ChatGPT, Claude o Gemini, elegido por tiNinguna por nuestra parte

Las fechas de trabajo con IA: 11, 12 y 13 de octubre de 2026 (el 13, el mapa por temas y las preguntas clave). Las afirmaciones revisadas por IA el 2026-10-12; datos generados el 2026-10-13.

Los prompts, literales

Estas son las instrucciones exactas que recibieron los modelos. Solo se ha sustituido la ruta de una carpeta temporal local por <scratchpad>. Archivos en docs/etl/sprints/VOTING-AID-20261011/prompts.

Redacción de las viñetas «Qué se votaba» · Claude Sonnet 5.5 (subagentes, por lotes)
# Viñetas «Qué se votaba» — instrucciones para cada lote

Proyecto: ayuda al voto «¿Con quién coincides?» (votaconlachola.org). Cada pregunta es una votación real del Congreso.
Antes de responder, el usuario ve un bloque «Qué se votaba» con **hasta 6 viñetas** en lenguaje llano sobre lo que
concretamente contenía el texto votado. Tu trabajo: leer el texto oficial de cada documento del lote y redactar esas viñetas.

## Entrada
Un fichero JSON (lista). Cada elemento es un documento oficial:
- `doc_key`, `url`, `sha256`, `source` (BOE/BOCG): identifican el documento. Cópialos tal cual en la salida.
- `text_path`: texto plano ya extraído del documento oficial. Léelo con la herramienta Read (o `grep -n` para ver la estructura).
  Si `text_chars` > 60000, NO lo leas entero: localiza la estructura con
  `grep -nE "^(TÍTULO|CAPÍTULO|Artículo|Disposición|Sección)" <text_path> | head -200` y lee solo los tramos relevantes (offset/limit).
- `structure_hint`: encabezados literales ya extraídos (títulos/capítulos/artículos). Ayuda, no sustituye a leer el texto.
- `omnibus`/`themes`: si `omnibus` es true, el texto mezcla varios temas.
- `votes`: las votaciones que usan este texto (tipo: toma = toma en consideración de una proposición de ley; final = votación de
  conjunto; rdl = convalidación de real decreto-ley; pnl = proposición no de ley; mocion = moción; curated = pregunta curada).
  El título puede nombrar al grupo proponente: **no lo repitas nunca**.

## Reglas de redacción (obligatorias)
1. **Fundamentado**: cada viñeta resume algo que está en la parte dispositiva/articulado del texto (no en la exposición de motivos
   ni en el preámbulo, que solo sirven para entender). Nada de inventar cifras, plazos ni efectos que el texto no diga.
2. **Localizador obligatorio** por viñeta: dónde está en el texto, tal como lo nombra el documento: `Artículo 3`, `Artículo único, apartado Dos`,
   `Disposición final segunda`, `Título II`, `Capítulo III`, `Punto 2`, `Apartados 1 a 4`… Debe poder encontrarse en el texto.
3. **Neutral**: no nombres ningún partido ni grupo parlamentario ni a quién lo propuso; nada de adjetivos valorativos
   («histórico», «polémico», «necesario»); no digas si se aprobó o se rechazó. Describe lo que el texto haría/pide.
4. **Lenguaje llano**: frases cortas (máx. ~180 caracteres por viñeta), sin jerga cuando se pueda evitar
   (p. ej. «baja el IVA de X al Y %» mejor que «modifica el artículo 91 de la Ley 37/1992»). Si cambia una ley, di qué cambia en la práctica
   según el propio texto; puedes nombrar la ley afectada si ayuda.
5. **Máximo 6 viñetas** (ideal 3–5). Ordena de lo más importante a lo menos. Para textos ómnibus (`omnibus: true` o muchos bloques),
   cubre los bloques principales, una viñeta por bloque, y si hay cambios en disposiciones finales sobre temas ajenos al título,
   dedica una viñeta a ellos.
6. Si el texto está incompleto, ilegible o no corresponde a la votación, no inventes: devuelve `"bullets": []` y explícalo en `notes`.
7. Para PNL y mociones: los puntos «El Congreso de los Diputados insta al Gobierno a: 1… 2…» son el contenido; resúmelos punto a punto
   (si hay más de 6, agrupa los afines y usa localizadores como `Puntos 5 a 7`). Si `text_status` indica que el texto votado era una
   enmienda transaccional no publicada, redacta igualmente a partir del texto disponible: la interfaz ya avisa.

## Salida
Escribe con la herramienta Write el fichero que te indique el encargo: un JSON con esta forma exacta:

```json
[
  {
    "doc_key": "…",
    "url": "…",
    "sha256": "…",
    "bullets": [
      {"text": "Prorroga hasta el 31 de diciembre de 2025 la suspensión de los desahucios de hogares vulnerables.", "locator": "Artículo 1"}
    ],
    "notes": "opcional: dudas, avisos (p. ej. «el documento es la versión inicial, no el texto final»)"
  }
]
```

Un elemento por documento del lote, en el mismo orden. Comprueba al final que el JSON es válido
(`python3 -c "import json,sys; json.load(open(sys.argv[1]))" <fichero>`). No modifiques ningún otro fichero del repositorio.
Responde al final solo con una línea: número de documentos hechos y cualquier incidencia.

## Notas para la fase 2 (PNL, mociones y leyes enlazadas desde la ficha de la iniciativa)
- En PNL y mociones el `text_path` ya contiene solo la parte dispositiva literal (intro + puntos numerados) y una línea
  «Estado del texto». Localizadores: `Punto 1`, `Puntos 2 y 3`, `Punto 4, letra b)`. Si hay un único punto sin número, usa `Parte dispositiva`.
- Si un punto es muy largo, resume lo concreto que pide (qué, a quién, plazo, cifra) sin añadir nada.
- No copies el nombre del grupo que firma ni el de quien presentó enmiendas aunque aparezca en el texto.
«Ramificaciones»: a quién afecta y qué puede pasar después (piloto de vivienda) · Claude Opus 5.5 (agente principal)
# «Ramificaciones» — instrucciones para redactar a quién afecta una votación y qué puede pasar después

Proyecto: ayuda al voto «¿Con quién coincides?» (votaconlachola.org). Una ley describe una regla, pero para juzgarla hace falta
saber a cuánta gente toca y qué consecuencias de primer y segundo orden puede tener. Sin eso, cada cual se queda con lo que le suena.
Tu trabajo: para cada votación del lote, rellenar las tres capas de `etl/data/seeds/voting_aid_vote_impacts_v1.json`,
cada una con su grado de certeza a la vista.

Piloto (2026-10-13): lo redactó el agente principal (Claude Opus 5.5) para 5 votaciones de vivienda, siguiendo exactamente estas reglas.
El validador es `scripts/export_voting_aid_vote_impacts.py` (test `tests/test_export_voting_aid_vote_impacts.py`).

## Entrada
- La votación (`vote_event_id`), sus viñetas «Qué se votaba» ya revisadas (`voting_aid_vote_bullets_v1.json`) y el texto oficial (BOCG/BOE).
- El Diario de Sesiones del Pleno con el debate de esa votación (`https://www.congreso.es/public_oficiales/L15/CONG/DS/PL/DSCD-15-PL-<n>.PDF`;
  el número del Diario no coincide con el de la sesión: comprueba la fecha en la primera página. El Congreso solo sirve los PDF con
  un User-Agent de navegador, como las cabeceras del ETL).
- Las fuentes oficiales de cifras del tema (INE, Banco de España, ministerios, CGPJ, BOE, respuestas parlamentarias del Gobierno…).

## Capa 1 — `facts`: a quién afecta y cuántos son
1. **Solo cifras oficiales**, comprobadas en la fuente (descarga la tabla, el PDF o la API; no copies cifras de prensa).
   Cada dato lleva `text`, `period`, `source` (con tabla o página) y `url`. Nunca escribas un número de memoria.
2. 1 a 3 datos por votación, los que dan escala: cuántos hogares, viviendas, contratos o casos toca, y dónde se concentran.
3. Si la cifra mezcla cosas distintas, sepáralas (p. ej., allanamiento de morada frente a usurpación de pisos vacíos):
   esa distinción suele ser lo que la gente no sabe.
4. Si un dato posterior a la votación cambia su alcance (una sentencia que anula una pieza en la que se apoya), añádelo como dato con su fuente.

## Capa 2 — `direct_effects`: qué cambia para cada colectivo
1. Máx. 4, uno por colectivo (`actor`): inquilinos, propietarios, plataformas, administraciones, ocupantes…
2. Solo lo que dice la parte dispositiva, con `locator` (los mismos artículos que en «Qué se votaba»). Condicional en proposiciones.
3. Incluye siempre al colectivo que sale peor parado, no solo al que la norma quiere proteger.

## Capa 3 — `indirect_effects`: efectos de segundo orden
> **Cerrada (2026-10-13):** no se publica ni se redacta más. Dos revisiones por muestra fallaron (4/20 y 2/10 votaciones);
> ver `docs/etl/sprints/VOTING-AID-20261011/evidence/impacts-review-20261013.json`. Lo ya redactado queda en las semillas.

1. Máx. 6. Cada uno es `beneficio_esperado` o `riesgo_senalado`. **Si hay alguno, tiene que haber de los dos tipos**: si solo
   encuentras argumentos de un lado, no publiques esta capa.
2. Cada efecto lleva su evidencia, por este orden de preferencia:
   - `organismo_publico`: memoria de análisis de impacto normativo (solo en proyectos del Gobierno), AIReF, Banco de España, CNMC,
     Consejo de Estado, CGPJ… con página.
   - `estudio`: evaluación empírica publicada (DOI) de una medida igual o muy parecida; di dónde y cuándo se midió.
   - `debate`: argumento dicho en el debate del Pleno, con `locator` = página del Diario de Sesiones.
3. **No nombres al grupo ni a quien habló** (se muestra antes de responder); resume el mecanismo en una frase llana
   («Si los propietarios se sienten menos seguros, parte de las viviendas podría retirarse…»). El enlace al Diario permite comprobarlo.
4. Escribe previsiones como previsiones («podría», «se espera»), nunca como hechos. No añadas efectos que nadie haya defendido con fuente.
5. Descarta insultos, datos sin fuente y acusaciones; quédate con mecanismos (oferta, precios, plazos, acceso a servicios, conflictos
   de competencias, privacidad, disuasión…).

## `gaps`: lo que no se sabe
Una frase: si es proposición de ley (no lleva memoria oficial de impacto), qué cifra clave no existe, o si el estudio mide otro lugar o época.

## Revisión
`review.status = draft` hasta que otra mano (IA y después persona) compruebe cada dato en su fuente y cada argumento en su página.
Ejecuta `python3 -m scripts.export_voting_aid_vote_impacts` y `python3 -m unittest tests.test_export_voting_aid_vote_impacts`.

## Cobertura total: «A quién afecta» en todas las preguntas (2026-10-13)
Cada pregunta agrupada (`statements`, v1 y v2) y cada votación concreta (`votes`: las que resume cada pregunta de la v2,
las de la v1 y las del modo infinito) tiene que decir a quién afecta. Se redacta **una pregunta por subagente**
(Claude Sonnet 5.5), cada uno en su fragmento `etl/data/seeds/voting_aid_vote_impacts_v1.d/<unidad>.json`
(misma forma que la semilla: `facts`, `statements`, `votes`). El exportador fusiona los fragmentos y
`--require-complete` falla mientras falte alguna.

- Pregunta agrupada: `statements.<statement_id>.facts` = 1 a 3 cifras oficiales que dan la escala del tema.
- Votación concreta: `votes.<vote_event_id>` con `facts` (1 a 3, las que dan escala a *esa* votación; reutiliza las del
  tema si encajan, añade una específica si la medida toca a un colectivo concreto), `direct_effects` (obligatorios si la
  votación tiene viñetas «Qué se votaba»: mismos localizadores; si no las tiene, solo si abres el texto oficial),
  `review.status = draft`. Los efectos indirectos no son obligatorios en esta pasada.
- Ids de cifras nuevas con el prefijo de la unidad (`<unidad>--<fuente>-<periodo>-<tema>`); reutiliza por id cualquier
  cifra de la semilla o de otro fragmento ya escrito. Mismo id = mismo contenido exacto.
- Validar el fragmento: `python3 -m scripts.export_voting_aid_vote_impacts --part <fragmento> --out <scratch>/x.json`.

## Eficiencia de los subagentes (lecciones de la primera tanda, 2026-10-13)
El coste lo dominaba releer el contexto en cada turno (10–25 M tokens de caché por agente, 85–160 turnos; la salida
era <3 k). Los agentes reinventaban lo mismo: leer la semilla, el exportador y todos los fragmentos; buscar en la web
cifras que otro ya tenía; reintentar hosts bloqueados; volcar PDFs enteros (o leerlos como imágenes) en el contexto.
- `python3 -m scripts.voting_aid_impacts_kit`: `catalog` (cifras ya verificadas, para reutilizar por id), `fetch`
  (caché compartida en `etl/data/raw/voting_aid_sources/`, PDF→texto con páginas, salida filtrada y recortada,
  hosts bloqueados conocidos), `vote` (expediente y punto votado del JSON de la votación), `ine`, `eurostat`.
- Prompt autocontenido con las reglas, lista de trabajo compacta (viñetas, punto votado, texto oficial ya cacheado)
  y un esqueleto de fragmento con todas las claves: el agente edita, no construye.
- Presupuesto: ≤4 WebSearch, nada de Read sobre PDF/imágenes, rellenar todas las votaciones de una vez, validar al final.
Revisión de cada viñeta contra el texto oficial · Claude Sonnet 5.5 (otro subagente, segunda mano)
# Revisión de viñetas «Qué se votaba» — preguntas curadas

Eres el revisor (segunda mano) de unas viñetas ya redactadas. Cada viñeta resume, en lenguaje llano, lo que contenía el texto
oficial votado en el Congreso; se muestra al ciudadano ANTES de responder a una pregunta de la ayuda al voto. Tu trabajo es
comprobar cada viñeta contra el texto oficial y dejar una versión final correcta.

## Entrada (lista JSON, un elemento por documento)
- `doc_key`, `url`, `sha256`: identifican el documento. Cópialos tal cual.
- `text_path`: texto plano del documento oficial. Si `text_chars` > 60000 no lo leas entero: usa
  `grep -n` sobre el localizador de cada viñeta (p. ej. `grep -n "Artículo 9 bis" <text_path>`) y lee el tramo con Read (offset/limit).
- `text_status_label`: qué versión del texto es (texto inicial, aprobado, BOE…).
- `bullets`: viñetas actuales `{text, locator}`. `drafter_notes`: avisos del redactor.
- `votes`: votaciones que usan el documento, con la afirmación curada (`statement`) y su contexto. El título puede nombrar al grupo
  proponente: eso NO puede aparecer en las viñetas.

## Qué comprobar en CADA viñeta
1. **Fundamentada**: lo que dice está en el texto, en la parte dispositiva/articulado (no en la exposición de motivos ni el preámbulo).
2. **Localizador correcto**: existe en el texto y apunta a donde está lo que dice la viñeta. Corrígelo si no.
3. **Exacta**: cifras, plazos, porcentajes, fechas, sujetos y alcance idénticos al texto. Nada añadido ni exagerado; sin
   generalizar («todos», «prohíbe») si el texto es más limitado; respeta condiciones y excepciones relevantes.
4. **Neutral**: sin partidos ni grupos, sin quién lo propuso, sin resultado de la votación, sin adjetivos valorativos.
5. **Llana y breve**: ≤ ~180 caracteres, entendible sin saber derecho.
6. **Modo verbal coherente**: describe lo que el texto haría/pide (no lo presentes como ley vigente si es una proposición).

## Y en el conjunto del documento
- **Cobertura**: ¿faltan medidas principales que un votante querría saber (sobre todo las relacionadas con la afirmación curada)?
  ¿Sobra una viñeta menor? Máximo 6 viñetas; ordénalas de más a menos importante.
- **Ómnibus**: si el texto mezcla temas, los bloques principales deben estar cubiertos.
- **Documento correcto**: si el texto no corresponde a lo votado o es solo una versión parcial, dilo en `issues`.

## Salida
Escribe con la herramienta Write el fichero indicado: lista JSON, un elemento por documento, en el mismo orden:

```json
[
  {
    "doc_key": "…", "url": "…", "sha256": "…",
    "verdict": "ok | corregido",
    "bullets": [{"text": "…", "locator": "…"}],
    "changes": ["viñeta 2: la cifra era 6 meses, no 9 (Artículo 9 bis)", "añadida viñeta sobre …"],
    "issues": ["opcional: problemas que no se pueden arreglar con viñetas (versión del texto, documento dudoso…)"]
  }
]
```

`bullets` es SIEMPRE la lista final completa (aunque no cambie nada). `changes` vacía si `verdict` es `ok`.
Valida el JSON al final (`python3 -c "import json,sys; json.load(open(sys.argv[1]))" <fichero>`). No uses la red. No toques el
repositorio. Responde al final con una línea: documentos revisados, cuántos corregidos y cualquier incidencia grave.
Revisión independiente de las afirmaciones (primera versión) · Claude Sonnet 5.5 (dos revisores por afirmación, sin ver los votos de los partidos)
You are an independent reviewer for a Spanish voting-advice tool (vota con la chola). Users answer «de acuerdo / en desacuerdo» to statements; each statement is backed by Congreso XV nominal votes, and `agree_vote` says which vote (Sí/No/Abstención) counts as agreeing with the statement. Your job is to check this against the OFFICIAL text, not to trust the notes.

Input: INPUT_FILE (JSON). Method rules are in its `method` field (note: voting Sí on a «toma en consideración» = supporting the proposal's goal).

For EACH statement and EACH of its votes:
1. Read the official voted text. Use `local_text_file` if present (`pdftotext -layout <file> - | less`-style via Bash; BOE XML can be read directly). If absent, download `official_text_url` with curl into a NEW empty directory under <scratchpad>/claims/dl_REVIEWER/ and read it there. For PNL/mociones the `#page=N` fragment gives the page. `extracted_points_or_bullets` is a machine extraction: use it as a pointer only.
2. Decide `agree_vote_verdict`: "correct" if voting `agree_vote` on that text means agreeing with the statement as worded; "wrong" if it means the opposite; "unclear" if the text does not clearly support or contradict the statement (e.g. statement goes further than the text, or the vote is procedural).
3. Give `evidence_locator` (article/point/page) and `evidence_quote` (literal, at most 25 words).
Per statement also judge the wording: `wording_verdict` "ok" or "issue" — issue if it is not neutral (loaded words, mentions a party/proposer), is double-barrelled (two claims), or overstates what the votes decided. If issue, propose `suggested_text` (neutral Spanish, one claim, faithful to the votes).

Do NOT look at how parties voted, do not search the web for opinions, do not edit any repo file. Write ONLY this JSON (UTF-8, Spanish comments) to OUTPUT_FILE:
{"reviewer": "REVIEWER", "statements": [{"statement_id": "...", "wording_verdict": "ok|issue", "wording_issue": "", "suggested_text": "", "votes": [{"vote_event_id": "...", "agree_vote_verdict": "correct|wrong|unclear", "evidence_locator": "...", "evidence_quote": "...", "comment": ""}]}]}
Cover every statement and vote in the input. Reply with one line: counts of correct/wrong/unclear and of wording issues.
Clasificación de cada votación en un eje temático (mapa y preguntas clave) · Claude Opus 5.5 (14 subagentes por lotes + 3 para la muestra de control, sin ver los votos de los partidos)
Eres un clasificador independiente para «vota con la chola», una herramienta cívica que resume en qué dirección ha empujado cada partido en cada tema según sus votaciones nominales en el Congreso (legislatura XV, 2023-2026).

Entrada:
- Codebook de ejes: `etl/data/seeds/vote_atlas_axes_v1.json` (léelo entero: temas, ejes con su polo positivo `pos` y negativo `neg`, reglas y `null_reasons`).
- Lotes: BATCH_FILES. Cada elemento es una votación: título oficial (`title`), tipo (`kind_label`), subgrupo (`subgroup`, p. ej. «Punto 3.»), resultado, y cuando existe el texto literal votado (`points`, `intro`, `law_bullets`) o los otros puntos de la misma moción (`other_points`, solo como contexto).

Para CADA votación decide qué empuja votar **Sí**:
1. Lee lo que se votaba. Si es un punto de una moción, clasifica ESE punto (no la moción entera). Si no hay texto del punto, usa el título y el contexto, y baja la confianza.
2. Elige hasta dos ejes (`axes`, el primero el principal). Para cada uno: `yes_pushes` = "+" si votar Sí acerca al polo `pos`, "-" si acerca al polo `neg`; `confidence` = "alta" (el texto lo dice claramente), "media" (se deduce con razonable seguridad) o "baja" (indicio débil).
3. Si no encaja en ningún eje, `axes: []` y `null_reason` de `null_reasons` (procedimiento, demanda_local, mixto, sin_eje, sin_texto).
4. `summary_yes`: una frase llana en castellano que diga qué significa votar Sí, sin nombrar partidos ni al proponente (p. ej. «Pedir al Gobierno que baje el IVA de la luz al 5 %»). Máximo 160 caracteres.

Reglas:
- Clasifica por el CONTENIDO, nunca por quién lo propone. No consultes ni deduzcas cómo votaron los partidos; no busques opiniones en la web.
- Enmienda a la totalidad: votar Sí = devolver el proyecto (o sustituirlo), así que empuja en contra de su contenido.
- Convalidación de decreto ley: votar Sí = aprobarlo; clasifica por su contenido principal; si es un decreto ómnibus con medidas de varios temas, elige las dos dominantes con confianza media o baja.
- Toma en consideración: votar Sí = apoyar que se tramite, se interpreta como apoyo a su objetivo.
- Mociones de crítica genérica al Gobierno (deterioro democrático, corrupción del Gobierno, reprobaciones, peticiones de dimisión o de elecciones) van a `control_gobierno` con "+". Si además piden una medida concreta de otro eje, ese eje va primero.
- Peticiones de infraestructura o inversión para un territorio concreto: `null_reason: "demanda_local"` salvo que planteen una política general.
- Convenios internacionales sin controversia de contenido: `procedimiento` salvo que el convenio toque un eje (p. ej. comercio, defensa, Marruecos).

Escribe SOLO este JSON (UTF-8) en OUTPUT_FILE, con una entrada por votación de cada lote, en el mismo orden:
{"classifier": "CLASSIFIER", "items": [{"vote_event_id": "...", "axes": [{"axis_id": "...", "yes_pushes": "+|-", "confidence": "alta|media|baja"}], "null_reason": null, "summary_yes": "...", "note": "opcional: duda o matiz breve"}]}

No edites ningún archivo del repositorio. Responde con una línea: número de votaciones, cuántas con eje y cuántas sin eje por motivo.
Clasificación de cada enmienda con su texto del BOCG · Claude Opus 5.5 (20 subagentes por lotes + 4 para reclasificar tras corregir el localizador + 3 para la muestra de control)
Eres un clasificador independiente para «vota con la chola», una herramienta cívica que resume en qué dirección ha empujado cada partido y cada diputado en cada tema según sus votaciones nominales en el Congreso (legislaturas XIV y XV, 2022-2026).

Esta vez las votaciones son de **enmiendas** a leyes (incluidos los Presupuestos Generales del Estado), enmiendas del Senado y votos particulares.

Entrada:
- Codebook de ejes: `etl/data/seeds/vote_atlas_axes_v1.json` (léelo entero: temas, ejes con su polo positivo `pos` y negativo `neg`, reglas y `null_reasons`).
- Lotes: BATCH_FILES. Cada elemento trae: ley (`title`), tipo (`kind_label`), cómo se votó (`subgroup`), qué significa votar Sí (`yes_means`), y el texto oficial del BOCG: `amendments` (número, firmante y texto literal, a veces recortado), `senate_excerpt` (tramo del mensaje motivado del Senado sobre ese precepto) o `excerpt` (voto particular). `resolution` dice cómo se localizó el texto; `note` avisa de limitaciones (transaccionales, «resto de enmiendas»).

Para CADA votación decide qué empuja votar **Sí**:
1. Lee qué cambia la enmienda respecto a la ley: añadir, suprimir o modificar qué. Clasifica ese cambio, no la ley entera.
2. Elige hasta dos ejes (`axes`, el primero el principal). Para cada uno: `yes_pushes` = "+" si votar Sí acerca al polo `pos`, "-" si acerca al polo `neg`; `confidence` = "alta", "media" o "baja".
3. Si no encaja en ningún eje, `axes: []` y `null_reason` de `null_reasons`.
4. `summary_yes`: una frase llana en castellano que diga qué significa votar Sí, sin nombrar partidos ni al firmante (p. ej. «Añadir a la ley que los alquileres de temporada tengan prórroga obligatoria»). Máximo 160 caracteres.

Reglas propias de las enmiendas:
- Enmiendas técnicas, de redacción, de ordenación o que solo cambian plazos administrativos sin dirección política: `procedimiento`.
- Presupuestos: una enmienda que mueve dinero a una obra, centro o proyecto de un territorio concreto es `demanda_local`. Solo usa un eje si cambia una política general (p. ej. más dinero para dependencia en todo el Estado: `proteccion_social` "+"; bajar un impuesto en el articulado: `fiscalidad` "-").
- «Resto de las enmiendas» de un grupo: si la mayoría van en una misma dirección, clasifícala con confianza baja o media; si mezclan direcciones, `mixto`.
- Transaccionales: su texto final no está publicado; clasifica por las enmiendas que transacciona con confianza baja o media.
- Enmiendas del Senado: votar Sí = aceptar el cambio del Senado. Si el tramo no permite saber qué cambia, `sin_texto`.
- Si el texto está recortado y lo visible no basta, baja la confianza; si no se entiende, `sin_texto`.
- Clasifica por el CONTENIDO, nunca por quién firma la enmienda. No consultes ni deduzcas cómo votaron los partidos; no busques opiniones en la web.

Escribe SOLO este JSON (UTF-8) en OUTPUT_FILE, con una entrada por votación de cada lote, en el mismo orden:
{"classifier": "CLASSIFIER", "items": [{"vote_event_id": "...", "axes": [{"axis_id": "...", "yes_pushes": "+|-", "confidence": "alta|media|baja"}], "null_reason": null, "summary_yes": "...", "note": "opcional: duda o matiz breve"}]}

No edites ningún archivo del repositorio. Responde con una línea: número de votaciones, cuántas con eje y cuántas sin eje por motivo.
Encargos concretos con los que se lanzó cada lote · Claude Opus 5.5 (agente principal) → Claude Sonnet 5.5
# Encargos a subagentes (tal cual)

Mensajes con los que el agente principal (Claude Opus 5.5) lanzó cada tipo de subagente (modelo `sonnet` = Claude Sonnet 5.5) el 2026-10-12. Se muestra uno por tipo: los demás lotes solo cambian el número de lote. `<scratchpad>` sustituye la ruta temporal local donde estaban los lotes de entrada y salida.

## Bullets batch text_01 (2026-10-12 06:52 UTC, modelo `sonnet`)

```text
Lee y sigue al pie de la letra las instrucciones de <scratchpad>/batches/INSTRUCTIONS.md.
Lote de entrada: <scratchpad>/batches/text_01.json
Fichero de salida: <scratchpad>/bullets/text_01.json
No uses la red. No toques el repositorio.
```

## Bullets redo batch (2026-10-12 07:21 UTC, modelo `sonnet`)

```text
Lee y sigue al pie de la letra las instrucciones de <scratchpad>/batches/INSTRUCTIONS.md (incluida la sección de fase 2).
Lote de entrada: <scratchpad>/batches/redo_01.json
Fichero de salida: <scratchpad>/bullets/redo_01.json
Nota específica para el documento 3689aeae71cc (BOCG-15-B-33-2, votación de conjunto de una reforma del Reglamento del Congreso que modifica su artículo 46.1): ese PDF reúne varias publicaciones (toma en consideración, enmiendas —incluida una enmienda a la totalidad con texto alternativo— y el texto aprobado por el Pleno). Localiza el texto aprobado/definitivo de la reforma del artículo 46.1 (busca «46.1», «Aprobación», «texto aprobado», «Pleno») y resume eso, no las enmiendas; si de verdad no hay texto aprobado en el documento, resume la proposición tomada en consideración y dilo en notes. Ninguna salida puede quedar con bullets vacías salvo que el texto no exista.
No uses la red. No toques el repositorio. Escribe el fichero con la herramienta Write.
```

## Review curated bullets 01 (2026-10-12 08:10 UTC, modelo `sonnet`)

```text
Lee y sigue al pie de la letra <scratchpad>/batches/REVIEW_INSTRUCTIONS.md.
Entrada: <scratchpad>/batches/review_01.json
Salida: <scratchpad>/bullets_review/review_01.json
No uses la red. No toques el repositorio. Escribe con la herramienta Write.
```

## Review pool bullets 01 (2026-10-12 08:47 UTC, modelo `sonnet`)

```text
Lee y sigue al pie de la letra <scratchpad>/batches/REVIEW_INSTRUCTIONS.md. Aquí no hay afirmación curada: la pregunta es el título de la votación (`vote_title`, ya sin proponente) y las viñetas deben decir qué contenía el texto. En PNL y mociones el texto ya es solo la parte dispositiva literal.
Entrada: <scratchpad>/batches/review_pool_01.json
Salida: <scratchpad>/bullets_review/review_pool_01.json
No uses la red. No toques el repositorio. Escribe con la herramienta Write.
```

## Review fixed menopause PNL (2026-10-12 08:59 UTC, modelo `sonnet`)

```text
Lee y sigue al pie de la letra <scratchpad>/batches/REVIEW_INSTRUCTIONS.md. No hay afirmación curada; el texto es solo la parte dispositiva literal aprobada (9 puntos). Las viñetas actuales se escribieron con un texto cortado en el punto 7: asegúrate de cubrir también los puntos 8 y 9 (máx. 6 viñetas, agrupa si hace falta).
Entrada: <scratchpad>/batches/review_fix_01.json
Salida: <scratchpad>/bullets_review/review_fix_01.json
No uses la red. No toques el repositorio. Escribe con la herramienta Write.
```

## Claims review batch0 A — revisor A del lote 0; hubo 6 lotes × 2 revisores (A y B) (2026-10-12 12:00 UTC, modelo `sonnet`)

```text
Read <scratchpad>/claims/PROMPT.md and follow it exactly with these substitutions: INPUT_FILE=<scratchpad>/claims/batch0.json, OUTPUT_FILE=<scratchpad>/claims/review_0_A.json, REVIEWER=0A. Working directory for commands: <repo> (read-only).
```

## Draft bullets for 6 votes (2026-10-12 12:01 UTC, modelo `sonnet`)

```text
Lee y sigue exactamente <scratchpad>/batches/INSTRUCTIONS.md (incluidas las «Notas para la fase 2»).

Entrada: <scratchpad>/p3/p3_input.json (6 documentos).
Salida: <scratchpad>/p3/p3_draft.json

Además de lo que piden las instrucciones, añade en cada elemento un campo "simple": las mismas viñetas resumidas en UNA sola frase llana (≤180 caracteres), sin añadir nada que no digan, sin partidos ni resultado.

Notas por tipo: «toma» = toma en consideración de una proposición (texto inicial: usa el condicional, «se permitiría…»); «final» = votación de conjunto de un proyecto en lectura única (el texto es el aprobado por el Pleno; si solo actualiza cifras o cupos de un concierto/convenio económico, di en lenguaje llano qué impuestos o cifras cambian según el articulado). Para la reforma del Reglamento del Congreso y la reforma constitucional (artículo 69.3), explica en llano qué cambiaría. No uses la red; no toques el repositorio.
```

## Review bullets for 6 votes (2026-10-12 12:03 UTC, modelo `sonnet`)

```text
Lee y sigue exactamente <scratchpad>/batches/REVIEW_INSTRUCTIONS.md.

Entrada: <scratchpad>/p3/p3_review_input.json (6 documentos; aquí `votes` no trae afirmación curada, solo tipo y título).
Salida: <scratchpad>/p3/p3_review.json

Además: revisa también el campo "simple" (una frase ≤180 caracteres que resume las viñetas sin añadir nada) y devuélvelo final en cada elemento como "simple". Atención especial: (1) en la reforma del Reglamento, el redactor dedujo «rebaja de 15 % y 5 % a 10 % y 3 %» comparando con el Reglamento vigente, que NO está en el texto: una viñeta solo puede decir lo que dice el documento (si el documento no da el umbral anterior, quita la comparación y di solo el nuevo umbral); (2) en el Estatuto del Empleado Público el texto viene truncado con «[...]»: no afirmes nada sobre lo omitido; (3) usa el condicional en las tomas en consideración (proposiciones).
```

Las decisiones humanas que dieron forma a la herramienta

La herramienta nació de una sesión de trabajo del mantenedor con el agente de programación (Claude Opus 5.5). Estas fueron, en orden, las indicaciones que marcaron su diseño. Están resumidas con nuestras palabras; no son citas literales.

  1. Objetivo: convertir los datos de votaciones del proyecto en algo útil para decidir el voto en las próximas generales, empezando por un cuestionario basado en votaciones reales, y dejar al agente iterar de forma autónoma sobre él.
  2. Profundidad y claridad: muchas más preguntas, poder seguir respondiendo sin límite y ver, partido a partido, en qué preguntas coincides y en cuáles no. Y que la experiencia resultara amena.
  3. Explicaciones verificables: enlaces directos a Gemini, ChatGPT y Claude para entender en términos sencillos qué se votaba y por qué cada partido votó como votó, con un contexto que incluya exactamente el texto votado.
  4. Que el título no engañe: mostrar en cada pregunta lo esencial de lo votado, porque las votaciones ómnibus mezclan asuntos distintos y su título a menudo no describe lo que realmente se decide.
  5. Texto completo y concreción: enlazar también el texto de las proposiciones no de ley y mociones, y revisar cada pregunta para añadir hasta cinco o seis puntos concretos de lo que se votaba.
  6. Una versión en una frase: un resumen breve de cada votación para quien quiera la idea principal de un vistazo.
  7. Mirar todo, no 41 votaciones: identificar lo votado en el Congreso en la legislatura, colocarlo por temas y ver hacia dónde empujó cada partido en cada tema, también por diputado/a, para poder explorar persona a persona.
  8. Menos preguntas, más terreno: que cada pregunta no sea una votación sino varias votaciones alineadas.
  9. Granularidad a demanda: si alguien responde «neutral» a una pregunta agregada, ofrecerle responder temas más concretos, y mostrar esa opción también antes de votar.
  10. Versiones en paralelo: al mejorar el test, mantener accesible el anterior con sus respuestas para revisarlo y compararlo; por defecto se muestra el nuevo. Es la regla para cada actualización futura.
  11. Cuatro años, no tres: integrar también el final de la XIV legislatura en las fichas de los diputados, con su propia muestra de control a ciegas.
  12. Las enmiendas también: clasificarlas descargando su texto del BOCG.

Ejemplos reales del prompt «Pregúntale a una IA»

Generados con el mismo código y los mismos datos que usa la herramienta:

Antes de responder: «Explícame qué se vota» (afirmación «El Estado debería intervenir más en el alquiler: limitar precios, proteger más al inquilino y regular el alquiler turístico y de temporada.»)
Explícame en términos sencillos, para alguien sin conocimientos de política, qué se votó en esta votación del Congreso de los Diputados de España y qué cambiaría en la práctica si se aprueba. No me digas qué votar ni cómo votó cada partido.
Distingue claramente los hechos comprobables de tus interpretaciones, cita fuentes oficiales cuando puedas y di si no estás seguro. Sé neutral.
Explica también sus ramificaciones: a quién afecta y a cuántas personas aproximadamente (con cifras oficiales y su año), qué cambia para cada colectivo y qué efectos de segundo orden podrían producirse, con los argumentos y la evidencia en ambos sentidos. Distingue lo que está medido de lo que son previsiones.

Tema planteado: «El Estado debería intervenir más en el alquiler: limitar precios, proteger más al inquilino y regular el alquiler turístico y de temporada.»
Contexto: Eje «Intervención en el mercado de la vivienda»: Más intervención pública frente a Más mercado.
Esta afirmación resume 51 votaciones del Congreso (XV legislatura); abajo van las 6 más recientes.

Votación 1:
- Qué se votó (título oficial): Aprobar la prórroga extraordinaria de los alquileres y el tope del 2 % a la subida de la renta hasta 2027. (Real Decreto-ley 8/2026, de 20 de marzo, de medidas en el alquiler en respuesta a las consecuencias económicas y sociales de la Guerra de Irán.)
- Fecha: 2026-04-28
- Datos oficiales de la votación: https://www.congreso.es/webpublica/opendata/votaciones/Leg15/Sesion175/20260428/Votacion003/VOT_20260428200330.json

Votación 2:
- Qué se votó (título oficial): Tramitar la ley que limita a personas físicas la compra de viviendas (Proposición de Ley de un grupo parlamentario, para la modificación de la Ley 12/2023, de 24 de mayo, por el derecho a la vivienda.)
- Fecha: 2026-09-15
- Datos oficiales de la votación: https://www.congreso.es/webpublica/opendata/votaciones/Leg15/Sesion197/20260915/Votacion002/VOT_20260915204523.json

Votación 3:
- Qué se votó (título oficial): Tramitar una ley que agiliza el urbanismo, deroga artículos de la ley de vivienda y limita la suspensión de desahucios. (Proposición de Ley de un grupo parlamentario, de medidas administrativas y procesales para la seguridad jurídica de la ordenación territorial y urbanística, el impulso del desarrollo urbano y la vivienda.)
- Fecha: 2026-04-21
- Datos oficiales de la votación: https://www.congreso.es/webpublica/opendata/votaciones/Leg15/Sesion173/20260421/Votacion001/VOT_20260421201008.json

Votación 4:
- Qué se votó (título oficial): Tramitar una reforma para que solo las personas físicas puedan comprar vivienda (Proposición de Ley de un grupo parlamentario para la modificación de la Ley 12/2023, de 24 de mayo, por el derecho a la vivienda.)
- Fecha: 2025-11-27
- Datos oficiales de la votación: https://www.congreso.es/webpublica/opendata/votaciones/Leg15/Sesion151/20251127/Votacion002/VOT_20251127124049.json

Votación 5:
- Qué se votó (título oficial): Tramitar impuestos contra la especulación: gravar la compra de terceras viviendas y quitar ventajas a las SOCIMI (Proposición de Ley de un grupo parlamentario, de medidas fiscales para combatir la especulación inmobiliaria.)
- Fecha: 2025-11-11
- Datos oficiales de la votación: https://www.congreso.es/webpublica/opendata/votaciones/Leg15/Sesion144/20251111/Votacion002/VOT_20251111210356.json

Votación 6:
- Qué se votó (título oficial): Tramitar una ley que obliga a las plataformas a verificar la licencia de los pisos turísticos (Proposición de Ley de un grupo parlamentario, sobre control y regulación de la publicidad y contratación de los pisos turísticos.)
- Fecha: 2025-10-07
- Datos oficiales de la votación: https://www.congreso.es/webpublica/opendata/votaciones/Leg15/Sesion135/20251007/Votacion002/VOT_20251007214330.json

A quién afecta (cifras oficiales):
  • El 16,7 % de los hogares vive de alquiler a precio de mercado y otro 3,5 % paga un alquiler por debajo del mercado; el 73,3 % vive en una vivienda en propiedad. (INE, Encuesta de Condiciones de Vida 2025 (tabla 9996), 2025: https://www.ine.es/jaxiT3/Tabla.htm?t=9996)
  • El alquiler de temporada rondaba el 13 % de la oferta de alquiler a mediados de 2024 (más del 40 % en Barcelona y del 30 % en San Sebastián), tras crecer un 55 % en un año, mientras los anuncios de alquiler habitual caían más de un 15 %. (Banco de España, Documento Ocasional 2432 (2024), pág. 29, con datos de portales inmobiliarios, mediados de 2024: https://www.bde.es/f/webbe/SES/Secciones/Publicaciones/PublicacionesSeriadas/DocumentosOcasionales/24/Fich/do2432.pdf)
  • Había 341.001 viviendas turísticas anunciadas en plataformas: el 1,28 % de todas las viviendas. En Canarias son el 4,4 % y en Baleares el 3,3 %, y en 60 municipios superan el 10 %. (INE, estadística experimental de viviendas turísticas (tablas 39363, 39365 y 39366), mayo de 2026: https://www.ine.es/experimental/viv_turistica/exp_viv_turistica_tablas.htm)
Después de responder: «¿Por qué votó así cada partido?» (Votación final de una ley, 2023-09-21)
Explícame en términos sencillos qué se votó en esta votación del Congreso de los Diputados de España y por qué cada partido votó como votó, según sus argumentos públicos (debate en el Pleno, notas de prensa, programa).
Distingue claramente los hechos comprobables de tus interpretaciones, cita fuentes oficiales cuando puedas y di si no estás seguro. Sé neutral.
Explica también sus ramificaciones: a quién afecta y a cuántas personas aproximadamente (con cifras oficiales y su año), qué cambia para cada colectivo y qué efectos de segundo orden podrían producirse, con los argumentos y la evidencia en ambos sentidos. Distingue lo que está medido de lo que son previsiones.

Votación:
- Qué se votó (título oficial): Proposición de reforma del Reglamento del Congreso de los Diputados.
- Tipo: Votación final de una ley
- Fecha: 2023-09-21
- Resultado: aprobada (180 sí, 170 no, 0 abst.)
- Voto de los partidos (mayoría de sus diputados): PSOE: a favor (Sí) (121 sí, 0 no, 0 abst.); PP: en contra (No) (1 sí, 136 no, 0 abst.); VOX: en contra (No) (0 sí, 33 no, 0 abst.); Sumar: a favor (Sí) (26 sí, 0 no, 0 abst.); Podemos: a favor (Sí) (5 sí, 0 no, 0 abst.); ERC: a favor (Sí) (7 sí, 0 no, 0 abst.); Junts: a favor (Sí) (7 sí, 0 no, 0 abst.); EH Bildu: a favor (Sí) (6 sí, 0 no, 0 abst.); PNV: a favor (Sí) (5 sí, 0 no, 0 abst.); BNG: a favor (Sí) (1 sí, 0 no, 0 abst.); Coalición Canaria: a favor (Sí) (1 sí, 0 no, 0 abst.); UPN: en contra (No) (0 sí, 1 no, 0 abst.)
- Datos oficiales de la votación: https://www.congreso.es/webpublica/opendata/votaciones/Leg15/Sesion003/20230921/Votacion004/VOT_20230921120100.json

Qué se votaba (resumen en lenguaje llano del texto oficial; puede tener errores):
  En pocas palabras: Permitir usar catalán, euskera y gallego en el Congreso, con traducción.
  • Reconoce a los diputados el derecho a usar en toda la actividad parlamentaria, incluidos los discursos y los escritos, cualquier lengua oficial en alguna comunidad autónoma. [Artículo único, apartados Uno y Tres (arts. 6.3 y 70.2)]
  • Obliga al Congreso a contar con servicios de traducción e interpretación de todas las lenguas oficiales en alguna comunidad autónoma. [Artículo único, apartado Dos (art. 60.1)]
  • Permite presentar escritos en el Registro en cualquier lengua oficial, con traducción al castellano opcional; durante una transición de hasta seis meses la traducción será obligatoria. [Artículo único, apartado Cuatro (art. 92.1); Disposición transitoria]
  • El Diario de Sesiones reproducirá las intervenciones en la lengua en que se pronunciaron y en castellano; las iniciativas se publicarán también en la lengua oficial usada. [Artículo único, apartados Cinco y Seis (arts. 96 y 97)]
  • Encarga a la Mesa que las iniciativas legislativas aprobadas definitivamente se publiquen como versión auténtica también en las lenguas oficiales en alguna comunidad autónoma. [Disposición adicional segunda]
  • Encarga revisar el texto del Reglamento del Congreso para adecuarlo al lenguaje inclusivo de género, en el plazo más breve posible. [Disposición adicional primera]
  (Texto tras su paso por la Comisión o aprobado por el Pleno)
  Texto oficial: https://www.congreso.es/public_oficiales/L15/CONG/BOCG/B/BOCG-15-B-17-4.PDF

A quién afecta (cifras oficiales):
  • El Congreso de los Diputados está formado por 350 diputados. (Ley Orgánica 5/1985 del Régimen Electoral General, art. 162.1 (BOE), texto consolidado vigente: https://www.boe.es/buscar/act.php?id=BOE-A-1985-11672)
  • A 1 de julio de 2026 vivían 20.066.901 personas (40,3 % de las 49.801.559 de España) en Cataluña, C. Valenciana, Galicia, País Vasco e Illes Balears, con lengua cooficial en todo su territorio (Navarra la tiene solo en parte). (INE, Estadística Continua de Población, tabla 59239 (todas las edades, total; suma propia de las cinco comunidades), 1 de julio de 2026 (provisional): https://www.ine.es/jaxiT3/Tabla.htm?t=59239)
  • En noviembre de 2024 el Congreso adjudicó cuatro contratos de traducción, interpretación, transcripción y subtitulado en directo de lenguas cooficiales; las ofertas elegidas suman 3.297.781,11 euros. (BOE núm. 8, 9-1-2025, anuncio BOE-B-2025-417 (formalización, expediente CON-2024/9900775.0), apartado 13 (suma de los cuatro contratos), adjudicados el 19 de noviembre de 2024: https://www.boe.es/boe/dias/2025/01/09/pdfs/BOE-B-2025-417.pdf)
Qué cambiaría para cada colectivo (del texto oficial):
  • Diputados y diputadas: Tienen derecho a usar en toda la actividad parlamentaria, también en discursos y escritos, cualquier lengua oficial en alguna comunidad autónoma. [Artículo único, apartados Uno y Tres (arts. 6.3 y 70.2)]
  • Servicios del Congreso: El Congreso debe contar con traducción e interpretación de todas esas lenguas, reproducir los discursos en la lengua original y en castellano en el Diario de Sesiones y publicar las iniciativas también en la lengua usada. [Artículo único, apartados Dos, Cinco y Seis (arts. 60.1, 96 y 97)]
  • Grupos y diputados que presentan escritos: Pueden presentar escritos en el Registro en cualquier lengua oficial; la traducción al castellano es opcional, y obligatoria durante una transición de hasta seis meses. [Artículo único, apartado Cuatro (art. 92.1); Disposición transitoria]
Lo que no se sabe: Proposición de reforma sin memoria oficial de impacto; no se cuantifica el coste de la traducción. El debate no aclara si la enmienda sobre versiones auténticas se incorporó.

Contenido según el texto oficial (BOCG, votación del 2023-09-21; encabezados literales):
  • Se añade un apartado nuevo 3 al artículo 6
  • Se modifica el apartado 1 del artículo 60
  • Se modifica el apartado 2 del artículo 70
  • Se modifica el apartado 1 del artículo 92
  • Se modifica el artículo 96
  Modifica 1 normas, entre ellas: Reglamento del Congreso de los Diputados de 10 de febrero de 1982
  Fuente: https://www.congreso.es/public_oficiales/L15/CONG/BOCG/B/BOCG-15-B-17-4.PDF

Fuentes

Oficiales

Del proyecto (todo público)

Limitaciones conocidas

  • Sin revisión humana independiente. Afirmaciones, sentido del voto y viñetas los ha revisado otra IA. Una IA revisando a otra reduce errores, pero comparte puntos ciegos.
  • «Ramificaciones» solo en un piloto y sin revisión humana. Cubren pocas votaciones de vivienda; la mayoría de sus efectos indirectos vienen del debate parlamentario, porque las proposiciones de ley no llevan evaluación oficial de impacto.
  • Qué votación va a cada tema lo decide una IA. La segunda lectura a ciegas coincide en el eje principal el 92 % de las veces; el resto son casos frontera. Cada votación enlaza a su texto para comprobarlo.
  • Enmiendas leídas con límites: las votadas en bloque («resto de las enmiendas») y las transaccionales se leen de forma aproximada, y muchas enmiendas del Senado quedan sin texto (153 votaciones de la XV sin texto suficiente, más 59 enmiendas sin clasificar porque no se localizó su texto o no enfrentaban a ningún partido).
  • Senado sin voto por senador: sus datos abiertos enlazan los ficheros de votación de la XV, pero el servidor responde 404/500 (docs/etl/sprints/VOTE-ATLAS-20261013/evidence/senado-votos-por-senador-probe-20261013.md). Por eso solo hay diputados.
  • Votar no es lo mismo que pensar. Un partido puede votar en contra de algo con lo que está de acuerdo por cómo está redactado, por táctica o por disciplina de bloque. La herramienta mide votos, no intenciones ni programas.
  • Toma en consideración ≠ apoyo total. Votar Sí a debatir una ley se interpreta como apoyo a su objetivo; es una simplificación.
  • La mayoría esconde divisiones internas (los recuentos por partido sí se muestran) y ignora la abstención como matiz: cuenta 0.
  • Partidos sin diputados en el Congreso XV no aparecen, y solo se usa el Congreso (no Senado, parlamentos autonómicos ni Parlamento Europeo).
  • Versiones del texto: a veces solo existe el texto inicial o se votó una enmienda transaccional que no se publicó; la herramienta lo avisa, pero el resumen puede no reflejar exactamente lo votado.
  • Temas por palabras clave: 91 votaciones quedan en «Otros» y alguna puede estar mal clasificada.
  • Ocultar al proponente es imperfecto: se quita del título con reglas de texto y algunos títulos aún dejan pistas (por ejemplo, nombres de grupos en títulos compuestos).
  • Selección de afirmaciones: qué temas y votaciones se eligieron es una decisión editorial (de una IA dirigida por una persona), con sesgos posibles aunque el equilibrio PSOE/PP se controle.

Cómo reproducirlo

Con el repositorio y una base SQLite con las votaciones del Congreso XV:

python3 scripts/ingestar_parlamentario_es.py ingest --db <db> --source congreso_votaciones --congreso-legs 15 --strict-network
python3 scripts/vote_atlas.py link-texts --db <db>
python3 scripts/vote_atlas.py units --db <db> --out-dir <lotes>   # lotes para clasificar (personas o IA)
python3 scripts/vote_atlas.py merge --units-dir <lotes> --classified-dir <clasificados>
python3 scripts/vote_atlas_amendments.py link --db <db> --legislature 15 --legislature 14:2022-10-01
python3 scripts/vote_atlas_amendments.py units --db <db> --legislature 15 --legislature 14:2022-10-01 --out-dir <lotes>
python3 scripts/export_vote_atlas.py --db <db> --earlier 14:2022-10-01 --out-dir ui/site/public/citizen/data
python3 scripts/export_voting_aid_snapshot.py --db <db> --out ui/site/public/citizen/data/voting_aid_generales_v1.json
python3 scripts/export_voting_aid_pool.py --db <db> --out ui/site/public/citizen/data/voting_aid_pool_v1.json
python3 scripts/voting_aid_motion_texts.py link --db <db>
python3 scripts/export_voting_aid_highlights.py
python3 scripts/export_voting_aid_vote_bullets.py
node tests/test_citizen_voting_aid_model.mjs
python3 -m unittest tests.test_export_voting_aid_snapshot tests.test_export_voting_aid_pool tests.test_export_voting_aid_highlights tests.test_export_voting_aid_vote_bullets

Los pasos de IA (redactar y revisar textos) no son deterministas: con los mismos prompts saldrán frases distintas. Por eso su resultado se guarda versionado en las semillas, con el documento y su SHA-256, y lo que se publica es siempre ese fichero revisable.

Cómo contribuir

Lo que más ayuda ahora mismo, de más a menos urgente:

  1. Revisar afirmaciones: ¿la frase es neutral y de una sola idea? ¿votar agree_vote significa de verdad estar de acuerdo con ella? Compruébalo con el texto oficial enlazado.
  2. Revisar viñetas, empezando por las que tienen avisos (review.issues): ¿lo que dicen está en el artículo o punto indicado?
  3. Proponer afirmaciones sobre temas que falten, con la votación nominal que las respalda.
  4. Mejorar el método: clasificación por temas, tratamiento de abstenciones, ocultación del proponente…

Abre una incidencia o una propuesta de cambio en GitHub indicando el identificador de la afirmación (p. ej. vivienda-alquiler-temporada) o de la votación, qué cambiarías y la fuente. Una corrección revisada por una persona pasará a marcarse como reviewed.

Volver a «¿Con quién coincides?»