The Pre-Election Filter
How parties select candidates before voters ever see a ballot
Before you vote in a general election, candidates have already survived a gauntlet of primaries, caucuses, and party rules. This pre-filter system determines your actual choices - and it was never mentioned in the Constitution.
CLASS PrimaryElection:
// Primaries are run by state governments
// But rules are set by parties (private organizations)
types = {
CLOSED: "Only registered party members vote",
OPEN: "Any voter can participate",
SEMI_CLOSED: "Party members + independents",
BLANKET: "All candidates, top-two advance (CA, WA)"
}
FUNCTION determine_voter_eligibility(voter, primary_type):
SWITCH primary_type:
CASE CLOSED:
// Must register with party weeks/months ahead
IF voter.party != this.party:
RETURN INELIGIBLE
CASE OPEN:
// Anyone can vote, but only in one party's primary
RETURN ELIGIBLE
CASE SEMI_CLOSED:
IF voter.party == INDEPENDENT:
RETURN ELIGIBLE
ELSE IF voter.party == this.party:
RETURN ELIGIBLE
ELSE:
RETURN INELIGIBLE
// Key issue: Only 27% of eligible voters participate
// These 27% choose options for 100% of votersCaucuses: The Participation Filter
Multi-hour meetings that dramatically limit who chooses candidates
Caucuses require voters to spend hours at a specific location on a specific evening. This dramatically reduces participation compared to primaries, giving outsized influence to those with flexible schedules and strong opinions.
CLASS Caucus:
// Iowa model (Democratic version until 2024)
requirements = {
time_commitment: "2-3 hours minimum",
schedule: "Single evening, typically 7pm",
location: "Must attend precinct location in person",
participation: "Public declaration of preference"
}
FUNCTION run_caucus(precinct):
// Step 1: Attendees physically group by candidate
groups = separate_by_candidate(attendees)
// Step 2: Viability threshold (usually 15%)
FOR each group IN groups:
IF group.size < (total_attendees * 0.15):
// Non-viable - must realign
group.status = "ELIMINATED"
redistribute_supporters(group)
// Step 3: Final count after realignment
// Awarded as "state delegate equivalents"
// Who can realistically participate?
excluded_populations = [
"Workers with evening shifts",
"Parents without childcare",
"People with disabilities",
"Those without transportation",
"Anyone uncomfortable with public declaration"
]
// Iowa 2020: 176,000 caucused out of 2.2M registered
// That's 8% choosing delegates for 100%Delegate Math and Front-Loading
How the calendar and allocation rules shape outcomes
Presidential nominations aren't won by popular vote but by accumulating delegates. Each party has different rules for how delegates are allocated, and states compete to vote early for maximum influence.
CLASS DemocraticDelegates:
// Proportional allocation with 15% threshold
FUNCTION allocate(state_results):
viable_candidates = filter(
results,
candidate => candidate.vote_share >= 0.15
)
// Delegates split proportionally among viable candidates
FOR each candidate IN viable_candidates:
candidate.delegates = round(
state.total_delegates *
(candidate.votes / viable_total_votes)
)
// Candidates under 15% get ZERO delegates
// Even with 14.9% of the vote
CLASS RepublicanDelegates:
// Rules vary wildly by state
allocation_types = {
"Winner Take All": "Plurality wins all delegates",
"Winner Take Most": "Statewide + congressional districts",
"Proportional": "Split by vote share (with threshold)"
}
// Early states required to be proportional
// Later states can be winner-take-all
// This rewards candidates who survive early
CALENDAR_EFFECT:
super_tuesday_delegates = ~35% of total
// Candidates without early momentum drop out
// Many voters never get meaningful choiceChicago Convention Chaos
Party bosses choose Humphrey despite not running in primaries; leads to reform
McGovern-Fraser Reforms
Democrats require primaries/caucuses; binding delegate selection begins
Super Tuesday Created
Southern states coordinate to increase regional influence
Front-Loading Peak
24 states vote by February 5; campaign essentially decided in weeks
Superdelegates and Party Influence
How party officials maintain control despite democratic primaries
Superdelegates are party officials who get convention votes without being elected by primary voters. After 2016 controversy, Democrats reformed but didn't eliminate this system.
CLASS Superdelegates:
// Democratic party only (Republicans don't have this)
PRE_2020_RULES:
total_superdelegates = ~715
percentage_of_total = ~15%
voting_round = "FIRST" // Can tip contested race
// 2016: Clinton had 500+ superdelegates before
// a single vote was cast
POST_2020_RULES:
total_superdelegates = ~750 // Still exist
voting_round = "SECOND" // Only if contested
// First ballot: Only pledged delegates vote
// Second ballot (if no majority):
// Superdelegates can vote, pledged delegates unbound
WHO_ARE_SUPERDELEGATES = [
"All DNC members (~450)",
"All Democratic governors (~25)",
"All Democratic senators (~45-50)",
"All Democratic House members (~210-220)",
"Distinguished party leaders (former presidents, etc.)"
]
FUNCTION assess_influence():
// Even without first-ballot votes, superdelegates:
// - Control party infrastructure
// - Provide endorsements and fundraising
// - Set convention rules
// - Dominate media narrative
RETURN "Reduced but not eliminated influence"Primary Problems and Alternatives
Why the current system produces candidates many voters don't want
Low turnout, front-loading, and closed systems mean a small fraction of ideologically motivated voters choose candidates for the entire electorate. Several states are experimenting with alternatives.
// PROBLEM: Current system's structural issues
current_issues = {
low_participation: "27% turnout in primaries",
ideological_extremes: "Primary voters more partisan than general",
calendar_distortion: "Early states have outsized influence",
party_control: "Rules set by private organizations",
spoiler_effects: "Similar candidates split votes"
}
// ALTERNATIVE 1: Ranked Choice Primaries
CLASS RankedChoicePrimary:
FUNCTION count_votes(ballots):
WHILE no_candidate_has_majority:
last_place = find_lowest_candidate()
redistribute_to_second_choices(last_place)
RETURN winner
// Used in: Alaska, Maine
// ALTERNATIVE 2: Top-Two/Top-Four Primary
CLASS JunglePrimary:
// All candidates on single ballot
// Top finishers advance regardless of party
FUNCTION run(all_candidates):
results = single_ballot_election(all_candidates)
RETURN top_n(results, advance_count) // Top 2 or 4
// Used in: California, Washington, Louisiana
// ALTERNATIVE 3: Open Primaries + RCV
CLASS AlaskaModel:
// Combined: all candidates, all voters, top 4 advance
// General: Ranked choice among top 4
// 2022 result: Moderate Democrat won in Republican state
// Because she was acceptable second choiceSystem Dependencies
Primary systems interact heavily with gerrymandering: in "safe" districts drawn for one party, the primary IS the election. This pushes candidates toward extremes since they only need to win over partisan primary voters, not the general electorate.