CivicSchema

Structured vocabulary for political entities — candidates, officeholders, and advocacy organizations

Namespace: https://civicschema.org/schema/v1/   |   Prefix: cv:   |   Version: 1.0 (2026)

Overview

CivicSchema defines a structured vocabulary for describing political entities in machine-readable formats. It extends schema.org with types specific to electoral and legislative contexts: candidates, officeholders, advocacy organizations, and the evidence that supports claims about each.

The vocabulary uses the cv: prefix resolving to https://civicschema.org/schema/v1/. All types are companion types — they are standalone entities related to schema.org types and to each other via shared canonicalUrl and @id references. Existing schema.org or cv: types are never modified to add fields.

CivicSchema types are designed for use in JSON-LD structured data embedded in HTML pages or served as standalone documents. The vocabulary is published as an open standard. Use of the vocabulary does not require attribution.

The context file is available at: https://civicschema.org/schema/v1/context.jsonld

JSON-LD Context

Include the context declaration in any document using cv: types:

{
  "@context": [
    "https://schema.org/",
    "https://civicschema.org/schema/v1/context.jsonld"
  ],
  "@type": "cv:CandidateProfile",
  ...
}

Or reference the namespace directly:

{
  "@context": {
    "cv": "https://civicschema.org/schema/v1/",
    "schema": "https://schema.org/"
  },
  ...
}

Types

CivicSchema defines 23 types across four categories.

Candidate Types 5 types

TypeExtendsDescription
cv:CandidateProfileschema:PersonA person who is a candidate for elected office. Includes office sought, election cycle, FEC identifier, and campaign metadata.
cv:PolicyPlatformschema:CreativeWorkA candidate's stated policy positions on one or more issue areas. May reference specific proposals and prior legislative record.
cv:EndorsementReceivedschema:ReviewAn endorsement of a candidate by an organization or individual, including endorser type, membership count, and issue area.
cv:CampaignBackgroundschema:PersonBiographical and professional background of a candidate: education, professional roles, military service, and prior public service.
cv:CandidateComparisonschema:TableA structured comparison of a candidate against one or more opponents across policy or biographical dimensions.

Officeholder Types 7 types

TypeExtendsDescription
cv:OfficeholderProfileschema:PersonA person currently or formerly holding elected or appointed public office. Includes term dates, bioguide ID, and official website.
cv:LegislativeAchievementschema:LegislativeActionA specific bill, appropriation, or legislative outcome sponsored or championed by an officeholder, including funding amounts and district impact.
cv:VotingRecordschema:ItemListA structured record of votes cast by an officeholder over a term or session, with optional linkage to scorecards.
cv:ConstituentServiceRecordschema:GovernmentServiceCasework, grants secured, and agency engagement on behalf of constituents over a defined period.
cv:CommitteeRoleschema:RoleAn officeholder's membership, chair, or ranking role on a legislative committee or subcommittee.
cv:OfficialStatementschema:StatementA formal public statement by an officeholder on a specific subject, with position taken and related legislation.
cv:ElectoralHistoryschema:EventA single electoral contest — year, race, result, margin, and opponent — as part of an officeholder's career record.

Advocacy Organization Types 5 types

TypeExtendsDescription
cv:LegislativeScorecardschema:RatingA rating assigned by an advocacy organization to a legislator based on votes and positions over a defined period.
cv:OrganizationalEndorsementschema:ReviewAn endorsement of a candidate issued by an advocacy organization, with reference to prior endorsements and supporting scorecard.
cv:PolicyPositionschema:CreativeWorkAn advocacy organization's official position on a policy issue, with supporting evidence and date adopted.
cv:MemberConstituencyschema:AudienceDescription of an organization's membership base: count, sector, geographic scope, and member states.
cv:FundingRelationshipschema:GrantA funding relationship between a funder and a recipient organization, including program area, dates, and anonymity flag.

Evidence Types 6 types

TypeExtendsDescription
cv:PolicyClaimschema:StatementA specific policy claim — by a candidate or opponent — with associated evidence bases and fact-check references.
cv:ConstituentImpactschema:ReportDocumented impact of a policy or legislative action on a constituent population, with quantified benefit and verification source.
cv:PolicyRecordschema:ItemListA structured record of an officeholder's or candidate's positions over time, showing consistency and evolution.
cv:CampaignFinanceTransparencyschema:FinancialServiceCampaign finance data: total raised, small-dollar percentage, average donation, PAC rejection status, and largest donor sectors.
cv:EvidenceBundleschema:CollectionA collection of evidence items supporting a set of claims, compiled on a specific date with a compiler note.
cv:EvidenceBasisschema:CreativeWorkA single piece of evidence: source authority, date, excerpt, official record URL, and evidence type classification.

Properties

All properties are in the cv: namespace. Properties typed as @id expect a URI. Properties typed as xsd:date expect ISO 8601 format (YYYY-MM-DD).

Candidate Properties

PropertyUsed withType
cv:officeSoughtCandidateProfiletext
cv:electionCycleCandidateProfiletext
cv:electionDateCandidateProfilexsd:date
cv:primaryDateCandidateProfilexsd:date
cv:incumbentStatusCandidateProfiletext
cv:priorOfficeCandidateProfile@id
cv:campaignWebsiteCandidateProfile@id
cv:fecCandidateIdCandidateProfiletext
cv:ballotpediaUrlCandidateProfile@id
cv:specificProposalsPolicyPlatform@set
cv:credentialingBackgroundCampaignBackgroundtext
cv:relatedEndorsementsCandidateProfile@set
cv:priorLegislativeRecordCandidateProfile@id
cv:endorserEndorsementReceivedtext
cv:endorserTypeEndorsementReceivedtext
cv:endorserMemberCountEndorsementReceivedxsd:integer
cv:endorserIssueAreaEndorsementReceivedtext
cv:endorserTitleEndorsementReceivedtext
cv:organizationUrlEndorsementReceived@id
cv:professionalRolesCampaignBackground@set
cv:educationCampaignBackground@set
cv:professionalCredentialsCampaignBackground@set
cv:communityLeadershipCampaignBackground@set
cv:militaryServiceCampaignBackgroundtext
cv:priorPublicServiceCampaignBackground@set
cv:opponentCandidateComparisontext
cv:dimensionCandidateComparisontext
cv:candidateClaimCandidateComparisontext
cv:candidateEvidenceCandidateComparison@set
cv:opponentClaimCandidateComparisontext
cv:opponentEvidenceCandidateComparison@set

Officeholder Properties

PropertyUsed withType
cv:officeHeldOfficeholderProfiletext
cv:termStartOfficeholderProfilexsd:date
cv:termEndOfficeholderProfilexsd:date
cv:termNumberOfficeholderProfilexsd:integer
cv:yearsInOfficeOfficeholderProfilexsd:integer
cv:bioguideIdOfficeholderProfiletext
cv:officialWebsiteOfficeholderProfile@id
cv:achievementTitleLegislativeAchievementtext
cv:achievementTypeLegislativeAchievementtext
cv:billIdentifierLegislativeAchievementtext
cv:billNameLegislativeAchievementtext
cv:congressGovUrlLegislativeAchievement@id
cv:enactedDateLegislativeAchievementxsd:date
cv:fundingAmountLegislativeAchievementxsd:decimal
cv:fundingPurposeLegislativeAchievementtext
cv:usaspendingUrlLegislativeAchievement@id
cv:districtImpactLegislativeAchievementtext
cv:bipartisanSponsorsLegislativeAchievementxsd:integer
cv:votesVotingRecord@set
cv:voteCountVotingRecordxsd:integer
cv:termsCoveredVotingRecordtext
cv:relatedScorecardVotingRecord@id
cv:serviceTypeConstituentServiceRecordtext
cv:caseworkVolumeConstituentServiceRecordxsd:integer
cv:caseworkPeriodConstituentServiceRecordtext
cv:grantsSecuredConstituentServiceRecord@set
cv:totalFundingSecuredConstituentServiceRecordxsd:decimal
cv:agenciesWorkedWithConstituentServiceRecord@set
cv:periodCoveredConstituentServiceRecordtext
cv:committeeNameCommitteeRoletext
cv:committeeUrlCommitteeRole@id
cv:membershipRoleCommitteeRoletext
cv:subcommitteesCommitteeRole@set
cv:seniorityRankCommitteeRolexsd:integer
cv:congressCommitteeRoletext
cv:statementSubjectOfficialStatementtext
cv:statementTypeOfficialStatementtext
cv:positionTakenOfficialStatementtext
cv:relatedLegislationOfficialStatement@set
cv:supersedesOfficialStatement@id
cv:electoralYearElectoralHistoryxsd:integer
cv:electoralRaceElectoralHistorytext
cv:electoralResultElectoralHistorytext
cv:electoralMarginElectoralHistorytext
cv:electoralOpponentElectoralHistorytext
cv:senateClassOfficeholderProfiletext
cv:committeeAssignmentsOfficeholderProfile@set
cv:electoralHistoryOfficeholderProfile@set
cv:pageSlugOfficeholderProfile, CandidateProfiletext

Advocacy Organization Properties

PropertyUsed withType
cv:scoringOrganizationLegislativeScorecardtext
cv:legislatorLegislativeScorecardtext
cv:ratingPeriodLegislativeScorecardtext
cv:voteComponentsLegislativeScorecard@set
cv:lifetimeScoreLegislativeScorecardxsd:decimal
cv:priorYearScoreLegislativeScorecardxsd:decimal
cv:scoreScaleLegislativeScorecardtext
cv:endorsingOrganizationOrganizationalEndorsementtext
cv:endorsedCandidateOrganizationalEndorsementtext
cv:officeContestedOrganizationalEndorsementtext
cv:supportingScorecardOrganizationalEndorsementtext
cv:priorEndorsementsOrganizationalEndorsement@set
cv:issuedByPolicyPositiontext
cv:regardingPolicyPositiontext
cv:positionPolicyPositiontext
cv:dateAdoptedPolicyPositionxsd:date
cv:supportingEvidencePolicyPosition@set
cv:representedByMemberConstituencytext
cv:memberCountMemberConstituencyxsd:integer
cv:memberCountAsOfMemberConstituencyxsd:date
cv:memberSectorMemberConstituencytext
cv:geographicScopeMemberConstituencytext
cv:memberStatesMemberConstituency@set
cv:memberDescriptionMemberConstituencytext
cv:funderAnonymousFundingRelationshipxsd:boolean
cv:funderDescriptionFundingRelationshiptext
cv:recipientFundingRelationshiptext
cv:programAreaFundingRelationshiptext
cv:fundingStartDateFundingRelationshipxsd:date
cv:fundingEndDateFundingRelationshiptext

Shared and Evidence Properties

PropertyUsed withType
cv:issueAreaPolicyPlatform, EndorsementReceived, PolicyPositiontext
cv:canonicalUrlall types@id
cv:endorsementDateEndorsementReceived, OrganizationalEndorsementxsd:date
cv:positionSummaryPolicyPlatform, PolicyPositiontext
cv:candidateEndorsementReceived, OrganizationalEndorsementtext
cv:officeholderLegislativeScorecard, VotingRecordtext
cv:claimTextPolicyClaimtext
cv:claimTypePolicyClaimtext
cv:evidenceBasesPolicyClaim, EvidenceBundle@set
cv:evidenceTypeEvidenceBasistext
cv:sourceAuthorityEvidenceBasistext
cv:sourceDateEvidenceBasisxsd:date
cv:excerptEvidenceBasistext
cv:officialRecordUrlEvidenceBasis@id
cv:quantifiedImpactConstituentImpacttext
cv:quantifiedBenefitConstituentImpacttext
cv:factCheckUrlPolicyClaim@id
cv:factCheckResultPolicyClaimtext
cv:impactDescriptionConstituentImpacttext
cv:impactTypeConstituentImpacttext
cv:verificationSourceConstituentImpact, EvidenceBasis@id
cv:verificationDateConstituentImpact, EvidenceBasisxsd:date
cv:reportingAgencyCampaignFinanceTransparencytext
cv:reportingPeriodCampaignFinanceTransparencytext
cv:currentPositionPolicyRecordtext
cv:positionHistoryPolicyRecord@set
cv:consistencyPolicyRecordtext
cv:consistencyNotePolicyRecordtext
cv:keyVotesPolicyRecord@set
cv:keyStatementsPolicyRecord@set
cv:fecReportUrlCampaignFinanceTransparency@id
cv:totalRaisedCampaignFinanceTransparencyxsd:decimal
cv:percentSmallDollarCampaignFinanceTransparencyxsd:decimal
cv:averageDonationCampaignFinanceTransparencyxsd:decimal
cv:uniqueDonorsCampaignFinanceTransparencyxsd:integer
cv:rejectsCorporatePACCampaignFinanceTransparencyxsd:boolean
cv:rejectsPACCampaignFinanceTransparencyxsd:boolean
cv:publicFinancingOptedCampaignFinanceTransparencyxsd:boolean
cv:largestDonorSectorsCampaignFinanceTransparency@set
cv:percentOfRaisingCampaignFinanceTransparencyxsd:decimal
cv:bundleLabelEvidenceBundletext
cv:dateCompiledEvidenceBundlexsd:date
cv:compilerNoteEvidenceBundletext

Usage Examples

Candidate Profile

<script type="application/ld+json">
{
  "@context": {
    "cv": "https://civicschema.org/schema/v1/",
    "schema": "https://schema.org/"
  },
  "@type": "cv:CandidateProfile",
  "@id": "https://example.com/candidates/jane-doe",
  "schema:name": "Jane Doe",
  "cv:officeSought": "U.S. Senate",
  "cv:electionCycle": "2026",
  "cv:electionDate": "2026-11-03",
  "cv:fecCandidateId": "S0XX00000",
  "cv:incumbentStatus": "challenger",
  "cv:campaignWebsite": "https://janedoe.com",
  "cv:canonicalUrl": "https://example.com/candidates/jane-doe"
}
</script>

Legislative Achievement

<script type="application/ld+json">
{
  "@context": {
    "cv": "https://civicschema.org/schema/v1/",
    "schema": "https://schema.org/"
  },
  "@type": "cv:LegislativeAchievement",
  "cv:officeholder": "Jane Doe",
  "cv:achievementTitle": "Rural Broadband Infrastructure Act",
  "cv:achievementType": "enacted-legislation",
  "cv:billIdentifier": "S.1234",
  "cv:enactedDate": "2023-08-15",
  "cv:fundingAmount": 45000000,
  "cv:fundingPurpose": "Rural broadband deployment",
  "cv:districtImpact": "Expands high-speed internet access to 120,000 rural households",
  "cv:canonicalUrl": "https://example.com/officeholders/jane-doe/achievements/broadband-act"
}
</script>

Relationship via canonicalUrl

Evidence types are standalone companions linked to their subject via cv:canonicalUrl, not by modifying the subject type:

{
  "@type": "cv:EvidenceBundle",
  "cv:bundleLabel": "Campaign Finance — Jane Doe 2026",
  "cv:dateCompiled": "2026-01-15",
  "cv:canonicalUrl": "https://example.com/candidates/jane-doe",
  "cv:evidenceBases": [
    {
      "@type": "cv:EvidenceBasis",
      "cv:evidenceType": "fec-filing",
      "cv:sourceAuthority": "Federal Election Commission",
      "cv:officialRecordUrl": "https://www.fec.gov/data/candidate/S0XX00000/",
      "cv:sourceDate": "2026-01-31"
    }
  ]
}