Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

NIST SP 1500-100 Alignment

This appendix maps the pipeline’s schema fields to concepts defined in NIST SP 1500-100 v2, the Election Results Common Data Format Specification. The mapping is informational — the pipeline does not emit NIST-compliant XML, but its internal schema was designed with alignment in mind.

Field mapping

Pipeline fieldNIST SP 1500-100 conceptNIST elementNotes
contestContestCandidateContestCandidate races map to CandidateContest.
contest (ballot measure)ContestBallotMeasureContestBallot measures use a separate NIST element.
contest.nameContest nameCandidateContest.NameRaw office string before normalization.
contest.canonical_officeOfficeOffice.NameL4 normalized office name.
candidate.canonical_first, canonical_lastCandidateCandidate.PersonFullNamePipeline stores components; NIST stores full name.
candidate.partyPartyParty.AbbreviationThree-letter codes (DEM, REP, LIB, etc.).
jurisdiction.ocd_idGeographic unitGpUnit.ExternalIdentifierOCD-ID used as the external identifier type.
jurisdiction.county_fipsGeographic unitGpUnit.ExternalIdentifierFIPS code, identifier type fips.
jurisdiction.stateGeographic unitGpUnit.Type = "state"Two-letter USPS abbreviation.
votes.totalVote countsVoteCounts.CountTotal votes for a candidate in a contest.
votes.by_mode.election_dayVote counts by typeVoteCounts.CountItemType = "election-day"Present in ~33% of records.
votes.by_mode.absenteeVote counts by typeVoteCounts.CountItemType = "absentee"Terminology varies by state.
votes.by_mode.earlyVote counts by typeVoteCounts.CountItemType = "early"Some sources merge into election day.
votes.by_mode.provisionalVote counts by typeVoteCounts.CountItemType = "provisional"Timing of inclusion varies.
election.dateElectionElection.StartDateSingle date; no multi-day modeling.
election.typeElection typeElection.TypeValues: general, primary, runoff, special.
turnout.registered_votersTurnout metadataVoteCounts.CountItemType = "total" on BallotCountsPresent in <5% of records.
turnout.ballots_castTurnout metadataBallotCounts.BallotsCastSame coverage caveat.
contest.districtElectoral districtElectoralDistrict.NameDistrict number or name within an office.

Concepts not modeled

The following NIST SP 1500-100 concepts have no direct equivalent in the pipeline schema:

  • RetentionContest — Judicial retention elections are classified as BallotMeasure with yes/no choices rather than as a distinct contest type.
  • OrderedContest — Ballot ordering is not captured. The pipeline does not model ballot layout.
  • BallotStyle — No ballot style or precinct-to-ballot mapping is maintained.
  • Ranked-choice voting roundsCountItemType values for RCV rounds (round-1, round-2, etc.) are not supported. See Known Limitations.
  • Overvotes and undervotes — Tracked as TurnoutMetadata contest records at L1, not as NIST OtherCounts.

Pipeline concepts not in NIST

The following pipeline concepts have no NIST equivalent:

  • provenance.hash — SHA-256 hash chain for record integrity. NIST defines no provenance model.
  • entity_resolution.method — Match method metadata (exact, Jaro-Winkler, embedding, LLM). Entity resolution is outside the scope of NIST SP 1500-100.
  • source.confidence — High/medium/low confidence levels. NIST does not model source reliability.
  • Layer identifiers (L0–L4) — The multi-layer pipeline architecture is specific to this project.