Methodology

Vipima ("measuring instruments" in Swahili) monitors political advertising using Meta's Ad Library API — the public transparency archive covering Facebook and Instagram. This page describes how the data is collected and classified, and what it can and cannot support.

Collection

We pull the complete political-ad archive for each monitored country and re-pull daily. Every observation is stored append-only: one record per ad per pull. This matters because the archive itself is unstable — ads and entire advertiser pages can disappear between pulls. Append-only snapshots let us report what was visible at each point in time, and preserve records the archive no longer shows.

Classification

Three model-assisted layers run over the raw archive, each validated against a hand-labeled evaluation set before deployment, with accuracy measured per task:

  • Triage(is this ad domestic politics, foreign spillover, or miscategorized commercial content?) — 98% measured accuracy. Roughly 87% of ads "reaching" Zambia are not domestic politics; raw Ad Library counts overstate domestic activity severalfold.
  • Actor attribution (which registered political actor is behind this page?) — 99% measured accuracy against a curated registry, with abstention when evidence is insufficient. Supporter pages praising a candidate are not attributed to that candidate.
  • Message analysis (topics, tone, call to action, language) — 86% measured accuracy across a 13-topic taxonomy.

Classification runs at the level of creative families (identical text from the same page), and family keys are page-scoped so that Meta's placeholder texts can never propagate a classification across unrelated advertisers.

Known limitations

  • Meta withholds creative content for ads that ran without required disclaimers or were removed — in Zambia, the large majority of domestic political ads. Message analysis covers only the visible slice, which skews toward compliant, established advertisers.
  • Spend and impressions are reported by Meta as ranges; we use midpoints and mark all such figures as estimates.
  • The archive covers Meta platforms only — not TikTok, YouTube, radio, print, or organic content.
  • Coordination detection can only text-match ads whose creative survives; a null result is bounded by that coverage.

Contact

Questions, corrections, or data requests: reach out via GitHub (jknap/ballotscope) — or the contact details published alongside our reports.