What this pack is
3 contests, 628 people, 60 poll response rows, 5,598 result rows and 3,392 money edges, built 2026-09-03.
The cycle phase shown on every contest is computed from the election date and how well that date is known. The corpus carries its own status column; it disagrees with the derived phase on 20 of the 61 contests across all twenty-two countries, so it is carried through but never read.
Money rows and result rows are held off the site at their full grain: the staged corpus is 156 MB. What is published here is the aggregate computed once at build time, and every aggregate states the number of rows it stands for.
Everything known to be wrong or limited
licence · grain · method
- INE official Cómputos 2024 database (100% actas at final cut)
- POPULATED — INE SIF federal 2023-2024 campaign income-category aggregates; MXN as filed; not itemized donors
- POPULATED — published poll toplines
- vote_share in this pack is a FRACTION of 1 (largest observed 0.805334), not a percentage. India and Nigeria file percentages; the rest file fractions.
The pack's own record
every URL fetched, every inclusion and exclusion
SOURCES.md
# Mexico (mex) — Cartevoir Elections pack Built **2026-09-03** (as_of). Schema: `/workspace/elections-ingest/SCHEMA.md`. No Wikipedia used as `source_url` anywhere in this pack. All rates limited to 1 req/s per host. | file | rows | |---|---| | `elections.csv` | 3 | | `people.csv` | 628 | | `money-edges.csv` | 3392 | | `polls.csv` | 0 | | `results.csv` | 5598 | ## Primary sources ### Election calendar - **Instituto Nacional Electoral (INE)** — https://www.ine.mx/ (electoral_body_url) - **INE Central Electoral** — https://centralelectoral.ine.mx/ (calendar announcements for the 2026–2027 federal process) ### Roster (people.csv) - **Cámara de Diputados — SITL (Sistema de Información Legislativa), LXVI Legislatura** — https://sitl.diputados.gob.mx/LXVI_leg/listado_diputados_gpnp.php?tipot=TOTAL plus one `curricula.php?dipt=<id>` profile per member. `person_id` = `sitl-mx-<dipt>` (the official SITL `dipt` id). → **500** diputados, all with official photo + official email. - **Senado de la República, LXVI Legislatura** — https://www.senado.gob.mx/66/senadores/por_grupo_parlamentario `person_id` = `senado-mx-<data_id-senador>` (official Senate id). → **128** senadores. ### Money (money-edges.csv) — INE fiscalización / SIF - **Confirmed live URL** (re-found by probing; the previously-tried path is *not* used): `https://fiscalizacion.ine.mx/documents/82565/1268544/PREFO_23-24_CAM_YxR_240624.csv/51716cc2-c9d4-4e7c-96ec-c6d84751c6d9` INE Unidad Técnica de Fiscalización, **Proceso Electoral Federal Ordinario 2023–2024, CAMPAÑA, "Ingresos por Rubro" (YxR)** — candidate-account income broken out by income category. - Companion files fetched from the same portal and available in `mex/raw/`: `PREFO_23-24_CAM_OYG_240624.csv` (totals: operaciones / ingresos / gastos per accounting id) and `PREFO_23-24_CAM_GxR_240624.csv` (gastos por rubro). ### Results (results.csv) - **INE Cómputos Distritales 2024** — https://computos2024.ine.mx/ Official bulk database (pipe-delimited, `latin-1`), presidential + diputaciones + senadurías. Presidential file = 100% of 170,766 expected actas; database cut **2024-06-08 20:30 UTC-6**.
HANDOFF.md
# Mexico (mex) — HANDOFF
## Settled next-election call
| field | value |
|---|---|
| next national contest | **2027 federal midterms — 2027-06-06** |
| `date_confidence` | **`announced_media`** |
| `cycle_status` | **`distant`** *(filed as instructed — see conflict below)* |
| `election_id` | `mex-dip-2027` |
Full 500-seat Cámara de Diputados (300 MR + 200 RP). Mexican federal elections fall on the **first
Sunday of June**, which in 2027 is 6 June.
`date_confidence=announced_media` as instructed. Honest caveat: this pack **did not recover a stable
official INE calendar PDF/resolution URL** for the 2026–2027 process. Do not upgrade to
`confirmed_official` until that INE acuerdo is cited.
## ⚠️ `cycle_status` conflicts with SCHEMA.md — one-field decision needed
- **Filed value: `distant`**, exactly as the task brief specified.
- **SCHEMA.md would say `active`**: 2027-06-06 is **276 days** after 2026-09-03, and the schema
defines `active` = 91–365 days, `distant` = >365 days. 276 falls in the `active` band.
I followed the explicit instruction rather than silently overriding it, but this is the one field in
the Mexico pack I would expect to be flipped. It is recorded in `elections.csv.notes`, in
`STATS.json.cycle_status_conflict`, and here. Changing it is a **single-cell edit** on `mex-dip-2027`.
## money-edges.csv is POPULATED — 3,392 rows, MXN as filed
The 404 in the earlier attempt was a dead path; **the real portal was re-found by probing** and is
cited in full in SOURCES.md. Nothing was invented.
**What the rows are.** INE UTF **PREFO 2023–2024, CAMPAÑA, "Ingresos por Rubro"**: for each of
**1,309 candidate accounting records** (`ID DE CONTABILIDAD`), the campaign's income split by
**income category**. One CSV cell → one edge. Zero/blank cells dropped.
- `committee_name` = `NOMBRE COMPLETO` (the candidate's SIF account name)
- `connected_org` = the **income rubro** (the category column header)
- `edge_type` = `donation`
- `amount` = MXN **exactly as filed**, no conversion, no rounding beyond the source's 2 decimals
- `as_filed_note` carries `ID DE CONTABILIDAD`, `CARGO`, `ESTADO ELECCION`, `SUJETO OBLIGADO`,
`SIGLAS` and the category name verbatim
**Two limits, stated plainly:**
1. These are **category aggregates, not itemized donors**. There is no individual donor name or
date. Do not render these as "who gave to whom".
2. **`person_id` is deliberately blank on all 3,392 rows.** SIF accounting ids do not join to SITL /
Senate roster ids, and SCHEMA.md forbids name fuzzy-matching between money and roster
("Match people by official id, never by name fuzzy-match"). Leaving it null is the schema-correct
choice, not an oversight.
3. Scope is the **2024** cycle (`cycle=2023-2024`), attached to `mex-cong-2024`. No 2027 finance
exists yet.
## polls.csv is EMPTY — 0 rows
No published 2027-midterm topline was captured from a first-party pollster publication. Rather than
cite a news aggregation or a Wikipedia poll table (explicitly barred), the file is header-only.
Mexican 2027 legislative polling is thin this far out; presidential-approval tracking exists but is
**not** a 2027 vote-intention topline and was not filed as one.
## results.csv notes — 5,598 rows, official and verified
INE Cómputos Distritales 2024 bulk database, three contests:
- **Presidential** (`mex-pres-2024`) — 32 entidades. **Verified**: Sheinbaum **35,924,519 (59.76%)**,
Gálvez 16,502,697 (27.45%), Máynez 6,204,710 (10.32%) on 60,115,184 total — matches INE's published
national figures.
- **Diputaciones** (`mex-cong-2024`) — 300 distritos federales, 171,643 actas.
- **Senadurías** (`mex-cong-2024`) — 32 entidades, 171,794 actas.
Grain: one row per **candidate (or coalition-party bundle) per constituency**.
- Coalition votes: where a candidate ran on several parties, per-party columns are **summed into one
candidate row** and `party` shows the bundle joined with `+` (e.g. `PVEM+PT+MORENA`).
- `[VOTOS NULOS]` / `[CANDIDATO/A NO REGISTRADO/A]` are kept as bracketed `party` labels with blank
`candidate`, so real-candidate shares sum to 1.0 within a constituency.
- `person_id` blank throughout — the computos database carries no roster id.
## Data-quality fixes applied
- **Mojibake fixed.** SITL declares `ISO-8859-1` but serves UTF-8; names arrived as
`Abreu Artiñano RocÃo Adriana`. Re-encoded `latin-1` → decoded `utf-8`, plus HTML-entity
unescaping (`Representación proporcional`). Verified: `Abreu Artiñano Rocío Adriana`.
- **Metadata artifact dropped.** A stray `FECHA_HORA` pseudo-candidate with 0 votes leaked from a
column-count mismatch in the senadurías file; junk metadata labels with 0 votes are now filtered.
- Senate party split verified: MORENA 67, PAN 21, PVEM 14, PRI 13, MC 6, PT 6, sin grupo 1 = 128.
## Gaps / next steps
- `people.csv` is **incumbents only** (628). Correct per SCHEMA.md: no 2027 candidate list exists.
`candidaturas.ine.mx` responds 200 but only carries **2024** candidacies; it was not filed as a
2027 candidate source.
- `bio_text` empty for all — SITL curricula are inconsistent free text; not paraphrased.
- The SIF `OYG` (totals) and `GxR` (spend-by-rubro) files are downloaded in `mex/raw/` but **not**
loaded. Loading `GxR` would add expenditure edges; it needs an `edge_type` that is not `donation`.
## Repair note — 2026-09-03
- Restored 44 staged Mexican option rows; all are congressional preference and remain attached to mex-dip-2027. Added published El Financiero presidential approval/problem toplines. mex-dip-2027 cycle_status is now active per SCHEMA.md; STATS.json conflict key removed.
Licences on the rows
- Instituto Nacional Electoral (INE) — official public data8,990
- Cámara de Diputados — official public roster500
- Senado de la República — official public roster128
- Topline as published; publisher copyright60