Mundx AnalyticsIndependent · Non-partisan
LIVE
SOURCE  INEC IReVUPDATED 
loading
MD

How we validate the data

Mundx Analytics does not count votes. It re-reads the EC8A forms INEC publishes on IReV and adds up only the ones that reconcile.

Forms counted in tally
Currently monitoring
Extraction model

01 Where the data comes from

We poll IReV on a fixed interval through election night. As each polling unit's EC8A is uploaded, we download the image, record its file size and a SHA-256 fingerprint, and read the vote figures using a large language model. We never originate a number — we only re-read what INEC has already made public.

02 What we read from each form

From every EC8A summary box we read registered voters, accredited voters, rejected ballots, and total valid votes. From the party rows we read each party's votes in figures and in words. Reading both lets us cross-check the two against each other on the same form.

03 The checks each form must pass

  • Vote-sum. Party votes should add to the declared total valid votes. A mismatch (sum_mismatch) is flagged on the form, but the party votes are still counted — a one-vote arithmetic slip shouldn't erase a whole polling unit.
  • Figures vs words. Each party's numeric column must equal the written-out words (figures_words_mismatch). Catches model misreads and altered forms alike.
  • Accreditation. Valid + rejected should equal accredited voters. A large gap (accredited_mismatch) is flagged as ballots unaccounted for, but the votes still count.
  • Over-voting. Valid votes cannot exceed accredited voters. Over-voting voids a unit under the Electoral Act — flagged and excluded from the totals.
  • Ceiling. Accredited cannot exceed registered, and an area's votes cannot exceed its collected PVCs.
  • Document. We exclude forms that are missing, the wrong type, too small to be genuine, or unreadable (extraction_failed).
  • Replacement. If INEC swaps a form after upload, its SHA-256 changes — we re-read it and flag loudly if the leader changed.

04 Counted vs excluded

We count the party votes from every readable EC8A. A form is excluded from the totals only when it is genuinely unusable — unreadable, the wrong document, or an over-vote that voids the unit under the Electoral Act. Reconciliation flags (vote-sum, accreditation gap) are shown on each form but do not remove its votes. Forms render green when clean, amber when counted-but-flagged, and coral when excluded or still awaiting upload. This is deliberately close to INEC's own collation, which counts every valid unit — it keeps the provisional total within a few points of the final figure rather than under-counting the leader.

05 Accuracy and limits

We back-tested this against two fully-declared LGAs — Nnewi North and Orumba North (Anambra, 2025) — and our provisional party totals landed at roughly 95–99% of the official figures, with the winner always clearly identified. Expect a working margin of about ±2–3% per party at full coverage. Registered-voter and accredited fields are read less reliably and are shown only as context. Machine reading can err, which is exactly why every figure links back to its source form, and we never declare a winner — only INEC does that.

06 Verify it yourself on IReV

We can't deep-link into IReV, but anyone can confirm a figure: go to inecelectionresults.ng, choose the election, pick the State → LGA → Ward → Polling Unit shown here, open the uploaded EC8A, and compare it to our extracted numbers. If they differ, report it to us with the PU code.

Open INEC IReV ↗