// web scraping · OCR · machine learning

Digitizing Colombia's 2026 election scrutiny

An open pipeline that downloads, digitizes, and independently tallies the official E-14 vote-count forms published by the Registraduría Nacional.

View repo ↗ Python · Playwright · OCR · ML

The problem

Colombia's official vote counts start as hundreds of thousands of scanned, handwritten E-14 forms — one per polling table. They are public, but published as images behind a slow portal, which makes independent verification of the scrutiny practically impossible for citizens and researchers.

The goal: make the entire corpus machine-readable, so anyone can re-tally the results and compare them against the official numbers.

The pipeline

01 — COLLECT Parallel scraping

Playwright workers download form images across machines, with resumable logs so interrupted runs pick up where they left off.

02 — DIGITIZE OCR extraction

Each scanned form is segmented and its handwritten vote counts extracted into structured records.

03 — VALIDATE ML-based counting

A model flags low-confidence digits and inconsistent totals for human review instead of silently mis-counting.

04 — COMPARE Independent tally

Aggregated counts are compared against official results to surface discrepancies at the polling-table level.

In pictures

[ sample E-14 form scan ]
Fig 1 — A scanned E-14 form as published
[ results / discrepancy chart ]
Fig 2 — Independent tally vs. official counts
WHY IT MATTERS

Electoral transparency shouldn't require trusting a single aggregator. With the raw forms digitized, journalists, observers, and researchers can audit the count themselves — the same data-engineering discipline I apply to power-markets research, pointed at civic infrastructure.