Nevada Politician
Per-politician record for the Nevada-politicians shared data layer. Covers legislators (state + federal), statewide constitutional officers, judges, county sheriffs/DAs, mayors, NSHE Regents, and State Board of Education members. Mirrors the NPE legislators-README.md schema where overlap exists; extends with bio/contact/elections/term/sources for non-legislator offices.
JSON Schema draft-2020-12. Raw schema:
/schemas/politician.schema.json
Properties
slug: string (required)- URL-safe identifier. Where the politician exists in NPE legislators-index.json the slug is reused verbatim (e.g. aaron-ford-3993). For scraped non-NPE rows, slug is built as <first>-<last>[-<disambiguator>] with no candidate_id suffix.
candidate_id: integer | null- NV SOS Aurora candidate_id when the politician appears in cf_candidates. Null for officeholders absent from cf_* (judges, sheriffs, mayors who never filed campaign finance with NV SOS, current SoS/Treas/Ctrl which have zero rows).
name: string (required)- No description.
first_name: string- No description.
last_name: string- No description.
honorific: string- Pre-name title used in display (Sen., Rep., Gov., Justice, Sheriff, Mayor, etc.). Optional.
suffix: string- Generational suffix (Jr., Sr., II). Optional.
party: string (required)- Party label. Mirrors NPE / NV SOS Aurora taxonomy. Judicial offices and many local offices are 'Nonpartisan' by NV statute.
office: any (required)- Currently-held office. For politicians with multiple held offices, this is the latest/highest; full history goes in offices_held[].
offices_held: array- Chronological history of offices held, including the current one. Earliest first.
term: object- Current term details. start_date/end_date may be null for officeholders mid-term where the originating filing isn't in our data.
start_date: string- No description.
end_date: string- No description.
term_length_years: integer- No description.
current: boolean (required)- No description.
notes: string- Editorial note about the term — departures, special-session participation, suspension, censure, etc.
elections: array- Electoral history. Populated from NV SOS election results when scraped (Phase 2+) and from cf_candidates for filing-only context.
Each array element:
year: integer (required)- No description.
type: string (required)- No description.
office: string (required)- No description.
jurisdiction: string- No description.
result: string (required)- No description.
votes_received: integer | null- No description.
votes_total: integer | null- No description.
vote_percent: number | null- No description.
opponents: array- No description.
Each array element:
name: string- No description.
party: string- No description.
votes_received: integer | null- No description.
source_url: string- No description.
jurisdiction: string- Filing jurisdiction. 'NV SOS' for state-level, 'FEC' for federal, '<county> County' for county, '<city>' for city.
city: string- Politician's mailing city per NV SOS Aurora. May be 'CONFIDENTIAL' (e.g. judges).
state: string- No description.
money_in: object- Campaign finance receipts. Mirrors NPE legislators schema. Populated from gnomey.cf_contributions joined to cf_candidates by candidate_id.
total_received: number | null- No description.
n_contributions: integer | null- No description.
first_contribution_date: string | null- No description.
last_contribution_date: string | null- No description.
top_donors: array- No description.
Each array element:
contributor_id: integer | null- No description.
name: string (required)- No description.
total: number | null- No description.
count: integer | null- No description.
donor_concentration_hhi: number | null- No description.
top1_donor_share: number | null- No description.
benford_chi_square_vs_nv_baseline: number | null- No description.
money_out: object- Campaign finance expenditures. Mirrors NPE legislators schema.
total_spent: number | null- No description.
n_expenditures: integer | null- No description.
to_registered_lobbyists: object- No description.
total: number | null- No description.
n_payments: integer | null- No description.
payments: array- No description.
Each array element:
lobbyist_slug: string (required)- No description.
amount: number | null- No description.
date: string | null- No description.
legislative: object- Bill sponsorships and roll-call votes. Only populated for state legislators (and federal members where NPE has data); empty/null for non-legislator offices.
session: string- e.g. '83rd 2025' for the most recent session represented in this record.
sponsored_bills: array- No description.
vote_count: integer- No description.
votes: array- No description.
Each array element:
bill_label: string (required)- No description.
bill_id: integer | null- No description.
chamber: string (required)- NELIS chamber label as-is (e.g. 'Assembly', 'Senate', 'Assembly (As Introduced)', 'Joint Committee on...'). Normalized downstream by the renderer.
vote: string (required)- No description.
result: string- No description.
date: string- No description.
name_at_source: string- No description.
vote_key: string | integer | null- No description.
committee_assignments: array- No description.
Each array element:
committee: string (required)- No description.
role: string- e.g. 'Chair', 'Vice Chair', 'Member'
session: string (required)- No description.
federal_legislative: object- Federal Congress roll-call votes + sponsorships. Populated for NV's US Senate + US House delegation. Separate from state 'legislative' (NELIS). Sources: api.congress.gov (House vote list + bill metadata), clerk.house.gov XML (House member-vote details), senate.gov XML (Senate per-vote details). Each vote row carries source_url back to the primary-source XML.
congress: string- e.g. '119th 2025-2026' for the current Congress represented in this record.
chamber: string- Which chamber the member sits in for this Congress.
bioguide_id: string- Library of Congress bioguide identifier (e.g. 'A000369' for Mark Amodei).
sponsored_bills: array- Bill labels (e.g. 'H.R. 3424', 'S. 5') the member sponsored.
cosponsored_bills: array- No description.
vote_count: integer- No description.
votes: array- Per-vote records. Truncated to first 200 in published JSON; full record lives at data/raw/congress-votes/<bioguide>.json.
Each array element:
chamber: string (required)- No description.
congress: integer | string- No description.
session: string | integer- No description.
rollcall_num: string | integer | null- House roll-call number (clerk.house.gov)
vote_number: string | integer | null- Senate vote number (senate.gov)
legislation_number: string | null- Bill identifier like 'HR 3424' (House) — Senate uses vote_title for context.
vote_question: string | null- No description.
vote_question_text: string | null- Senate equivalent of vote_question.
vote_type: string | null- No description.
vote_result: string | null- No description.
vote_result_text: string | null- No description.
question: string | null- No description.
vote_title: string | null- No description.
vote_desc: string | null- No description.
vote_document_text: string | null- No description.
action_date: string | null- No description.
vote_date: string | null- No description.
vote: string (required)- Member's vote: 'Yea' | 'Nay' | 'Present' | 'Not Voting' | 'Excused' (and Senate variants).
source_url: string (required)- Primary-source XML: clerk.house.gov/evs/<year>/roll<n>.xml or senate.gov/legislative/LIS/roll_call_votes/...xml
api_url: string | null- api.congress.gov backing URL (House only).
committee_assignments: array- No description.
Each array element:
committee: string (required)- No description.
role: string- No description.
congress: string (required)- No description.
auditor_flags: object- Pass-through of NPE auditor outputs. Research leads only; verify before publishing claims.
recusal_findings: array- No description.
quid_pro_quo_chains: array- No description.
revolving_door: array- No description.
donor_concentration: array- DOJ HHI-threshold concentrated-funding flags.
state_contractor_donor: array- Vendors paid by state agencies who also donated to this candidate.
judicial: object- Judicial-officer fields (Supreme Court, Court of Appeals, District Court, Justice/Municipal). Only populated for judges.
court: string- e.g. 'Nevada Supreme Court', 'Nevada Court of Appeals', 'Eighth Judicial District Court'
department: string- Department / seat number where applicable.
appointed_or_elected: string- No description.
predecessor: string- No description.
judicial_canons_complaints: array- No description.
Each array element:
year: integer- No description.
summary: string- No description.
outcome: string- No description.
source_url: string- No description.
executive: object- Executive-branch fields (Governor, statewide constitutional, mayors, sheriffs). Only populated for executive offices.
key_appointments: array- Notable boards/commissions/appointments this executive has staffed.
Each array element:
appointee: string- No description.
position: string- No description.
date: string- No description.
source_url: string- No description.
policy_initiatives: array- No description.
Each array element:
label: string- No description.
status: string- No description.
year: integer- No description.
source_url: string- No description.
biography: object- Manually curated biographical content. Every field cited; LLM-drafted text is acceptable but every claim must point to a public record.
summary_md_path: string- Relative path to bios/<slug>.md narrative content.
birth_date: string | null- No description.
birthplace: string- No description.
education: array- No description.
Each array element:
institution: string (required)- No description.
degree: string- No description.
year: integer | null- No description.
field: string- No description.
career_history: array- No description.
Each array element:
role: string (required)- No description.
organization: string (required)- No description.
start_year: integer | null- No description.
end_year: integer | null- No description.
military_service: string- Branch + years if applicable, citing source.
religion: string- Per the politician's own public statements; cite source.
predecessor_note: string- Short prose noting the immediate predecessor in the current office. Sourced from Ballotpedia.
contact: object- Public office contact info only. No home addresses or family-member private info.
office_phone: string- No description.
office_email: string- No description.
official_website: string | null- No description.
campaign_website: string- No description.
social_media: object- No description.
twitter: string- No description.
facebook: string- No description.
instagram: string- No description.
linkedin: string- No description.
tiktok: string- No description.
youtube: string- No description.
bluesky: string- No description.
mastodon: string- No description.
truth_social: string- No description.
mailing_address: string- Office mailing address only — never personal residence.
salary: object- Statutory salary attached to the office. Cite the NRS section.
annual_usd: number | null- No description.
nrs_citation: string- e.g. 'NRS 218A.300'
as_of_year: integer- No description.
endorsements: array- Curated endorsement list with source citations. Manual curation; no DB source today.
Each array element:
endorser: string (required)- No description.
endorser_type: string- No description.
election_year: integer (required)- No description.
office_endorsed_for: string- No description.
source_url: string- No description.
date: string- No description.
issue_positions: array- Politician's stated positions on policy issues. Each position cites a public statement (press release, official website, recorded speech, voting record summary). Manual curation.
Each array element:
issue: string (required)- e.g. 'Energy', 'Cannabis', 'Public Records'
position: string (required)- Brief statement of position. ≤200 characters; verbatim quote preferred.
source_url: string (required)- No description.
date: string- No description.
photo: object- No description.
local_path: string | null- Repo-relative path to locally-cached headshot, e.g. 'images/politicians/<slug>.jpg'. Null when no headshot has been captured locally yet.
source_url: string | null- Original URL the photo was scraped from. Must be official .gov source.
license: string | null- e.g. 'public domain (US gov work)', 'fair use — newsworthiness'.
placeholder: boolean- True if no real photo is available; renderer falls back to initials-on-party-color tile.
references: array- Citation list rendered at the bottom of every politician page.
Each array element:
label: string (required)- Short human-readable label (e.g. 'NV SOS Aurora — Aaron Ford candidate filing 2022 cycle').
url: string (required)- No description.
accessed: string (required)- No description.
kind: string- No description.
data_quality: object (required)- No description.
last_verified: string (required)- No description.
completeness: object (required)- No description.
finance: boolean (required)- No description.
voting: boolean (required)- No description.
bio: boolean (required)- No description.
contact: boolean (required)- No description.
endorsements: boolean (required)- No description.
federal_voting: boolean- True when federal_legislative.votes[] is populated. Added by etl_from_congress.py for NV federal delegation members.
stub_badge: boolean- True when fewer than 70% of completeness flags are true. Renderer surfaces a 'stub' badge.
stale_banner: boolean- True when last_verified is older than 120 days. Renderer surfaces a 'stale verification' banner.
sources: array (required)- Every source path or URL that contributed to this record (NPE JSON path, scraper output, manual bio file, cf_* table reference, etc.).
rescue_run_date: string- Date this record was rescued from stale upstream (e.g. NPE legislators-index had vote_count=0).
rescue_reason: string- Free-text explanation of the rescue intervention.
federal_voting: boolean- True when federal_legislative.votes[] is populated. Added by etl_from_congress.py.
pharma_payments: object- CMS Open Payments cross-reference for physician-politicians. Populated by populate_pharma_payments.py from cms_open_payments.gnrl_* tables.
is_physician: boolean- No description.
total_amount: number | null- No description.
total_payment_count: integer | null- No description.
year_breakdown: array- No description.
Each array element:
year: integer- No description.
count: integer | null- No description.
amount: number | null- No description.
_generated_at_utc: string- Stamped by etl_from_npe.py at write time.