What this pack is
2 contests, 282 people, 109 poll response rows, 12 result rows and 0 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
- Parliament overview states 276 seats, but the complete seven-page directory exposed only 270 unique MP profile IDs on 2026-09-03. No names were backfilled from nonofficial sources.
- 12 rows: the EC presidential national aggregate at 275 of 276 constituencies. Constituency-level parliamentary results exist only as non-OCRable scanned Form 1D declaration sheets, which were not transcribed.
- vote_share in this pack is a FRACTION of 1 (largest observed 0.564197), 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
# Ghana (gha) — sources and probe log As of 2026-09-03. No Wikipedia. Probes were rate-limited to at least 1 second per host. ## Election calendar - Electoral Commission: https://ec.gov.gh/ — HTTP 200. - Current legal default is 2028-12-07. The discussed November shift is a proposal, not a gazetted amendment, so `date_confidence=constitutional_due`; no November date is filed. ## 2024 results - EC general-results page: https://ec.gov.gh/2024-election-results/ — HTTP 200. It links regional presidential/parliamentary summary images. - EC presidential update: https://ec.gov.gh/2024-presidential-election-results/ — HTTP 200. The result table is an image, not HTML text. - Official image: https://ec.gov.gh/wp-content/uploads/2025/01/2024-Presidential-Election-Results-scaled.jpg — HTTP 200. Dated 2025-01-10; covers 275 of 276 constituencies, with Ablekuma North outstanding; states the 2024-12-07 outcome remains unchanged. Candidate rows sum exactly to the image's 11,683,483 valid votes. - `results.csv` has 12 national presidential candidate rows. It does not claim full 276-constituency coverage and does not turn regional result images into invented parliamentary vote totals. ## Roster - Parliament home: https://www.parliament.gh/ — HTTP 200. - MPs: https://www.parliament.gh/members and `?page=2` through `?page=7` — all HTTP 200. Parsed 270 unique official MP IDs with name, party, constituency, profile URL and image URL. The overview says 276 seats, but the directory exposed only 270 profiles; six names were not backfilled. ## Money and polls - No machine-readable regulator transaction file with stable MP/candidate IDs was located. `money-edges.csv` is header-only. - No qualifying official/licensed 2028 national topline table was located. `polls.csv` is header-only.
HANDOFF.md
# HANDOFF — Ghana elections pack (gha)
Built 2026-09-03 (America/Chicago). Schema: `/workspace/elections-ingest/SCHEMA.md`. No git. No Wikipedia.
## Required files and rows
| File | Data rows | Path |
|---|---:|---|
| elections.csv | 2 | `/workspace/elections-ingest/gha/elections.csv` |
| people.csv | 282 | `/workspace/elections-ingest/gha/people.csv` |
| money-edges.csv | 0 | `/workspace/elections-ingest/gha/money-edges.csv` |
| polls.csv | 0 | `/workspace/elections-ingest/gha/polls.csv` |
| results.csv | 12 | `/workspace/elections-ingest/gha/results.csv` |
| SOURCES.md | — | `/workspace/elections-ingest/gha/SOURCES.md` |
| STATS.json | — | `/workspace/elections-ingest/gha/STATS.json` |
| HANDOFF.md | — | `/workspace/elections-ingest/gha/HANDOFF.md` |
## Country card
- exact election date: `2028-12-07`
- `date_confidence=constitutional_due`
- `cycle_status=distant`
- The 2028-12-07 date is the current legal default. A November shift remains a proposal and is not filed as law. Parliament directory exposed 270 profiles against a 276-seat overview; no backfill.
## Intentionally empty
money (no machine transaction source); polls (no qualifying 2028 table). Header-only CSVs are intentional, not missing work.
## Probe failures / limits
ec.gov.gh and parliament.gh 200; all seven MP pages 200; EC result image 200.
See `SOURCES.md` for URL-level detail and `STATS.json` for machine-readable counts.
---
## 2026-09-03 (America/Chicago) — polls backfill + parliamentary-results attempt
**`polls.csv`: 0 -> 109 option rows, 8 distinct surveys, 3 pollsters.** Header unchanged. Every
`election_id` written resolves against `elections.csv` (`gha-general-2028-12-07`, `gha-general-2024-12-07`);
no new id shape was invented.
| poll_id | pollster | rows | field dates | n | moe | source |
|---|---|---:|---|---:|---|---|
| `gia-2026-06` | Global InfoAnalytics | 30 | 2026-05-30 – 2026-06-12 | 8784 | ±2.5% | pollster's own report PDF |
| `gia-2026-07-gov` | Global InfoAnalytics | 6 | *not published* | — | — | MyJoyOnline, 2026-07-27 |
| `gia-2026-07-elec` | Global InfoAnalytics | 6 | *not published* | — | — | Adomonline, 2026-08-03 |
| `gia-2026-03` | Global InfoAnalytics | 7 | *not published* | — | — | Citinewsroom, 2026-03-26 |
| `gia-2026-03-elec` | Global InfoAnalytics | 4 | *not published* | — | — | MyJoyOnline |
| `gia-2025-12` | Global InfoAnalytics | 8 | *not published* | — | — | Starr FM, 2026-02-02 |
| `apl-2026-08` | Africa Policy Lens | 35 | 2026-07-27 – 2026-08-07 | 16963 | ±1% | APL Election Outlook Report No. 1 (PDF) |
| `afro-r10-gha` | Afrobarometer / CDD-Ghana | 13 | 2024-08-05 – 2024-08-22 | 2400 | ±2% | Afrobarometer R10 summary of results (PDF) |
- Only the June 2026 wave is on Global InfoAnalytics' own site
(`https://globalinfoanalytics.com/insights.php?category=poll` lists June 2026 as its most recent report; there is no
March 2026 or July 2026 report there). The other GIA waves are therefore cited to the outlet that printed the
topline, and their `field_start`/`field_end`/`sample_n`/`moe` are **blank because the publisher did not print them** —
nothing was estimated.
- Afrobarometer rows are Q98 ("If national elections were held tomorrow...") weighted national-total column, fielded by
CDD-Ghana during the 2024 cycle, so they hang off `gha-general-2024-12-07`.
- Approval / country-direction / standard-of-living rows are governance tracking measures, not ballot questions; each
row says so in `notes`.
- No Wikipedia URL is used anywhere in the file.
**`results.csv`: unchanged at 12 rows.** Ghana constituency-level 2024 **parliamentary** returns were located but are
**not machine-parseable**. Exact endpoints tried:
| URL | HTTP | What it returned |
|---|---:|---|
| `https://ec.gov.gh/2024-election-results/` | 200 | Nav hub only; links out to per-region pages |
| `https://ec.gov.gh/constituency-summary-sheet/` | 200 | "Presidential Results Summary Sheets by Constituencies" — 2020 |
| `https://ec.gov.gh/results-summary-sheets/` | 200 | "Presidential Results Summary Sheets by Regions" — 2020 |
| `https://ec.gov.gh/ahafo-region/` | 200 | **Has a "Parliamentary Summary Results By Constituencies" block**, one PDF per constituency. 15 sibling region pages exist (`/ashanti-region/`, `/bono-region/`, `/bono-east-region/`, `/central-region/`, `/eastern-region/`, `/greater-accra-region/`, `/northern-region/`, `/north-east-region/`, `/oti-region/`, `/savannah-region/`, `/upper-east-region/`, `/upper-west-region/`, `/volta-region/`, `/western-region/`, `/western-north-region/`) |
| `https://ec.gov.gh/wp-content/uploads/2025/01/H0201_ASUNAFO-NORTH.pdf` | 200 | 1-page A3 scan, **no text layer** (`pdftotext` -> 1 byte) |
| `https://ec.gov.gh/wp-content/uploads/2025/01/H0101_ASUNAFO-SOUTH.pdf` | 200 | same — no text layer |
| `https://ec.gov.gh/wp-content/uploads/2025/01/H0601_TANO-NORTH.pdf` | 200 | same — no text layer |
| `https://ec.gov.gh/2024-parliamentary-election-results/` | 404 | — |
| `https://ec.gov.gh/2024-parliamentary-results/` | 404 | — |
| `https://ec.gov.gh/election-results/` | 404 | — |
| `https://ec.gov.gh/wp-json/wp/v2/media?search=parliamentary` | 403 | WP REST API blocked |
| `https://ec.gov.gh/wp-json/wp/v2/pages?search=parliamentary` | 403 | WP REST API blocked |
| `https://results.ec.gov.gh/` | curl 000 | DNS/connect failure — no such host |
| `https://data.gov.gh/dataset?q=election` | curl 000 | connect failure |
The parliamentary PDFs are **hand-filled "FORM ONE D" declaration sheets** (Public Elections Regulations 2020, C.I. 127,
reg. 43) signed by the returning officer. Rendered at 300 dpi and OCR'd with tesseract, candidate names came back as
`"Eyans epxu"` / `"LENS ers Esemie"` and the vote figures as `"25101"` vs `"ZO1LO1"` on the same line — i.e. the digits
are not recoverable at usable confidence. Transcribing 276 of these would fabricate vote counts, so **no constituency
rows were written** and the 12 honestly-labelled national-aggregate presidential rows stand as-is. A news outlet's
constituency tally was deliberately **not** substituted.
If this layer is wanted later, the only credible routes are (a) manual/assisted transcription of the 276 official PDFs
with a per-sheet checksum against the printed "TOTAL VOTES CAST" box, or (b) the already-staged CLEA file per SCHEMA.md.
Raw artefacts: `_raw/ec_parl/` (sample PDFs + OCR), `_raw/ec_ahafo.html`, `_raw/gia_june2026.pdf`,
`_raw/apl_report_no1.pdf`, `_raw/afro_gha_r10_summary.pdf`.
Licences on the rows
- Official Parliament of Ghana public roster; reuse terms not stated270
- © Global InfoAnalytics; published topline; reuse terms not stated61
- © Africa Policy Lens; published report table; reuse terms not stated35
- Official EC Ghana public release; reuse terms not stated24
- © Afrobarometer 2025; summary of results published by Afrobarometer with CDD-Ghana; reuse terms not stated13