{
  "version": "2026-02-14",
  "title": "Ideal Sources Inventory (Says vs Does)",
  "purpose": "Ambitious, programmatically-accessible sources to build an auditable picture of what each politician says (declared) vs what they do (revealed), across scopes (ES + UE + subnational). This inventory is not a promise of implementation; it is a north-star backlog.",
  "quality_scale_0_5": {
    "5": "Primary registry with legal effect (boletin/registro obligatorio): truth for 'what happened officially'.",
    "4": "Official structured open data (exportable datasets with stable metadata).",
    "3": "Official communication / agenda / RSS / references (truth for 'they said/announced/published this'), not legal effect.",
    "2": "Reliable re-user (NGO/academia) derived from 4-5; validate against primaries for critical claims.",
    "1": "Signal (media/social/rumors): good for discovery and narrative, not evidence of action.",
    "0": "No traceability."
  },
  "data_model_north_star": {
    "scope": "institution_id + admin_level_id + territory_id + legislature + date_range",
    "topic_sets": "Curated high-stakes topics per scope (with stake scoring + rationale).",
    "topics": "Stable topic ids (canonical_key) + labels + optional hierarchy/aliases.",
    "topic_evidence": "Atomic evidence items tagged to topics: said vs did, with stance/polarity/weight/confidence and raw provenance.",
    "topic_positions": "Deterministic aggregations per person+scope+topic+window, always drill-down to evidence."
  },
  "ideal_data_requirements": {
    "per_politician_per_scope": [
      {
        "id": "identity",
        "label": "Identity and stable ids",
        "fields": [
          "person_id (internal)",
          "full_name (canonical) + name variants",
          "external ids (where available): wikidata_qid, official chamber ids, gov ids",
          "source-level ids that allow joins (member id, expediente ids, etc)"
        ]
      },
      {
        "id": "mandates",
        "label": "Mandates / roles / scope membership",
        "fields": [
          "institution + admin_level + territory",
          "role_title + role_id (normalized)",
          "party / group (with alias handling)",
          "start_date / end_date / is_active",
          "committees / appointments when available"
        ]
      },
      {
        "id": "positions_by_topic",
        "label": "Positions for each high-stakes topic (says vs does)",
        "fields": [
          "stance_says + evidence_count_says + confidence_says",
          "stance_does + evidence_count_does + confidence_does",
          "divergence_score + divergence_explanation",
          "as_of_date + computed_method + computed_version"
        ]
      }
    ],
    "per_topic_set": [
      "topic_set_id + name + description",
      "scope anchors (institution/admin_level/territory/legislature/date range)",
      "stakes methodology and rationale per topic",
      "high-stakes flags and rank/score"
    ],
    "per_evidence_item": [
      "evidence_kind: says|does (declared vs revealed)",
      "evidence_type (vote, speech, decree, budget, contract, subsidy, appointment, agenda, press release, social post, etc)",
      "evidence_date (event time) + publication time when applicable",
      "excerpt/snippet + optional quote boundaries",
      "stance/polarity/weight/confidence + methods used",
      "source_id + source_url + source_record_pk + raw_payload + fetched_at/hash (traceability)"
    ],
    "per_source": [
      "jurisdiction + scope coverage",
      "evidence coverage: says|does|both",
      "domains covered (votes, initiatives, speeches, laws, budgets, contracts, subsidies, integrity, lobbying, etc)",
      "access method (api/opendata/rss/html/pdf) + formats",
      "quality dimensions: provenance, verifiability, structure, timeliness, coverage, extraction quality, stability, reproducibility"
    ]
  },
  "sources": [
    {
      "id": "boe_aeboe",
      "name": "BOE (AEBOE) Datos Abiertos API",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["normativa", "nombramientos", "resoluciones", "convocatorias"],
      "access": ["api"],
      "formats": ["xml", "json"],
      "confidence": 5,
      "url": "https://www.boe.es/datosabiertos/api/api.php",
      "notes": "Fuente primaria con efectos. Base para validar señales comunicacionales (Moncloa, ministerios) cuando la medida se publica."
    },
    {
      "id": "boe_sumario",
      "name": "BOE: sumario diario (API)",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["sumario", "publicacion"],
      "access": ["api"],
      "formats": ["xml", "json"],
      "confidence": 5,
      "url": "https://www.boe.es/datosabiertos/api/api.php",
      "notes": "Ideal para deteccion diaria de nuevas normas/actos."
    },
    {
      "id": "borme_sumario",
      "name": "BORME: sumario (API BOE)",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["registro_mercantil", "sector_publico_empresarial"],
      "access": ["api"],
      "formats": ["xml", "json"],
      "confidence": 5,
      "url": "https://www.boe.es/datosabiertos/api/api.php",
      "notes": "Acciones en el perimetro publico-empresarial (nombramientos/actos mercantiles) cuando proceda."
    },
    {
      "id": "congreso_diputados_opendata",
      "name": "Congreso: Diputados (OpenData)",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["actores", "mandatos", "declaraciones"],
      "access": ["opendata"],
      "formats": ["xml", "json", "csv"],
      "confidence": 4,
      "url": "https://www.congreso.es/es/opendata/diputados",
      "notes": "Censo de actores y metadatos. Clave para resolver person_id en votos/acciones."
    },
    {
      "id": "congreso_votaciones_opendata",
      "name": "Congreso: Votaciones (OpenData)",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["votos", "votaciones", "roll_call"],
      "access": ["opendata"],
      "formats": ["xml", "json", "csv"],
      "confidence": 4,
      "url": "https://www.congreso.es/opendata/votaciones",
      "notes": "Evidencia de comportamiento legislativo. Ideal enlazar a expedientes/BOCG cuando exista."
    },
    {
      "id": "congreso_iniciativas_opendata",
      "name": "Congreso: Iniciativas (OpenData)",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["iniciativas", "expedientes", "tramitacion"],
      "access": ["opendata"],
      "formats": ["xml", "json", "csv"],
      "confidence": 4,
      "url": "https://www.congreso.es/es/opendata/iniciativas",
      "notes": "Contexto de acción: quién impulsa qué, en qué estado, y cómo se enlaza con votaciones."
    },
    {
      "id": "congreso_intervenciones_opendata",
      "name": "Congreso: Intervenciones (OpenData)",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "says",
      "domains": ["discursos", "intervenciones", "diario_sesiones"],
      "access": ["opendata"],
      "formats": ["xml", "json", "csv"],
      "confidence": 4,
      "url": "https://www.congreso.es/es/opendata/intervenciones",
      "notes": "Fuente institucional para 'lo que dijo' con trazabilidad a sesión/fecha."
    },
    {
      "id": "congreso_bocg",
      "name": "Congreso: BOCG/Documentos (publicaciones oficiales)",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["publicaciones", "expedientes", "texto_oficial"],
      "access": ["web", "scrape"],
      "formats": ["pdf", "html"],
      "confidence": 5,
      "url": "https://www.congreso.es/",
      "notes": "Publicación oficial asociada a expedientes. Útil para validar/extraer texto final y contexto."
    },
    {
      "id": "senado_opendata_catalogo",
      "name": "Senado: Datos abiertos (indice/catalogo)",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["opendata", "catalogo"],
      "access": ["web", "opendata"],
      "formats": ["xml", "csv", "html"],
      "confidence": 4,
      "url": "https://www.senado.es/web/relacionesciudadanos/datosabiertos/informaciodatosabiertos/index.html",
      "notes": "Punto de entrada a votaciones, iniciativas, publicaciones, agendas, presupuesto y contratación."
    },
    {
      "id": "senado_votaciones",
      "name": "Senado: Votaciones (OpenData XML/CSV)",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["votos", "votaciones", "roll_call"],
      "access": ["opendata"],
      "formats": ["xml", "csv"],
      "confidence": 4,
      "url": "https://www.senado.es/web/relacionesciudadanos/datosabiertos/catalogodatos/votaciones/index.html",
      "notes": "Complemento al Congreso. Linkable por legislatura/sesion/expediente cuando exista."
    },
    {
      "id": "senado_iniciativas",
      "name": "Senado: Iniciativas/expedientes (OpenData)",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["iniciativas", "expedientes"],
      "access": ["opendata"],
      "formats": ["xml", "csv"],
      "confidence": 4,
      "url": "https://www.senado.es/web/relacionesciudadanos/datosabiertos/",
      "notes": "Contexto de tramitación en Senado."
    },
    {
      "id": "senado_diarios_sesiones",
      "name": "Senado: Diario de Sesiones / Publicaciones oficiales",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "says",
      "domains": ["diario_sesiones", "publicaciones"],
      "access": ["opendata", "web"],
      "formats": ["pdf", "xml", "html"],
      "confidence": 4,
      "url": "https://www.senado.es/",
      "notes": "Para evidencia textual institucional (qué dijo), con sesión/fecha."
    },
    {
      "id": "moncloa_referencias",
      "name": "La Moncloa: Referencias del Consejo de Ministros",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "says",
      "domains": ["ejecutivo", "consejo_ministros", "acuerdos"],
      "access": ["web", "scrape"],
      "formats": ["html", "pdf"],
      "confidence": 3,
      "url": "https://www.lamoncloa.gob.es/consejodeministros/referencias/paginas/index.aspx",
      "notes": "Señal temprana. Regla de doble entrada: validar con BOE cuando aplique."
    },
    {
      "id": "moncloa_rss",
      "name": "La Moncloa: RSS",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "says",
      "domains": ["comunicacion", "alertas"],
      "access": ["rss"],
      "formats": ["rss", "xml"],
      "confidence": 3,
      "url": "https://www.lamoncloa.gob.es/paginas/varios/rss.aspx",
      "notes": "Alertas y descubrimiento de publicaciones institucionales."
    },
    {
      "id": "moncloa_transcripciones",
      "name": "La Moncloa: Transcripciones y comparecencias (ruedas de prensa)",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "says",
      "domains": ["discursos", "comparecencias", "comunicacion"],
      "access": ["web", "scrape"],
      "formats": ["html"],
      "confidence": 3,
      "url": "https://www.lamoncloa.gob.es/paginas/transcripciones.aspx",
      "notes": "Evidencia de 'lo que dijeron' miembros del Gobierno en comparecencias. Validar efectos con BOE/registro cuando aplique."
    },
    {
      "id": "moncloa_agenda_presidente",
      "name": "La Moncloa: Agenda del Presidente",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "says",
      "domains": ["agenda", "actividad_publica"],
      "access": ["web", "scrape"],
      "formats": ["html"],
      "confidence": 3,
      "url": "https://www.lamoncloa.gob.es/presidente/agenda/paginas/index.aspx",
      "notes": "Evidencia de actividad publicada, no prueba de decisión."
    },
    {
      "id": "transparencia_agendas",
      "name": "Portal de Transparencia: Agendas de altos cargos",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "says",
      "domains": ["agenda", "actividad_publica"],
      "access": ["web", "scrape"],
      "formats": ["html", "pdf"],
      "confidence": 3,
      "url": "https://transparencia.gob.es/publicidad-activa/por-materias/altos-cargos/agendas",
      "notes": "Indicador de actividad pública publicada."
    },
    {
      "id": "transparencia_declaraciones_bienes",
      "name": "Portal de Transparencia: Declaraciones de bienes y derechos patrimoniales",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["integridad", "conflictos_interes", "patrimonio"],
      "access": ["web", "scrape"],
      "formats": ["html", "pdf"],
      "confidence": 4,
      "url": "https://transparencia.gob.es/publicidad-activa/por-materias/altos-cargos/declaraciones-bienes-derechos",
      "notes": "Fuente oficial, formatos heterogéneos. Útil para integridad/alertas, con cautela."
    },
    {
      "id": "transparencia_normas_tramitacion",
      "name": "Portal de Transparencia: Normas en tramitación / participación pública",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "says",
      "domains": ["pre_normativa", "participacion_publica"],
      "access": ["web", "scrape"],
      "formats": ["html", "pdf"],
      "confidence": 3,
      "url": "https://transparencia.gob.es/publicidad-activa/por-materias/normativa-otras-disposiciones/normas-tramitacion",
      "notes": "Intención/estado, no aprobación final."
    },
    {
      "id": "transparencia_plan_anual_normativo",
      "name": "Portal de Transparencia: Plan Anual Normativo",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "says",
      "domains": ["pre_normativa", "planificacion_normativa"],
      "access": ["web", "scrape"],
      "formats": ["html", "pdf"],
      "confidence": 3,
      "url": "https://transparencia.gob.es/publicidad-activa/por-materias/normativa-otras-disposiciones/plan-anual",
      "notes": "Inventario de iniciativas previstas. Señal fuerte de intención (no garantía de aprobación)."
    },
    {
      "id": "transparencia_ejecucion_presupuestaria",
      "name": "Portal de Transparencia: Ejecución presupuestaria",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["presupuesto", "ejecucion", "dinero_publico"],
      "access": ["web", "scrape"],
      "formats": ["html", "csv", "xls", "pdf"],
      "confidence": 4,
      "url": "https://transparencia.gob.es/publicidad-activa/por-materias/informacion-economico-presupuestaria/ejecucion",
      "notes": "Ejecución (hechos con dinero) y series de seguimiento. Formatos varían por sección."
    },
    {
      "id": "transparencia_convenios_encomiendas",
      "name": "Portal de Transparencia: Convenios y encomiendas",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["convenios", "encomiendas", "dinero_publico"],
      "access": ["web", "scrape"],
      "formats": ["html", "pdf"],
      "confidence": 4,
      "url": "https://transparencia.gob.es/publicidad-activa/por-materias/tramites/convenios-encomiendas",
      "notes": "Acción administrativa cuasi-contractual. Útil para mapear redes y ejecución."
    },
    {
      "id": "bdns_api",
      "name": "BDNS/SNPSAP (Infosubvenciones): API",
      "jurisdiction": "ES",
      "scope": "multi",
      "evidence": "does",
      "domains": ["subvenciones", "ayudas", "dinero_publico"],
      "access": ["api"],
      "formats": ["json", "xml"],
      "confidence": 5,
      "url": "https://www.infosubvenciones.es/",
      "notes": "Registro oficial fuerte. Permite atribuir decisiones presupuestarias/ayudas a órganos/convocatorias."
    },
    {
      "id": "placsp_sindicacion",
      "name": "PLACSP: Sindicación/ATOM (CODICE)",
      "jurisdiction": "ES",
      "scope": "multi",
      "evidence": "does",
      "domains": ["contratacion", "licitaciones", "adjudicaciones", "dinero_publico"],
      "access": ["atom", "bulk", "web"],
      "formats": ["xml", "atom"],
      "confidence": 5,
      "url": "https://www.hacienda.gob.es/",
      "notes": "Registro oficial de publicación de contratación. Complementar con perfiles del contratante cuando existan."
    },
    {
      "id": "datos_gob_es_api",
      "name": "datos.gob.es: API / SPARQL (catálogo DCAT)",
      "jurisdiction": "ES",
      "scope": "multi",
      "evidence": "does",
      "domains": ["catalogo", "descubrimiento"],
      "access": ["api", "sparql"],
      "formats": ["json", "rdf"],
      "confidence": 4,
      "url": "https://datos.gob.es/es/accessible-apidata",
      "notes": "Radar para descubrir datasets por publicador y dominio (presupuesto, transparencia, etc.)."
    },
    {
      "id": "registro_entidades_locales",
      "name": "Registro de Entidades Locales (REL)",
      "jurisdiction": "ES",
      "scope": "territorial",
      "evidence": "does",
      "domains": ["territorio", "codigos"],
      "access": ["web", "scrape"],
      "formats": ["html", "csv"],
      "confidence": 4,
      "url": "https://registroentidadeslocales.mpt.es/",
      "notes": "Normalización territorial: códigos y perímetro municipal."
    },
    {
      "id": "ine_tempus",
      "name": "INE Tempus API (series + metadatos)",
      "jurisdiction": "ES",
      "scope": "territorial",
      "evidence": "does",
      "domains": ["estadistica", "contexto"],
      "access": ["api"],
      "formats": ["json"],
      "confidence": 4,
      "url": "https://servicios.ine.es/wstempus/js/es/",
      "notes": "Contexto para temas (desempleo, vivienda, demografía) y normalización auxiliar."
    },
    {
      "id": "ign_admin_boundaries",
      "name": "IGN: límites administrativos (municipios/provincias/CCAA)",
      "jurisdiction": "ES",
      "scope": "territorial",
      "evidence": "does",
      "domains": ["geografia", "territorio"],
      "access": ["bulk", "web"],
      "formats": ["shp", "gkg", "csv"],
      "confidence": 4,
      "url": "https://www.ign.es/",
      "notes": "Geocodificación y mapeo territorial."
    },
    {
      "id": "tribunal_cuentas",
      "name": "Tribunal de Cuentas: informes/auditorías",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["auditoria", "finanzas_publicas", "partidos"],
      "access": ["web", "scrape"],
      "formats": ["pdf", "html"],
      "confidence": 4,
      "url": "https://www.tcu.es/",
      "notes": "Evidencia de fiscalización (no siempre granular por político, pero clave para accountability)."
    },
    {
      "id": "ccaa_boletines",
      "name": "Boletines oficiales autonómicos (17 CCAA + Ceuta/Melilla)",
      "jurisdiction": "ES",
      "scope": "autonomico",
      "evidence": "does",
      "domains": ["normativa", "nombramientos", "subvenciones", "contratos"],
      "access": ["web", "scrape", "rss"],
      "formats": ["pdf", "html"],
      "confidence": 5,
      "url": "",
      "notes": "Fuente primaria con efectos en cada CCAA. Inventariar programáticamente por catálogo + patrones."
    },
    {
      "id": "parlamentos_autonomicos",
      "name": "Parlamentos autonómicos: votaciones/iniciativas/diarios",
      "jurisdiction": "ES",
      "scope": "autonomico",
      "evidence": "both",
      "domains": ["votos", "iniciativas", "intervenciones"],
      "access": ["api", "web", "scrape"],
      "formats": ["html", "json", "xml", "pdf"],
      "confidence": 4,
      "url": "",
      "notes": "Cobertura heterogénea. En muchos casos no hay voto nominal: modelar como no-nominal cuando aplique."
    },
    {
      "id": "ayuntamientos_plenos_actas",
      "name": "Ayuntamientos: actas de pleno, acuerdos y orden del día",
      "jurisdiction": "ES",
      "scope": "municipal",
      "evidence": "both",
      "domains": ["acuerdos", "presupuesto_local", "urbanismo", "contratacion_local"],
      "access": ["web", "scrape", "open_data"],
      "formats": ["pdf", "html"],
      "confidence": 4,
      "url": "",
      "notes": "Fuente de verdad municipal suele ser acta/acuerdo publicado. El voto nominal individual es irregular: registrar granularidad."
    },
    {
      "id": "ep_votes",
      "name": "Parlamento Europeo: resultados de votaciones (roll-call cuando exista)",
      "jurisdiction": "EU",
      "scope": "europeo",
      "evidence": "does",
      "domains": ["votos", "votaciones", "roll_call"],
      "access": ["web", "bulk"],
      "formats": ["xml", "pdf"],
      "confidence": 5,
      "url": "https://www.europarl.europa.eu/plenary/en/votes.html?tab=votes",
      "notes": "Fuente primaria para acciones de MEPs. Enlazar a dossier/OEIL/EUR-Lex."
    },
    {
      "id": "ep_open_data",
      "name": "Parlamento Europeo: Open Data Portal (datasets)",
      "jurisdiction": "EU",
      "scope": "europeo",
      "evidence": "both",
      "domains": ["actores", "agendas", "documentos", "plenario", "comisiones"],
      "access": ["dataset", "sparql", "bulk"],
      "formats": ["rdf", "json", "csv"],
      "confidence": 5,
      "url": "https://data.europarl.europa.eu/en/datasets",
      "notes": "Datasets oficiales amplios: useful para 'says' (verbatim) y 'does' (procedimiento)."
    },
    {
      "id": "oeil",
      "name": "OEIL (Legislative Observatory, EP)",
      "jurisdiction": "EU",
      "scope": "europeo",
      "evidence": "does",
      "domains": ["procedimiento", "expedientes", "dossiers"],
      "access": ["web", "scrape"],
      "formats": ["html"],
      "confidence": 4,
      "url": "https://oeil.europarl.europa.eu/",
      "notes": "Trazabilidad de expedientes. Complementar con EUR-Lex para texto legal final."
    },
    {
      "id": "eurlex_cellar",
      "name": "EUR-Lex / Cellar (Publications Office): SPARQL/REST",
      "jurisdiction": "EU",
      "scope": "europeo",
      "evidence": "does",
      "domains": ["legislacion", "documentos", "texto_vigente"],
      "access": ["sparql", "api"],
      "formats": ["rdf", "xml", "json"],
      "confidence": 5,
      "url": "https://eur-lex.europa.eu/",
      "notes": "Fuente primaria legal UE. Base para validar y citar textos vigentes."
    },
    {
      "id": "ted_api",
      "name": "TED API (EU procurement notices)",
      "jurisdiction": "EU",
      "scope": "europeo",
      "evidence": "does",
      "domains": ["contratacion", "notices", "dinero_publico"],
      "access": ["api"],
      "formats": ["json"],
      "confidence": 5,
      "url": "https://docs.ted.europa.eu/api/latest/index.html",
      "notes": "Contratación pública UE (notices)."
    },
    {
      "id": "eu_transparency_register",
      "name": "EU Transparency Register (lobby)",
      "jurisdiction": "EU",
      "scope": "europeo",
      "evidence": "does",
      "domains": ["lobby", "influencia"],
      "access": ["dataset", "web"],
      "formats": ["csv", "json", "html"],
      "confidence": 4,
      "url": "https://transparency-register.europa.eu/index_en",
      "notes": "Registro oficial de representantes de intereses. Cobertura depende de cumplimiento."
    },
    {
      "id": "eu_commission_meetings",
      "name": "European Commission: meetings with interest representatives (where available)",
      "jurisdiction": "EU",
      "scope": "europeo",
      "evidence": "does",
      "domains": ["agenda", "lobby", "influencia"],
      "access": ["dataset", "web"],
      "formats": ["csv", "json", "html"],
      "confidence": 4,
      "url": "https://commission.europa.eu/",
      "notes": "Meetings registers exist for some roles; useful to link influence context to topics."
    },
    {
      "id": "party_programmes_official",
      "name": "Partidos: programas electorales, comunicados y propuestas (sitios oficiales)",
      "jurisdiction": "ES",
      "scope": "multi",
      "evidence": "says",
      "domains": ["programas", "promesas", "posiciones_declaradas"],
      "access": ["web", "scrape", "rss"],
      "formats": ["pdf", "html"],
      "confidence": 3,
      "url": "",
      "notes": "Alta utilidad pero no estructurado; requiere extracción + revisión humana para contenido sensible."
    },
    {
      "id": "politician_social_profiles",
      "name": "Políticos: perfiles sociales oficiales (X/Twitter, Instagram, YouTube, etc.)",
      "jurisdiction": "multi",
      "scope": "multi",
      "evidence": "says",
      "domains": ["comunicacion", "posiciones_declaradas", "narrativa"],
      "access": ["api", "web", "scrape"],
      "formats": ["json", "html"],
      "confidence": 1,
      "url": "",
      "notes": "Señal. Útil para discovery y cambios de framing; no es evidencia de acción con efecto."
    },
    {
      "id": "wikidata_qs",
      "name": "Wikidata Query Service (SPARQL)",
      "jurisdiction": "multi",
      "scope": "multi",
      "evidence": "does",
      "domains": ["ids", "enriquecimiento", "quien_es_quien"],
      "access": ["sparql"],
      "formats": ["json"],
      "confidence": 2,
      "url": "https://query.wikidata.org/",
      "notes": "Enlaces/IDs y bio. Verificar hechos críticos con fuentes 4-5."
    },
    {
      "id": "civio_boe_alerts",
      "name": "Civio: 'El BOE nuestro de cada día' (re-uso)",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "both",
      "domains": ["alertas", "editorial"],
      "access": ["web"],
      "formats": ["html"],
      "confidence": 2,
      "url": "https://civio.es/el-boe-nuestro-de-cada-dia/",
      "notes": "Capa editorial/alertas. Validar contra BOE."
    },
    {
      "id": "integrity_watch_spain",
      "name": "Integrity Watch Spain (re-uso)",
      "jurisdiction": "ES",
      "scope": "nacional",
      "evidence": "does",
      "domains": ["integridad", "declaraciones"],
      "access": ["web"],
      "formats": ["html"],
      "confidence": 2,
      "url": "https://www.integritywatch.es/",
      "notes": "Derivado/visualización. Validar contra fuentes oficiales cuando se use como evidencia."
    },
    {
      "id": "gdelt",
      "name": "GDELT (media events graph)",
      "jurisdiction": "multi",
      "scope": "multi",
      "evidence": "says",
      "domains": ["narrativa", "cobertura_mediatica"],
      "access": ["api"],
      "formats": ["json"],
      "confidence": 1,
      "url": "https://www.gdeltproject.org/",
      "notes": "Termómetro mediático, no evidencia de acción."
    }
  ]
}
