8 — Methodology

This section describes the methodology of an Actual Vote analysis in full technical detail. It walks through the entire Comparison Analysis pipeline — the concrete operational work that turns submissions into findings — from start to finish, step by step. It is the longest section in the manual and the most technical. It is also the section most likely to be referenced by readers who want to evaluate whether AC’s work is methodologically rigorous enough to trust.

The structure is straightforward. Section 8.1 gives a high-level overview. Sections 8.2 through 8.10 walk through each of the nine steps. Section 8.11 describes what happens after the report is published. Each step subsection describes what the step does, who does it, what the typical operational reality looks like, and what the failure modes are.

Throughout this section the manual uses recurring examples: the NC 2024 Primary Election (the canonical worked example, since the report from that analysis is the most carefully published of AC’s outputs) and the 2024 General Election analyses (the operational example, since the rolling-update news page documents many specific incidents that illustrate the methodology in practice).


8.1 — Overview of the Comparison Analysis

A Comparison Analysis is the end-to-end process that takes poll tape recordings and produces findings in the form of an Actual Vote analysis report. It is a systematic comparison of poll tape values against officially reported results for a defined jurisdiction and election.

The pipeline consists of nine operational steps:

  1. Selecting a target jurisdiction and election. AC decides where and when to analyze.
  2. Recruitment and training. AC recruits and trains video-recording volunteers or paid workers.
  3. Recording poll tapes. Users record poll tapes in the field using the AV app.
  4. Submission and vetting. Recordings enter the system and are reviewed for quality, privacy, and usability.
  5. Transcription. Transcribable submissions have their vote totals extracted into structured data.
  6. Comparison logic development. AC builds the per-jurisdiction rules that map transcribed values to official results.
  7. Comparison execution. The transcribed values are matched against official values and discrepancies are flagged.
  8. Investigation. Each initial non-match is reviewed and triaged using a seven-check process.
  9. Writing and publishing the report. Findings are compiled and published.

The pipeline is run centrally by America Counts, with consistent methodology, by a small core team. This central model ensures consistency (methodology is applied the same way every time), quality control (errors are caught more reliably), replicability (all analyses use the same tools and formats), and accumulated expertise (the person doing the comparison logic for the next North Carolina analysis is the same person who did it for the previous one). The downside is that AC’s capacity is the bottleneck on how many analyses can be performed per election cycle.

What constitutes a “complete” analysis

An analysis is complete when all nine steps have been executed and the report has been published. In practice, completeness is a matter of degree. An analysis might cover all precincts in a county or only a subset. It might examine every contest on the ballot or only top-of-ticket races. It might resolve every discrepancy or leave some under investigation at publication time. The NC 2024 Primary — seven counties, 321,502 individual votes, zero true discrepancies — is the most complete analysis to date. Most analyses cover less ground.

A partial analysis still has value. Even a handful of matched poll tapes in a jurisdiction provides evidence that wasn’t there before.

How long it takes

The duration varies by the number of submissions, the complexity of the comparison logic, the cooperation of the elections office, the number of initial non-matches, and the availability of the analysis team. A moderate analysis — a few dozen transcribable submissions in a familiar jurisdiction with clean official results — can complete in a few days. A large or complex analysis can take weeks. The 2024 General Election multi-state effort produced findings over many weeks as a rolling analysis rather than a single point-in-time report.

The relationship between pipeline duration and certification date matters. AC tries to complete before certification so findings can contribute to correction of official results. When this is not possible, the analysis still produces value as a matter of public record.


8.2 — Step 1: Selecting a Target Jurisdiction and Election

What this step does

Before any recording happens, AC decides where to focus. Not every election in every jurisdiction can be analyzed — the organization’s capacity is finite. Targeting decisions determine where AC’s limited resources will have the greatest impact.

How AC chooses

Several factors inform the targeting decision.

Volunteer and worker availability. The most practical constraint. AC can only analyze jurisdictions where someone will record poll tapes. Existing volunteer networks, partnership organizations (like Scrutineers and State Voices), and paid worker deployments determine where recordings will come from. The 2024 General Election deployed paid workers in Georgia, Florida, and Pennsylvania alongside volunteer networks in North Carolina and other states.

Geographic coverage goals. AC aims for coverage across political geography — not just Democratic strongholds or Republican strongholds, but both. The non-partisan commitment requires that AV not be perceived as targeting one party’s territory. Rural counties deserve scrutiny alongside urban ones; Republican precincts alongside Democratic precincts.

Political salience. Close races and contested elections generate more public interest in verification and are more likely to attract volunteer energy. Swing states and competitive districts are natural priorities.

Historical patterns. Jurisdictions where prior analyses revealed issues (procedural or substantive) warrant repeat attention. Jurisdictions with known transparency problems — Wake County’s PDF obfuscation, jurisdictions that refuse to post poll tapes — are higher-priority targets.

Access feasibility. Some jurisdictions make access easy (strong posting requirements, cooperative SOEs, clean data formats). Others make it hard (no posting requirements, uncooperative offices, obfuscated data). The cost-benefit calculation weighs the difficulty of access against the value of the analysis.

Data science targeting. AC has explored pre-election methods for identifying the highest-priority jurisdictions using historical voting patterns, system vulnerabilities, competitive margins, and demographic factors. This data science work (discussed in Section 15.4) is in early stages but represents the direction AC wants to move: from opportunistic to systematic targeting.

Primary vs. general election considerations

Primary elections are lower-profile and lower-turnout, which makes them better environments for testing methodology and building relationships with SOEs. The NC 2024 Primary analysis was conducted in part as a proving ground for the methodology ahead of the General Election.

General elections are higher-stakes, higher-volume, and more operationally demanding. They produce more submissions, involve more jurisdictions, and have tighter certification timelines. AC’s operational planning for a general election begins months before election day.


8.3 — Step 2: Recruitment and Training

What this step does

Once target jurisdictions are selected, AC needs people on the ground to record poll tapes. This step recruits and trains the video-recording volunteers and paid workers who will do the field work.

Recruitment

Recruitment should begin months before election day, not days. The 2024 General Election debrief identified late recruitment as a recurring problem — close to election day, potential volunteers are already saturated with campaign requests and don’t want to take on additional commitments.

Sources of recruits include AC’s existing volunteer network, partner organizations (Scrutineers, State Voices Florida, Common Ground Georgia), civic organizations, student groups and youth vote advocacy groups, Craigslist postings (which produced functional paid workers in Georgia), and social media outreach.

For paid worker deployments, the pay structure matters. The 2024 Georgia deployment paid per poll tape recorded (7.50inFloridaandGeorgia,7.50 in Florida and Georgia, 6.00 in Pennsylvania, adjusted for the number of precincts per polling location). Most of the worker’s time is driving time, not recording time. The debrief identified that pay structure, clear instructions, and upfront communication about the realities of field work (missing tapes, locked locations, long drives) are essential for worker retention.

Training

Training materials include the app walkthrough, the practice poll tape (a downloadable PDF that users can practice recording before going into the field), and field expectations documentation covering what to expect at polling places, what to do when tapes aren’t posted, and safety practices.

Team leaders have additional responsibilities: assigning precincts, coordinating routes, managing the team during election night operations, and troubleshooting. The GA2024 debrief recommended a handbook for team leaders and a centralized tool for precinct assignment (the manual process of using Google Maps and RouteXL to assign 10+ locations per worker was time-consuming and error-prone).

A key lesson from 2024: training materials should be available as soon as recruitment begins, not released days before election day. Workers need time to practice, ask questions, and build confidence.

Timeline

The recruitment and training timeline for a typical general election analysis:

3–6 months before: Identify target jurisdictions, begin partnership conversations, start recruiting team leaders.

1–3 months before: Active recruitment of recorders, train team leaders, distribute practice poll tapes, conduct practice sessions.

1–2 weeks before: Final precinct assignments, route planning, confirmed worker roster, last-minute training.

Election week: Final preparations, real-time coordination, recording operations.


8.4 — Step 3: Recording Poll Tapes

What this step does

This is the field work: users go to polling places after polls close and video-record the poll tapes using the Actual Vote app (or, when the app fails, a phone’s native camera).

Technical guidance

Good recordings share several properties: clear focus on the poll tape, adequate lighting (flashlights are essential for election-night recording), slow and steady camera movement, sufficient pause time on each section for readable frames, and complete coverage of the tape from header to footer.

Common problems include glare from glass or plastic covers, recording from too far away for digits to be legible, crinkled or torn tapes that are hard to frame, wrong focus (camera autofocuses on the glass rather than the tape behind it), and low ink density that makes numbers faint.

When multiple tabulators are present at a polling location (common — most locations have at least two machines, and vote centers may have many), each produces its own poll tape. Users should record all available tapes, not just one.

Recording metadata

The AV app captures GPS coordinates and timestamp automatically. Users are asked to enter a precinct identifier, though this field is often left blank or filled incorrectly. The metadata is important for associating the recording with the correct comparison grain downstream — GPS coordinates are used to confirm which polling place the user was at, and the timestamp establishes the point-in-time record.

What to do when tapes aren’t posted

Even in jurisdictions with posting requirements, compliance is uneven. AC has documented cases of tapes posted behind locked school or church doors after hours, tapes not posted at all, tapes posted in locations that are physically inaccessible. When users find no posted tapes, they should document the absence (a context recording of the location showing no tapes visible) and move on to the next location. The missing-tape finding is itself evidence worth capturing.

Safety considerations

Recording often happens at night, sometimes alone, in unfamiliar neighborhoods. Safety practices are covered in detail in Section 10.6. The essential principle: if anything feels unsafe, leave. No poll tape recording is worth getting hurt over.

Fallback recording methods

When the AV app fails — as it did during the 2024 General Election when Google Play rejected the latest Android build days before the election — users can fall back to their phone’s native camera. The resulting videos are emailed directly to AC or uploaded to a shared Google Drive folder. These fallback recordings lack the app’s automatic metadata but are still usable. Jason’s phone number and email become the primary support channel during these episodes.


8.5 — Step 4: Submission and Vetting

What this step does

Recordings enter the Actual Vote Video Archive either through the app (automatic upload) or through fallback channels (email, Google Drive). The vetting step reviews each submission to determine whether it’s usable, and if so, how it should be handled.

Vetting criteria

Each submission is reviewed for the following:

Is it a practice recording? Practice recordings show the practice poll tape PDF and are set aside from the analysis pipeline.

Does it contain usable poll tape content? A submission showing the floor, a pocket, or empty space is rejected. A submission too blurry, too dark, or too short to extract any information is rejected.

Is the content legible enough to transcribe? Can at least some vote totals be read from the recording? If so, the submission is transcribable. If not but it documents meaningful conditions, it’s classified as context. Borderline cases are typically approved — let the transcriber try.

Does it contain identifying information? AC vets aggressively for PII: faces of poll workers or voters, voter check-in materials, sign-in sheets, audio of identifying conversations, accidentally captured personal items. Submissions with pervasive PII are rejected. Submissions with incidental PII may be flagged for cropping.

Is it a zero tape or a results tape? Users occasionally record zero tapes (printed when the machine boots up, showing all zeroes) alongside or instead of results tapes. Zero tapes are important election-integrity artifacts but are not what AV compares against official results. The vetter flags these.

Is it a context submission? Recordings documenting conditions at a polling place — tapes not posted, tapes posted incorrectly, access problems — enter the context track rather than the transcription track. Context submissions are handled in step 8 of the investigation process.

Classification outcomes

After vetting, each submission is categorized as one of the following:

Transcribable. The submission depicts one or more poll tapes with state, county, election date, voting method, and precinct readable in the header, and with at least one legible contest/choice/vote total triple. This is the category that feeds the comparison pipeline. The NC 2024 Primary had 52 transcribable submissions; a large general election operation may have hundreds.

Context. The submission documents meaningful conditions at a polling place — tapes not posted, tapes posted behind glass, tapes posted facing inward, locations where access was blocked, or unusual operational situations — but does not contain transcribable vote totals. Context submissions are valuable evidence of how vote reporting actually works on the ground. They are handled separately in the investigation phase (Section 8.9) and may warrant their own follow-up.

Not-practical-to-transcribe. The submission has poll tape content that is legitimate but cannot be directly used in the comparison pipeline. A tape that’s too partial to associate with a specific precinct, a tape from an unfamiliar machine format, a tape where the values are technically legible but can’t be matched against any official result. These are preserved for potential future use.

Practice. A recording of the practice poll tape PDF used for training. Easily identified by its distinctive formatting. Set aside from the analysis pipeline.

Out-of-scope. A recording from an election or jurisdiction not in the current analysis. Tagged with its relevant scope and preserved for future analyses.

Rejected. The submission cannot be used. Common reasons: pervasive PII (faces, sign-in sheets, identifying conversations), no usable content (the user recorded the floor, their pocket, or empty space), too degraded to extract anything. Rejected submissions remain visible to the submitter but do not appear on the public archive.

Edge cases in vetting

Several edge cases recur frequently enough to have established handling patterns.

A submission shows a poll tape but the metadata is missing or wrong — the user forgot to enter the precinct or the GPS didn’t fire. The vetter approves the submission with a comment; the transcriber will extract the precinct from the tape header itself.

A submission is from a different election than the current analysis — the user recorded an old tape still posted from a prior election. The vetter approves and tags it for the correct election scope.

A submission is a duplicate — two users recorded the same tape, or one user submitted twice. Both copies are kept but only one enters the transcription pipeline.

A submission contains multiple tapes in one video — the user panned across several tapes in sequence. The vetter approves and the transcriber extracts all tapes from the single recording.

A submission shows a zero tape alongside or instead of a results tape. The vetter flags the zero tape separately — it’s an important election integrity artifact but not what AV compares against official results.

Operational reality

Vetting is bottlenecked by attention, not skill. The decisions are not technically difficult once the vetter has practice — the hard part is finding the time to watch every submission. During high-volume periods like the 2024 General Election, the vetting backlog became a real operational concern with more submissions arriving than could be processed in real time.

AC has experimented with several approaches to manage vetting throughput: batching vetting work into dedicated sessions rather than continuous trickle-through; splitting work across multiple team members with consistency review by Jason as final arbiter; triaging by known reliable submitters whose typical quality is predictable; and using metadata for pre-filtering (GPS coordinates and timestamps can surface submissions most likely to be straightforward).

A pending modernization item is AI-assisted vetting that could flag obvious issues (no content, very short, very blurry) automatically, not to replace human review but to prioritize the human attention more efficiently.


8.6 — Step 5: Transcription

What this step does

Transcription takes the visual content of a poll tape recording and converts it into structured data: rows and columns in a spreadsheet that the comparison code can work with. Each transcribed value is a number associated with a specific contest, choice, voting method, precinct, and submission ID.

The NC 2024 Primary report’s headline number “4,625 transcribed values” is the count of rows in the transcription dataset for that analysis.

How transcription is performed

The transcriber opens each submission in the archive, watches the video, pauses on frames showing vote totals, and enters each value into a transcription spreadsheet. For each visible contest, the transcriber records: contest name, each candidate or option, and the vote total for each. Special values (overvotes, undervotes, write-in totals) are recorded separately. Anomalies (unexpected contests, out-of-range values, illegible portions) are noted in comments.

A typical transcribable submission produces between a few dozen and a few hundred transcribed values, depending on ballot complexity.

The transcription spreadsheet

In the current implementation, the transcription dataset is a Google Sheet (or CSV equivalent) with one row per transcribed value. The standard columns are:

ColumnDescription
submission_idThe integer ID from the Actual Vote Video Archive
countyCounty name
precinctPrecinct identifier (from tape header)
voting_methodElection Day, Early Voting, Absentee, etc.
contestContest name as printed on the tape
choiceCandidate or option name as printed on the tape
vote_totalThe numeric value read from the tape
notesAny anomalies, illegible portions, or transcriber comments

For the NC 2024 Primary, this structure produced 4,625 rows across 52 transcribable submissions — an average of about 89 values per submission. General elections with many downballot contests can produce several hundred values per submission.

Contest prioritization

When time is limited — particularly during the before-certification window — AC prioritizes which contests to transcribe first. The prioritization order is typically: top-of-ticket races first (president, governor, US senator), then contested races where margins may be close, then remaining federal and state races, then local and downballot contests. The rationale is that top-of-ticket races are what the public and media care most about, and close races are where discrepancies would be most consequential. In an ideal analysis, all contests are transcribed; in practice, time constraints sometimes require triaging.

AI-assisted transcription

What began as an experiment in AI-assisted transcription is now AC’s primary transcription path, realized as the Actual Vote Assist (AVA) pipeline documented in Section 4.8. Early proof-of-concept work captured key frames from a video, passed them to a vision-capable model with a structured prompt requesting contest/choice/value extraction, and presented the output to a human for confirmation. AVA productionized that idea: it extracts and de-blurs candidate frames, reads each with Claude vision, reconciles the same contest-choice across multiple frames, joins the result to the official record, and routes only its uncertain reads to a person.

The earlier edition of this manual described the operational state as “entirely human transcription,” with the AI approach “promising but not yet validated at scale.” That has changed: AVA has run end-to-end on live analyses (the Cobb County, Georgia primary runoff and a full-county Santa Clara, California analysis among them). The concerns named earlier — unusual fonts, partial visibility, and the risk of a reviewer rubber-stamping the AI — are exactly what AVA’s design addresses rather than wishes away. It does not attempt fully unattended transcription, which remains infeasible: a human still excludes unreadable recordings up front, supplies the list of valid contest-and-choice combinations that anchors the OCR’s reading and its join to official results, and adjudicates everything the system flags, with a spot-check tool available for the reads it was confident about. The remainder of this section describes transcription in terms that hold whether a tape is read by hand or by AVA; the hand process is still used for tapes AVA cannot read and as the conceptual baseline for understanding what the step accomplishes.

Quality control

Transcription is the step where errors most easily and quietly enter the dataset. A transposed digit (247 instead of 274), a misread choice name (Smith when it’s Smyth), a missed contest — any of these will produce an initial non-match downstream that must be reviewed and resolved. Catching transcription errors before they reach comparison is more efficient than catching them after.

Quality control approaches that AC uses:

Re-watching key frames. When a value seems unusual or hard to read, the transcriber re-watches the frame multiple times and at different pause points in the video.

Cross-checking sums. A poll tape typically has a “total” line that should equal the sum of the individual choice values for that contest. Computing the sum and comparing it to the printed total is a quick sanity check that catches many transcription errors.

Cross-checking against neighboring tapes. If two tapes from the same precinct show very different values for the same contest, one of them may have a transcription error — or there may be a real underlying difference worth investigating. Either way, the discrepancy is worth flagging early.

Spot-checking by a second person. When time and personnel allow, having a second person verify a sample of transcribed values catches systematic errors that the original transcriber might repeat.

Using early comparison runs as a sanity check. Running the comparison before transcription is complete and examining what comes back as initial non-matches often surfaces transcription errors. If an initial non-match involves a value that differs by exactly the amount of a common digit transposition (e.g., 27 vs. 72), the transcription is the likely culprit.

The quality of transcription is one of the most important variables in the overall accuracy of an analysis. A rigorous transcription process supports a confident final report; a sloppy one undermines everything downstream.

Common challenges

Unusual fonts. Some voting machines use fonts where certain digits are hard to distinguish. The 6/8 confusion and the 3/5 confusion are the most common. The Proxima Nova font family, used by some voting equipment, is particularly problematic — its 6 and 8 are nearly indistinguishable at the print sizes used on poll tapes. AC recommends that election equipment manufacturers use high-legibility fonts (Section 15.1, Recommendation 7) and uses IBM Plex at 12pt internally for working spreadsheets.

Write-in handling. Different jurisdictions handle write-ins differently on poll tapes. Some show individual write-in candidate names with vote counts; others show only a combined “Write-In” total. Some include write-ins in the contest’s overall total; others report them separately. The transcriber records what the tape shows; the comparison logic (Section 8.7) handles the matching to official results.

Multi-page tapes. Long tapes — general elections with many contests can produce tapes several feet long — may be recorded in multiple videos or in a single long pan. The transcriber must ensure all portions are accounted for and that no contest appears twice (from overlapping recordings) or is missed (from a gap in coverage).

Hand-written corrections. Occasionally poll workers annotate tapes by hand — a value crossed out and a new value written in, a note about a machine malfunction, a signature or timestamp. The transcriber records both the printed value and any correction, with a comment explaining what was observed.

Ink quality. Thermal printing varies in quality. Some tapes are crisp and dark; others are faint, uneven, or partially faded. Low ink density makes digit recognition harder and increases the risk of transcription errors. This is one of the reasons AC recommends that election equipment use high-quality thermal printing (Section 15.1).


8.7 — Step 6: Comparison Logic Development

What this step does

This is the most jurisdiction-specific and expert-intensive part of the pipeline. AC must figure out, for each analysis, exactly how to map transcribed values to official values at the right grain.

The output is comparison code (typically a Python script) plus a comparison specification documenting what the code does and why.

The typical comparison grain

The default approach performs comparisons at the grain of County × Precinct × Voting Method × Contest × Choice. For each combination: sum the transcribed values, find the corresponding official result, compare, record the result.

This works for most US jurisdictions. The NC 2024 Primary used this default grain.

When the typical grain doesn’t apply

The Georgia early voting grain mismatch. Early voting in Georgia uses vote centers where any county voter can vote. Poll tapes show vote-center-level totals, but official results report by precinct (splitting vote-center totals back to voters’ home precincts based on registration data). No direct comparison is possible. AC focused on Election Day rather than Early Voting for the 2024 Georgia analysis.

Combined or consolidated precincts. When jurisdictions merge precincts, official results may show a single value where poll tapes show separate values, or vice versa.

Voting methods reported only at county level. Some jurisdictions report Absentee or Provisional votes only at the county level. AC must aggregate all relevant transcribed values to the county level before comparing.

Multiple machines per precinct. When a precinct has multiple tabulators, the comparison logic must sum the values from all tapes for that precinct/voting method/contest/choice before matching to the single official value.

Processing officially reported results

Every analysis depends on having the official results in usable form. The transcribed values are one half of the comparison; the official results are the other half. Processing official results — downloading, parsing, standardizing, and structuring them — is often the most analyst-intensive of the early pipeline steps.

Where official results come from. AC obtains results from the relevant elections office in whatever form the office publishes. Typical sources include: county elections office websites (most counties publish results online, though format and timeliness vary widely), state elections office websites (states like North Carolina aggregate county results into a statewide system — the NC 2024 Primary used the NCSBE bulk data export), bulk data downloads (CSV or Excel files published for public download), direct requests to elections offices, and FOIA requests when published data is incomplete or unavailable.

The variety of formats. Official results come in formats that range from immediately usable to actively hostile to extraction.

CSV files are the friendliest format — AC can parse them directly with standard tools. The NCSBE bulk data exports are an example.

Excel files are manageable, with the caveat that they often contain multiple sheets, merged cells, header rows, and formatting quirks that require attention.

HTML tables on county websites can be scraped with standard tools, but the scraping is fragile — HTML structure changes from one election to the next and requires maintenance.

PDF files are the most common difficult format. Some PDFs are essentially text in PDF wrapping and can be extracted easily. Others are image-based and require OCR. Others are structured to actively defeat extraction — the Wake County, NC obfuscation case is the extreme example. In that case, the PDFs exhibited non-standard character encoding (a “1” on screen was a different character code internally), hidden positioning offsets that defeated position-based extraction tools, image-substituted text rendering, and scattered zero-width nuisance characters that corrupted extracted text. The combined effect was that standard PDF text extraction produced gibberish, and even OCR on the rendered pages struggled. AC had to use manual transcription of the official results — a painstaking process that dramatically increased analyst time for that jurisdiction.

Image files (scanned documents) require OCR with manual cleanup. A few jurisdictions use custom formats requiring purpose-built parsers.

Standardization. Once raw official results are in hand, they must be standardized to a common form. This involves: mapping jurisdiction-specific vocabulary to AC’s canonical terms (e.g., “Advanced Voting” in Georgia → “Early Voting,” “One-stop” in historical NC data → “Early Voting”); normalizing contest names across sources (“President” vs. “President of the United States” vs. “PRESIDENT” — all the same contest but a literal string match would fail); normalizing candidate names (“Joe Biden” vs. “BIDEN” vs. “Biden, Joseph R.”); building precinct-ID mapping tables when the poll tape header uses a different identifier than the official results; and handling missing data (precincts with no votes for a given method should appear as zeros, not as missing rows).

Per-jurisdiction processing code. AC writes a small Python script per jurisdiction to handle its specific format. These scripts accumulate over time — after working in a jurisdiction multiple times, the ingestion code is well-tested and the next analysis is much faster. Each script is archived with the analysis for replicability.

Scraping ENR websites. For some jurisdictions, AC scrapes Election Night Reporting (ENR) websites to obtain preliminary results. ENR scraping requires custom code for each county’s specific web application, and the scraped data must be treated as preliminary (subject to change as counting continues). Scraping is most useful for getting comparison data quickly during the before-certification window; the final comparison should use the certified results when available.

Inferring undocumented vote reporting logic

AC does not have the internal procedural manuals for each county’s election administration. Many of the rules governing how a county conducts vote reporting are tacit knowledge held by the county’s staff or encoded in their specific software configurations. Examples of undocumented logic that have surfaced in past analyses: how write-in votes count toward contest totals, how overvotes and undervotes appear in reporting, how ballot jams and re-scans are handled (the Wake County BOE 2024 case), how emergency polling place relocations produce multiple tapes for a single precinct (the Bat Cave, Henderson County 2024 case), and how anonymity redactions work in counties that suppress small vote counts (the Gwinnett County, Georgia 2024 case).

When AC encounters undocumented logic, the discovery is captured in per-jurisdiction knowledge notes so future analyses of the same jurisdiction can build on it. This knowledge accumulates over time — after multiple analyses, AC often has a more detailed understanding of a jurisdiction’s vote reporting practices than what’s publicly documented anywhere.

Much of this understanding is inferred rather than read from a specification, because no complete public specification of a jurisdiction’s reporting process generally exists. When AC adopts such an inference — that a one-stop identifier aggregates a site’s machines, that a precinct’s votes were lawfully merged into another’s after a weather closure (the Bat Cave case), that a write-in difference is a representation difference rather than an error — it does so under a defined standard and records it as a stated assumption, distinct from a documented or county-confirmed fact. The epistemic discipline governing these inferences — the over-determination standard that separates a forced conclusion from a merely plausible one, the policy on when to ask the elections office, and the way the discrepancy vocabulary encodes how much is known about each number — is set out in Section 12.6.

Plausibly equivalent write-in situations

The most common instance of undocumented reporting logic is now systematized: write-in votes can legitimately appear differently on the poll tape and in the official results because the two record different stages of the same process. The tape prints one catch-all raw write-in count — whatever the machine tallied on election night. During canvass, those write-ins are resolved one by one: a vote written in for a candidate who was actually on the ballot is credited to that candidate’s total; a vote for a qualified write-in candidate appears on that candidate’s own line in the official results; a vote for an unlisted or invalid name is discarded. The result is that a tape reading “Candidate A 96, Write-in 3” can correctly become “Candidate A 97, Write-in 0” officially — first-pass mismatches that trace to one resolution event, not an error. AC calls this a plausibly equivalent write-in situation (PEWS): the same votes, represented two ways.

The write-in equivalence check tests whether a contest’s mismatches are fully consistent with write-in resolution. With diff = official − tape per listed candidate, all five conditions must hold: (1) no listed candidate loses votes (every diff ≥ 0 — resolution can only add); (2) redistributed = the sum of positive diffs; (3) invalid = tape write-ins − redistributed − all official write-in lines, which must be ≥ 0 (you cannot drop more write-ins than the tape recorded); (4) the totals reconcile exactly (tape total − invalid = official total); and (5) the tape is internally consistent (its choice values plus overvotes and undervotes reproduce its own printed Total Votes line, so the values being reasoned from are trustworthy). The magnitudes involved are inherently bounded by the tape’s raw write-in count, which is small; the check requires the arithmetic to close exactly rather than enforcing a separate threshold.

A passing contest collapses its mismatches into a single review item, and an analyst confirms the reconciliation before any comparison is reclassified. A confirmed PEWS resolves to a match (Section 12.3) — the same treatment as a confirmed ballot jam re-scan. The check is deliberately narrow: a contest where any candidate loses votes, or where the official side gains votes the tape’s write-in count cannot supply, fails the check and remains a discrepancy for ordinary investigation. In the Wake County 2022 Midterm analysis, the check passed for 19 contests and correctly refused 75 others whose differences stemmed from different mechanisms.

The check generalizes across jurisdictions by adjusting what counts as the tape’s raw pool. North Carolina publishes qualified write-in candidate lines and a Write-In (Miscellaneous) line, so the pool is the tape’s catch-all write-in count and condition 3 nets out the official write-in lines. Georgia publishes no write-in lines at the precinct level at all, and tapes there may also carry lines for court-disqualified candidates whose votes are void (De la Cruz and West in 2024) — so the pool is the tape’s full non-certifiable vote count: raw write-ins plus disqualified-candidate lines, with zero on the official side. The Georgia 2024 General analysis resolved its single first-pass mismatch this way, with independent corroboration from dated official exports: the election-night export matched the tape exactly, and the one-vote difference appeared only in post-canvass data. That corroboration technique — capturing dated snapshots of official results during the live analysis window — is now standard practice (Section 8.6).

The comparison code as a versioned artifact

Each analysis produces its own comparison code, archived for replicability. The code is Python with standard data science libraries (pandas primarily). The simplicity is deliberate: the comparison itself is conceptually a join and an equality check. The complexity is in the preprocessing and per-jurisdiction logic. Anyone with the data and the script can re-run the analysis and verify.


8.8 — Step 7: Comparison Execution

What this step does

Given the comparison logic, the analyst runs it against the transcription and official results datasets. On its first pass, each comparison is either an exact match (values agree) or an initial non-match (values disagree) — a non-match that review then triages, not yet a discrepancy.

The output has two shapes: the full comparison dataset (every comparison, used for summary statistics and traceability) and the initial non-match list (only the first-pass mismatches, feeding the review and investigation in step 8).

The Python pipeline

A typical comparison script is a few hundred lines of readable Python using standard data science libraries (primarily pandas). The script performs the following operations in sequence:

  1. Load the transcription dataset (the Google Sheet or CSV produced in step 5).
  2. Load the processed official results (the standardized dataset from step 6).
  3. Apply preprocessing: filtering to the analysis scope, normalization of field values, jurisdiction-specific transformations.
  4. Apply aggregation rules: sum transcribed values across machines for the same precinct/voting method/contest/choice combination.
  5. Join the aggregated transcription data to the official results data on the comparison grain (County × Precinct × Voting Method × Contest × Choice).
  6. For each joined row, compute the comparison: does the aggregated transcribed value equal the official value?
  7. Classify each comparison as an exact match or an initial non-match (a first-pass mismatch, for any reason).
  8. Write the full comparison dataset and the initial non-match list.
  9. Compute summary statistics.

The simplicity is deliberate. The comparison itself is conceptually a join and an equality check. The complexity is in the preprocessing and per-jurisdiction logic that gets the data into a state where the join and equality check produce meaningful results. Anyone with the data and the script can re-run the analysis and verify — this replicability is a core feature of the methodology.

What the comparison output looks like

The full comparison dataset has one row per comparison, with columns for each dimension of the grain plus the transcribed value, the official value, the difference, and the comparison outcome. For the NC 2024 Primary, the output dataset had columns for county, precinct, voting_method, contest, choice, transcribed_value, official_value, difference, and outcome.

The summary statistics derived from this dataset include: total comparisons performed, number of exact matches, number of matches reached after review, number of likely-attributable and apparent discrepancies, total votes audited (the sum of the transcribed values across all comparisons), and the percentage of comparisons that matched. The NC 2024 Primary’s headline numbers — 52 transcribable submissions, 4,625 transcribed values, 321,502 votes audited, and zero apparent discrepancies (and zero true discrepancies) in the County/Precinct/Voting Method triples — are all derived from this summary.

Iterative comparison runs

In practice, comparison is rarely a single run. The typical pattern is: run the comparison with the current logic, examine the output, find issues (comparison logic bugs, transcription errors, normalization gaps), fix them, and re-run. Several iterations are normal for a new jurisdiction. For a familiar jurisdiction, two or three runs may suffice. Each iteration improves the comparison logic and reduces the initial non-match count toward the true residual.

This iterative process is one reason why the comparison code is kept simple and readable — the analyst needs to be able to modify and re-run it quickly, sometimes many times in a single work session.

Write-in vote mismatches

Write-in vote handling is a recurring source of small mismatches. Poll tapes typically show write-ins as a single combined number; official results may break them out by individual write-in candidate name, or may include write-ins in the overall contest total while the tape reports them separately. These mismatches are usually a few votes and are explained by differences in reporting style rather than by errors in vote reporting. AC may treat them as matches (a confirmed plausibly equivalent write-in situation) or as discrepancies to investigate, depending on how well write-in handling is understood for the jurisdiction.

Unmatched rows

Not every transcribed value will find a matching official result, and not every official result will have a corresponding transcribed value. Unmatched rows occur when: AC has a poll tape from a precinct that doesn’t appear in the official results (possible data issue or precinct naming mismatch); the official results have a precinct for which AC has no submissions (expected — AC rarely covers all precincts); or field normalization hasn’t reconciled all the naming differences. Unmatched rows are examined for possible comparison logic issues and, if unexplained, documented as gaps in the analysis.

What the analyst checks after each run

After the code runs, the analyst reviews: the summary statistics (total comparisons, initial non-matches, votes audited — do they match expectations given the number of submissions?), the pattern of non-matches (clustered in one precinct or scattered? clustered in one contest or across many?), the magnitude of the differences (off by 1 vote or off by 1,000?), whether there are unexpected join failures or null values, and spot-checks of individual comparisons by hand.

The pattern of non-matches is particularly informative. If all initial non-matches are in the same precinct, the comparison logic for that precinct is probably wrong. If all are in the same contest, the contest name mapping is probably off. If they’re scattered and small, transcription errors are likely. If a single large discrepancy appears, a missing tape or a genuinely problematic official result is the first hypothesis.

If something looks wrong, the analyst goes back to step 6 to fix the logic and re-runs. The cycle repeats until the output is clean or the remaining discrepancies are genuine and ready for investigation.


8.9 — Step 8: The Seven-Check Investigation Process

This is the most rigorous step and the one most important for credibility. Each initial non-match must be reviewed — and each discrepancy investigated — before it can be reported as a finding. The seven checks below are how AC triages an initial non-match (catching its own errors) and investigates a discrepancy before making any heavier ask to the elections office.

How an initial non-match resolves

Review and the seven checks sort each initial non-match into one of a few outcomes:

A match. Most often the difference was AC’s own — a transcription slip, a matching-logic error, an aggregation mistake — and correcting it makes the comparison a match (these are not reported). A difference fully accounted for by reporting logic or a known operational event — a confirmed ballot-jam re-scan, a PEWS — likewise resolves to a match, with the explanation recorded in the comparison’s lineage.

A likely attributable discrepancy. A real difference for which AC holds a benign, probably-correct hypothesis about the jurisdiction’s reporting logic — pending confirmation by AC’s own check or a lighter ask to the elections office.

An apparent discrepancy. A real difference for which review produced no benign hypothesis. Because the cause could be innocent error or fraud, AC needs an answer and makes a heavier ask to the office.

Escalatable, then true. An apparent discrepancy that neither AC nor the office can resolve becomes escalatable: AC must hand it to a party able to bring a court case — the only stage AC calls “escalation.” A true discrepancy — a confirmed vote-reporting error — exists only once the responsible authority confirms it, by the office acknowledging the error or a court ruling on it. To date, across all published analyses, that number is zero.

The vocabulary is deliberately conservative, and AC never reaches a true discrepancy without first being unable to explain the difference.

”We did the comparison wrong” as the most common outcome

The most common outcome of reviewing an initial non-match is that AC’s comparison logic had an error — an implicit assumption that turned out to be wrong for that specific jurisdiction or election. In AC’s internal shorthand: “we did the comparison wrong.”

The reason this outcome is so common: AC does not have the 500-page vote reporting manuals that each county maintains internally. Every jurisdiction has its own rules for how results are aggregated, how voting methods are categorized, how edge cases (write-ins, overvotes, ballot jams, provisional ballots) are handled, and how the numbers that appear on poll tapes relate to the numbers in the officially published results. Much of this logic is undocumented or documented only in internal county procedures that AC does not have access to. When AC builds the comparison logic for a new jurisdiction, it infers the rules from the structure of the official results and from experience — but the inferences can be wrong, and the undocumented logic can be subtle and surprising.

In practice, many initial non-matches have resolved as cases where AC’s comparison logic had an implicit assumption that turned out to be incorrect. The bug then gets fixed (either in the per-jurisdiction comparison code or in AC’s broader knowledge base for that jurisdiction), the comparison is re-run, and what was an initial non-match becomes either a match or a discrepancy that can be investigated further.

This pattern is methodologically critical, for three reasons. First, it means the investigation step is not adversarial — AC versus the elections office — but cooperative: AC trying to understand what the elections office actually did. Second, it means the careful approach AC takes — investigating thoroughly before making any heavier ask to the office — is what protects AC from being a source of false alarms and what preserves AC’s credibility with elections offices. Third, it means that each investigation makes AC’s comparison logic better. The institutional knowledge accumulated through resolving initial non-matches is what makes future analyses in the same jurisdiction faster and more accurate. The first analysis of a new jurisdiction is always the hardest; subsequent analyses benefit from everything the first one taught.

The seven checks

Check 1: Transcription error. The simplest and most common explanation. The analyst re-watches the source recording and re-reads the values. If the transcription was wrong — a transposed digit, a misread candidate name, a skipped contest — the correction is made and the comparison is re-run. Transcription errors are especially common for hard-to-read tapes with faint ink, unusual fonts, or challenging recording conditions. Example: an initial non-match of 27 votes in a contest turns out to be a transcription of “274” as “247” — the digits were transposed. Fix the transcription, re-run, it resolves to a match.

Check 2: Comparison logic error. The contest, choice, or precinct was mismatched between datasets. The analyst reviews the matching logic and terminology mappings. Common in new jurisdictions where AC hasn’t yet learned the local naming conventions. Example: the poll tape lists the contest as “US HOUSE DIST 11” but the official results list it as “US Representative, 11th Congressional District.” The fuzzy matching didn’t catch the mismatch. Fix the mapping table, re-run, discrepancy resolves.

Check 3: Missing poll tapes. The official total for a precinct includes votes from a tape AC doesn’t have — typically because the precinct had multiple tabulators and only some tapes were recorded, or because a tape from one voting method (say, Early Voting) was not available. The discrepancy is an artifact of incomplete data, not of error in vote reporting. The analyst verifies which tapes were expected (based on the number of tabulators and voting methods at that precinct) and which are missing. If the discrepancy’s magnitude is consistent with the missing tape’s expected contribution, the explanation is documented and the comparison resolves to a match, with the missing tape recorded in its lineage. Example: the official result for Precinct 101 Election Day is 847 votes, but AC’s transcribed total from one machine is 512 votes. A second tabulator at that precinct was not recorded. The 335-vote gap is consistent with a second machine’s contribution.

Check 4: Duplicate poll tapes. The same tape was counted twice in the transcription — two users recorded it, or the same recording entered the system twice under different submission IDs. The analyst verifies that each transcribed value maps to a unique source tape by checking submission IDs, GPS coordinates, and tape header identifiers. If a duplicate is found, the redundant values are removed and the comparison is re-run. Example: two volunteers both recorded the tape at Lincoln Elementary. Both submissions entered the transcription pipeline. The aggregation summed both, doubling the transcribed value. Remove one, re-run, discrepancy resolves.

Check 5: Aggregation logic error. The comparison code is summing the wrong set of values — including a tape from the wrong precinct, excluding a tape that should be included, or applying the wrong aggregation rule. The analyst traces through the aggregation logic for the specific discrepancy, checking which transcribed values were included in the aggregation and whether they correspond to the correct official result. Example: a precinct boundary change means two formerly separate precincts now report as one combined precinct in the official results. The comparison code is aggregating them separately. Fix the aggregation rule, re-run, discrepancy resolves.

Check 6: Undocumented vote reporting logic. The county handles some aspect of vote reporting differently than AC assumed, and the difference wasn’t visible until this specific comparison. The analyst researches the specific case, makes a lighter ask to the elections office if needed, and updates AC’s knowledge base. This check is common in new jurisdictions and is the primary source of the institutional knowledge that makes future analyses in the same jurisdiction faster and more accurate. Example: the Wake County BOE ballot jam re-scan case from the 2024 General Election. Several precincts showed initial non-matches because a ballot jam during scanning caused the operator to re-scan a stack of ballots. The original tape included the double-counted ballots; the official results reflected only the corrected count. The undocumented re-scan procedure explained the difference (resolving each to a match), but AC only learned about it through investigation and correspondence with the BOE.

Check 7: Operational context. The discrepancy is explained by a known operational event: a hurricane-related polling place relocation, an equipment failure, an emergency closing time extension, or another documented incident. The analyst reviews operational notes, context submissions, and news reports for the relevant precinct and date. Example: the Bat Cave precinct in Henderson County, NC, 2024 General Election. Hurricane Helene damaged the original polling place, and a second location was opened. The official results combined both locations under a single precinct identifier, but AC had poll tapes only from the primary location. The difference was the exact contribution of the second location — confirmed when the Henderson County BOE provided the missing tape within hours of AC’s inquiry.

Asking the elections office

When a discrepancy needs information AC does not have, AC asks the relevant office — a cooperative inquiry, never an “escalation” (AC reserves that word for the court stage). The weight of the ask is proportional to how unexplained the discrepancy is: a lighter ask to confirm a likely-attributable hypothesis, a heavier ask to seek an explanation for an apparent discrepancy. The tone is collaborative, not adversarial: “We have observed the following data, we have checked the following things, we are asking for help understanding what happened.” The ask includes the specific data, links to the relevant archive submissions, what AC has already checked, and a specific question.

The Henderson County correspondence is exemplary. AC asked the Henderson County Board of Elections about a discrepancy at the Bat Cave precinct. The BOE responded the same day, confirmed the explanation (a second polling location opened due to hurricane damage), and provided the missing poll tape. The discrepancy resolved to a match, collaboratively.

AC waits a reasonable time for a response — at least a month, with at least one follow-up — before treating an apparent discrepancy as one it has no choice but to escalate to a court-capable party. A true discrepancy is recorded only once the office acknowledges the error or a court confirms it; AC never self-declares one.

Investigation notes as a record

Every investigation produces a note documenting what was checked, what was found, and what was concluded. These notes are archived with the analysis and referenced in the final report. An investigation result without a note is not credible — anyone reviewing the analysis later needs to see the work.


8.10 — Step 9: Writing and Publishing the Report

What this step does

The report communicates findings to readers who didn’t do the work. A good report makes the methodology legible, presents findings honestly (including uncertainty and unresolved items), and gives readers enough context to understand what the findings mean and don’t mean.

Two report formats

The static analysis report is a single document published when an analysis is complete. The NC 2024 Primary report is the canonical example: title, methodology overview, analysis scope, headline numbers, detailed findings, limitations, acknowledgments.

The rolling operational log is a live-updated page tracking an active analysis. The 2024 General Election News Page is the canonical example. Rolling logs are more informal, accumulate over time, and make AC’s work-in-progress visible. They are useful for multi-state, multi-week analyses where findings arrive continuously.

The formats are complementary. A long-running analysis may begin as a rolling log and conclude with a static report.

What a static report contains

The NC 2024 Primary Report provides the template. A complete static report includes:

Front matter. Title (including the jurisdiction, election date, and AC branding), publication date, status (draft, final, updated), authoring organization (America Counts / Democracy Counts, Inc.), and the analysis unique identifier.

Methodology overview. A concise description of what the Comparison Analysis is and how it works, sufficient for a reader who hasn’t read the rest of this manual to understand the approach. This section typically includes a pointer to the manual for full methodology documentation.

Scope. The precise boundaries of the analysis: which state, which counties, which election date, which voting methods, which access methods were used, the analysis window (before or after certification), and the sources of official results data.

Headline results. The summary statistics: total submissions received, total transcribable submissions, total transcribed values, total comparisons performed, total votes audited, total likely-attributable and apparent discrepancies, total resolved to matches, total escalated, and total true discrepancies that ever existed. For the NC 2024 Primary, the headline was: 52 transcribable submissions, 4,625 transcribed values, 321,502 votes audited, zero apparent discrepancies (and zero true discrepancies) in the County/Precinct/Voting Method triples.

Impact statement. A brief characterization of the significance of the findings — what they mean for public confidence in the election’s accuracy.

Detailed findings. Per-county or per-precinct breakdowns of the comparison results. Investigation notes for any discrepancies investigated and resolved to matches. Documentation of any escalatable or true discrepancies.

Context submissions. Documentation of what context submissions revealed about vote reporting conditions on the ground — tapes not posted, posting compliance rates, access issues.

Limitations and caveats. Including: the analysis covers only the precincts for which AC received recordings (not the entire jurisdiction), the matched-poll-tape caveat (Section 13.4), any known gaps in the data, and any issues that could not be fully resolved.

Acknowledgments. Credit to volunteers, partners, elections offices that cooperated, and the analysis team.

What a rolling log contains

The rolling operational log has a different structure. Each entry is timestamped and describes a specific finding, observation, or update. The log accumulates in reverse chronological order (newest entries at the top) and is updated as new information arrives. Typical entry types include: new batch of submissions processed, new comparison results, investigation updates on discrepancies under investigation, SOE correspondence updates, operational notes (app issues, access problems), and corrections to earlier entries.

The 2024 General Election News Page is the canonical example. It tracked a multi-state operation spanning North Carolina, Georgia, and Florida over many weeks, with entries documenting findings as they emerged and investigation updates as discrepancies were resolved.

Voice and characterization

Vocabulary discipline is essential. The report uses the following terms precisely:

“Initial non-match” for any comparison whose values disagree on the first pass, before review. A first-pass mismatch that review corrects (AC’s own transcription, matching, or aggregation error) or explains becomes a “match.” A real difference with a benign, probably-correct hypothesis is a “likely attributable discrepancy”; one with no benign hypothesis is an “apparent discrepancy.” An apparent discrepancy AC cannot resolve and must hand to a court-capable party is “escalatable” — the only stage AC calls “escalation.” “True discrepancy” only for a reporting error the responsible authority has confirmed — the elections office acknowledging it or a court ruling on it. Never “fraud” — AC identifies symptoms (discrepancies in reported values), not motives. (Full vocabulary in Section 12.3.)

The report distinguishes observation from interpretation, discloses unresolved items, acknowledges limitations, and avoids headlines that overclaim. “No discrepancies found” is precise. “Election was perfectly accurate” is not — AC didn’t audit perfection; AC audited the parts it could see.

Presenting null findings as positive evidence

When AC finds no discrepancies, that is a meaningful finding — not the absence of a finding. The NC 2024 Primary’s “zero true discrepancies across 321,502 votes” is the headline. The report explains exactly what that means (the audited portion of vote reporting appears accurate) and what it doesn’t mean (only the analyzed portion is confirmed; the rest is not addressed; and the matched-poll-tape caveat applies — see Section 13.4).

Clean findings are valuable in several ways. They increase public confidence that vote reporting was accurate in the jurisdictions analyzed. They validate the methodology (it works, it can be run, and it produces interpretable results). They create a baseline for future comparisons (this jurisdiction was clean in 2024; if discrepancies appear in 2026, that’s new information). And they contribute to deterrence (the knowledge that independent verification is happening shifts incentives for anyone who might otherwise be careless or worse).

The before-certification vs. after-certification distinction

The analysis window shapes how findings are presented. A before-certification report has the possibility of contributing to correction of official results before they become final; it should make clear what the discrepancy is, what has been checked, and what the elections office would need to do to address it. An after-certification report contributes to the public record; it should make clear that the certified results stand but that the discrepancy has been documented for future reference and institutional learning.

AC prioritizes before-certification reporting when possible. The urgency of the before-certification window — typically days to weeks after election day — is one of the primary pressures on the entire pipeline. Finishing the analysis before certification gives the findings operational impact, not just archival value.


8.11 — What Happens After the Report

This section addresses the gap between publishing an analysis and moving on to the next one. Prior versions of the manual did not cover post-report procedures. In practice, several things happen after publication that matter for the ecosystem.

SOE follow-up

Does AC contact the elections office with findings? Yes — when findings warrant it. The Henderson County model is the preferred approach: AC shares findings, the SOE provides clarifying information, discrepancies are resolved or documented. For clean results (no discrepancies), AC may still share the report as a matter of courtesy and relationship-building.

Not all offices are equally receptive. Some respond promptly and cooperatively. Others don’t respond at all. AC documents both responses — cooperation and non-cooperation are both part of the public record of how election administration operates.

Discrepancy resolution with SOEs

When AC asks an SOE about an apparent discrepancy, the response may take several forms: the SOE provides an explanation that resolves it to a match (the Henderson County model); the SOE acknowledges an error and commits to process improvements (the Prince William County, Virginia precedent) — an acknowledgment that makes the difference a true discrepancy in that version of the results; the SOE provides no response; or the SOE disputes AC’s findings. Where the SOE cannot or will not resolve it, the apparent discrepancy becomes escalatable — ready to hand to a court-capable party.

In all cases, AC documents the exchange and the outcome. The goal is accuracy, not confrontation.

Data sharing

After publication, AC shares analysis materials with researchers, journalists, and other election integrity organizations upon request. The transcription datasets, comparison code, and official results files are available for independent verification. This openness is part of AC’s trustworthiness argument — anyone can check the work.

Archival

All analysis materials — transcription spreadsheets, comparison code, official results files, investigation notes, and the published report — are preserved for future reference. The archive serves two purposes: replicability (the analysis can be re-run) and institutional memory (future analyses of the same jurisdiction can build on accumulated knowledge).

Corrections policy

If AC discovers an error in a published report — a transcription mistake, a comparison logic bug, an analytical error — it publishes a correction. The correction includes what was wrong, what the corrected finding is, and how the error was discovered. The Findings Changelog (B.8) tracks substantive corrections.

Visible self-correction builds more credibility than an appearance of infallibility. Being wrong is inevitable in complex analytical work. What matters is whether you fix it.

Updating the rolling log

For analyses published as rolling logs, new information may arrive after the initial publication — additional submissions, SOE responses, clarifications from volunteers. The rolling log is updated with this information, with timestamps showing when each update was made. This ongoing revision is one of the strengths of the rolling format.

State-by-state knowledge updates

Each analysis feeds back into AC’s understanding of local practices. New insights about a jurisdiction’s reporting logic, its SOE’s responsiveness, its data format quirks, and its posting compliance become part of AC’s knowledge base for future analyses. The state-by-state reference (B.3) is updated accordingly.