Synthetic Polling · Method

How a Civly poll prediction is built

Eight steps from voter sample to prediction. Civly combines what our AI voters say with everything else known about the race: public polls, past results, race ratings, prediction markets and money. Past races decide how much each input counts.

8
steps, sample to prediction
5,000
likely voters per sample
3
AI models, three companies
5 + 4
forecasts and adjustments

The eight steps

Past races go through steps 5 and 6 to find each feature's weight. This year's data then runs through the model once, with those weights, in step 7. Switch the view to follow each path, and select any step to jump to it.

This year's race: the sample and the AI voters feed the model, and the model runs once in step 7 with weights already learned from past races.

Area

A piece of a race's territory with its own reported results: a county in a statewide race, or a group of neighboring precincts in a district or local race. Each area has at least 100 sampled voters.

Margin

The lead between the two major candidates, in points. R+8 means the Republican is ahead by 8. D+2 means the Democrat is ahead by 2.

Feature

One input to the model, prepared as a number: the poll average, the AI voters' margin, the incumbent's edge.

Backtest

Running the model on past races where the real result is known, to measure how far off it is.

Example race

One made-up race, followed through every step

A 2026 governor's race between Brooks, the sitting Republican governor, Alvarez, the Democrat, and Chen, the Libertarian. Every number in it is invented, and each one follows from the step before. The teal panels on this page follow it.

Brooks (R), incumbent Alvarez (D) Chen (L)
1
Step 1

Inputs

Every input goes to one or more places: picking and weighting the sample, the AI voters' profiles, the rules that prepare the features, or the full model itself. Filter by where each one goes.

Age, county, district, party on file, elections voted

Each voter, also added up by areaSampling and weightingAI voter profilesArea makeup

Picks and balances the sample, tells each AI voter who they are, and describes each area.

Source: State voter records

Gender and household income

Each voterAI voter profiles

Tells each AI voter who they are.

Source: Data partner lookup; gender first from first names

Civly Turnout Score

Each voterPicking likely voters

Decides who is in the sample.

Source: Our model

Estimated party

Each voterAI voter profiles

Gives a party lean to voters with none on file.

Source: Our model

Race information sheet

Whole raceAI voter polling

Tells each AI voter what is happening this year and where each candidate stands.

Source: Debate and campaign news coverage, candidate sites, government figures

AI voters' answers

Each voter, added up by areaFull model

Our own forecast of the race.

Source: Three AI models from three companies

Public polls

Whole raceFull model

Outside forecasts of the race.

Source: Wikipedia, VoteHub, RealClearPolitics, pollster releases

Pollster records

Each pollsterPoll rules

Corrects each poll for its pollster's usual lean.

Source: Past polls against past results, FiveThirtyEight grades

Past results

Each areaFull model

Where each area usually votes.

Source: MIT Election Data and Science Lab, OpenElections, state certifications

State poll change since the last election

Whole statePast results feature

Shifts past results by how far the state's polls have moved since the last election.

Source: Built from polls

National mood

Whole nationFull model

The national swing this year.

Source: National generic-ballot polls

Incumbency

Whole raceFull model

Sitting officeholders start ahead.

Source: Past results

Fundraising

Whole raceFull model

Money raised by each side.

Source: FEC, state campaign finance offices

Ad spending

Whole raceFull model

Ads bought by each side.

Source: Google political ad archive, FCC political files, FEC

Race ratings

Whole raceFull model

Expert calls on the race.

Source: Cook Political Report, Sabato's Crystal Ball, Inside Elections

Prediction markets

Whole raceFull model

What bettors expect.

Source: Kalshi, Polymarket

Third-party polls and results

Whole raceThird-party candidates' share

Polls tend to overstate third-party candidates.

Source: Past polls against past results

Four inputs in detail

Civly Turnout ScoreOur model of each voter's chance of voting, used to pick the likely voters

The Turnout Score gives each voter a chance of voting, from 0% to 100%. It is a machine-learning model (gradient-boosted decision trees), so it picks up combinations, such as young voters who voted in 2024 but skipped 2022.

It reads, for each voter: whether they voted in each of the last four general elections, the last three odd-year elections and this year's primary; how long since their first and last vote; age; party; gender; how long they have been registered; county; whether they last voted in person or by mail; and registration status.

It learns from past elections where we know who voted, using only records from before each one. Its percentages are checked so that 70% means seven in ten such voters actually vote. It is graded on the 2022 midterm, with a copy trained without 2022, and must call more voters right than the simple rule of "voted before" and rank them better.

84%voters called right by the Turnout Score
78%called right by the "voted before" rule

Those figures are from the 2024 general election in nine states (full analysis). The score is approved in 11 states. Any other state needs it trained and its grades approved first. In past-race tests it uses only records from before that race.

Estimated partyA party lean for voters with no party on file

Our own model of a voter's chance of being a Democrat or a Republican, for voters with no party on file. It is the same kind of model as the Turnout Score.

It reads, for each voter: age; gender; how long they have been registered; which elections and primaries they voted in, and whether by mail; political giving, by the party of the committees they gave to; their ZIP code's income, college share, median age, home ownership and population; and the 2024 result in their precinct, their part of the district and their county.

66–72%voters called right by estimated party
60–64%called right by "vote like your county"

It learns from states where voters register by party, and is graded on a state it never saw. A voter between 40% and 60% likely to be a Democrat gets no lean. The result goes into the AI voter's profile as an estimate ("probably leans Republican"), and it stays in the profile only if it improves accuracy on past races. It is approved in five states. Before wider use it is also graded on North Carolina voters who register with a party but never vote in primaries, the voters most like those who need it.

Voter details in the full modelWhy the model works with voters added up by area

Ballots are secret, so no one learns how a single voter voted. Results are reported for areas: counties and precincts. So the full model works with voters added up by area.

Voter details enter it as each area's makeup: the share of voters over 65, the share of new voters, the share with no party on file, and how each changed since the last election. They are tested like every other feature. The same details also reach the model through the AI voters, who answer as those people.

Third-party candidatesWhy their poll numbers are trimmed

Polls tend to overstate third-party candidates. Some people who name one in a poll switch to a major candidate or stay home. Pew Research found that third-party presidential candidates from 1968 to 2016 usually finished below their early poll numbers.

How large the drop is in state and local races is less studied, so we measure it on past races by comparing third-party poll figures with results. The keep rate we test runs from 30% of the poll figure to all of it. If past races show no drop, the rate comes out near 100% and nothing is cut.

Example race
Everything that goes in for Brooks, Alvarez and ChenSteps 2 to 8 use each of these
InputExample race
Voter records2.1 million registered voters. Age, county, district, party on file (72%), voting history back to 2012. No gender or race.
Data partner lookupGender and household income, for the voters it can match
Civly Turnout ScoreEach voter's chance of voting, from our model
Estimated partyA party lean for voters with no party on file, from our model
Race information sheetThe year's events, the race's main issues and where Brooks, Alvarez and Chen stand, each fact with its source and date
Public pollsPoll A R+4, Poll B R+10 (paid for by the Brooks campaign), Poll C R+6. Chen (L) polls at 6%.
Pollster recordsPoll A's pollster: 12 past polls in the state, 1.8 points too Democratic on average. Polls B and C: no past record in the state.
Past results2018 Governor R+14, 2020 President R+16, 2022 Governor R+18, 2024 President R+15
State poll changePolls of the state's other races are 4.2 points more Democratic than its 2024 result
National moodThe nation is 2 points more Democratic than in 2024
IncumbencyBrooks (R) is the sitting governor
FundraisingBrooks is 10 points ahead in share of money raised
Ad spendingBrooks is 5 points ahead in share of ad spending
Race ratingLikely Republican
Prediction marketsBrooks has an 80% chance to win
Third-party historyIn past races, third-party candidates finished at about 60% of their poll figure
Past races to learn fromEvery past midterm and presidential race we have data for, in every state
2
Step 2

Sampling

We draw 5,000 likely voters from the state's voter records, with at least 100 in every area, add the details we can find for each one, and weight them to match the state.

Who is in the sample

Likely voters are picked with the Civly Turnout Score from step 1. Every area gets at least 100 sampled voters, because the full model learns from areas. For a statewide race the areas are counties, with small neighboring counties grouped. For a district or local race they are groups of precincts.

Their details

From the state's records: age, county, district, party on file (the party on the voter's record) and how many of the last four general elections each person voted in.

From a data partner: gender and household income. Gender comes first from first names, using Social Security name lists. Race is held out until our own estimate passes a test against North Carolina's records, where voters state their race.

Weighting

The sample is weighted so each county has its right share. Then the mix of party and age is matched to the full list of likely voters it was drawn from.

Small areas get extra voters, and weighting puts each area back at its true size, so the overall numbers stay the same.

Example race

From 2.1 million registered voters to a sample of 5,000

2.1 million registered voters
Civly Turnout Score
1.3 million likely voters
random draw, at least 100 in each of the state's 30 counties
5,000 sampled voters
Details found for the 5,000
Age, county, district, party, elections voted
5,000 (100%) · state records
Gender
4,600 (92%) · first names 4,300, data partner 300
Estimated party, for the 1,400 with no party
1,050 (75%) · 350 toss-ups get no lean
Household income
2,850 (57%) · data partner
Race
Not used
How a small county is kept at its true size
0.6%Hill County's share of the state's likely voters: 30 of 5,000 by size
→
100voters drawn, the minimum for any area, so the model can learn from it
→
0.3 eachweight per Hill County voter, so the county counts as 0.6% again

The sample is weighted so counties, party and age match the 1.3 million likely voters.

3
Step 3

AI voter polling

Each sampled voter becomes an AI voter with a short profile built from their details. Every AI voter in a race reads the same race information sheet, and three AI models from three different companies answer for all of them.

Example race
One AI voter's profile
Age
58
Gender
Male
Household income
$75,000 to $99,999
Party
None on file, probably leans Republican (estimated)
Voting record
Voted in 4 of the last 4 general elections
The race information sheet
This year
A 2026 midterm, inflation at 3.1%
Main issues
Taxes, schools, roads
Candidates
Where Brooks, Alvarez and Chen stand
Who reads it
The same sheet for all 5,000
Three AI models each answer as all 5,000 voters

The race information sheet

Without a sheet, an AI voter knows only their profile and the names on the ballot, so they answer from the state's usual lean and miss what is different about the year. The sheet is one short page of facts per race, 120 to 340 words, placed between the profile and the question.

On the sheet

✓
This yearWhether it is a midterm or a presidential year and who is president, the biggest national events, and the latest inflation and gas price figures from government and AAA releases before the poll.
✓
The race's main issuesThe topics the candidates debate and campaign on, as reported in debate and news coverage, listed without a ranking or percentages. National issue rankings are not used.
✓
Each candidateParty, current role, and a few plain sentences on where the candidate stands: what they said, voted for, signed, sponsored or did. Every candidate on the ballot appears, third parties included, with the same kind of facts for each.

Left off the sheet

✕
Anything that shows how the race is goingPolls, approval ratings, betting odds, race ratings, money raised or spent, endorsements, past vote shares and results. Polls, ratings, markets and money are already features in the full model. On the sheet they would count twice, and the AI voters would repeat them.
✕
OpinionFacts only, in neutral words. A candidate's unchecked claim about an opponent is left off. Where sources disagree, the sheet gives both or leaves the point out.
✕
Pronouns for candidatesEach candidate is named every time.

Sources and dates

Every fact has a source link and a date, from a page we opened. A fact seen only in a search summary is dropped. Every fact is dated before the poll. For a past race it is dated before that election, and pages that report how the race ended are excluded.

An automatic check

A check reads each sheet before any AI voter sees it. The run does not start if a sheet mentions a banned topic, leaves out a candidate, uses a pronoun for a candidate, or falls outside 120 to 340 words.

What the AI voters are asked

Every AI voter is asked by three AI models from three different companies, and their answers are combined. Using three keeps one model's habits from driving the result.

This year's races

Each candidate is rated from 0 to 10, and the voter can say they are undecided.

The latest presidential and midterm races

Voter records show whether each person voted, and ballots are secret, so who they voted for is unknown. We ask the AI voters about both races and compare their totals with the real results. That shows how far off these exact voters are. In a midterm year the midterm is the closer test.

Past races

Separate samples are drawn as of each past election and given the same details as this year's poll, including a sheet for that year when this year's poll has one.

Example race

What the AI voters said

QuestionAI votersReal resultMiss
2026 Governor (this year)R+24, 0.9% undecidedNot known yet
2024 President (same voters)R+27R+1512 too Republican
2022 Governor (same voters)R+32R+1814 too Republican
2022 Governor (past sample)R+33R+1815 too Republican
2020 President (past sample)R+27R+1611 too Republican
2018 Governor (past sample)R+27R+1413 too Republican

Comparing their answers with real results shows how far off they usually are. These AI voters came out 13 and 15 points too Republican in the two past midterms, so step 4 takes 14 points off this year's R+24.

Turning ratings into votes

A 0 to 10 rating has to become a vote. It can be split by the ratings, given entirely to the top choice, or something in between. Step 6 tests which works best on past races. Splitting gave third-party candidates 18% to 41% in tests, against real results of 2% to 3%. Try it with one voter.

One AI voter's ratings
8
2
5
Rule Split by rating
Split by ratingTop choice only
How this voter's vote is counted
Brooks (R)
53%
Alvarez (D)
13%
Chen (L)
33%

With the ratings split, a voter who prefers Brooks still hands Chen a third of a vote. Added up over thousands of voters, that inflates third-party candidates.

Undecided voters

We measure it two ways. Each AI voter is asked directly. And since voters rate the candidates on a 0 to 10 scale, voters near the middle can count as undecided. AI voters choose "undecided" far less often than people in real polls, so the middle of the scale may measure it better. Which band counts as the middle is chosen by comparing with the undecided share in past polls. Election results have no undecided, so polls are the only comparison.

012345678910
Strongly againstMiddle of the scale counts as undecidedStrongly for
4
Step 4

The full model

One model for everything. The full model is a regression, a standard statistical method that learns from past races how much each feature should count. Every new data source is added as another feature, and client polls and Command Center polls use the same model.

What the model learns from

Each row is one area of one past race. Ballots are secret, so we never learn how a single voter voted, but results are reported for every county and precinct. Splitting races into areas turns a few hundred past races into thousands of rows. A race's prediction is its areas added up by number of voters.

Past raceAreaAI votersPast resultsPollsRatingIncumbentOver 65…Real result
2022 GovernorCounty 1R+30R+26R+16R+8Yes24%…R+28
2022 GovernorCounty 2R+3R+2R+16R+8Yes18%…D+1
2022 GovernorCounty 3R+14R+12R+16R+8Yes21%…R+15
…
2018 GovernorCounty 1R+25R+23R+10R+5No23%…R+24

Made-up numbers. Polls, rating and markets cover the whole state, so every county in a race gets the same value. AI voters, past results and area makeup differ by county.

Past raceAreaAI votersPast resultsPollsRatingIncumbentOver 65…Real result
2022 State House 12Precincts 1 to 6D+2D+5NoneNoneNo19%…D+4
2022 State House 12Precincts 7 to 11R+9R+11NoneNoneNo27%…R+10
…

Made-up numbers. Down-ballot races rarely have polls, ratings or markets. Their model learns from past races that also lacked them.

Different kinds of races

Each kind of race has its own model, because each has different features available. A state legislative race rarely has a poll, so its model learns its weights from past races that also had none. Each kind also has a midterm and a presidential version.

ExamplesSenate, governor, other statewide offices
Areas inside a raceCounties, small ones grouped
Usually hasEverything: polls, ratings, markets, money, ads
Learns fromSimilar statewide races, same state first
ExamplesU.S. House, state legislature
Areas inside a raceGroups of precincts
Usually hasPast results, incumbency, money, sometimes polls. Markets are usually missing, and polls for most legislative races.
Learns fromSimilar district races, same state first
ExamplesCounty, city, judicial
Areas inside a raceGroups of precincts
Usually hasPast results, incumbency, and money where reported. Polls, ratings and markets are usually missing.
Learns fromSimilar local races, same state first

The features

Forecasts 5

Each one, on its own, already predicts the margin: the polls might say R+6 and the AI voters R+10. The model takes a weighted average of the five, and the weights add to 100%.

  • AI votersTheir result, minus their usual miss on past races
  • Public pollsThe weighted average of the polls, after the poll rules
  • Past resultsRecent elections averaged, then moved by the state's poll change
  • Race ratingThe experts' rating, converted to points
  • Prediction marketsThe betting win chance, converted to points

Adjustments 4 + area makeup

Each pushes the margin by some points: being the incumbent might be worth 1 point. How many points each one is worth is learned from past races too.

  • IncumbencyWhether a candidate holds the office now
  • National moodHow far the nation has moved since the last election
  • FundraisingThe gap in each side's share of money raised
  • Ad spendingThe gap in each side's share of ad spending
  • Area makeupEach area's share of voters over 65, new voters and voters with no party on file, and how each changed. A county that gained many new voters might move a point or two from its past results.

Rules that prepare the features

These rules turn raw figures into feature values. The size of each one is learned from past races in step 6, within the range listed there.

AI votersTheir result minus their usual miss: their average miss on the state's past races of the same type, midterm or presidential.
Pollster leanEach poll is corrected by its pollster's average miss in the state's past races. A short record is pulled toward zero. If a record counts half after 10 polls, a pollster with 12 past polls gets 12 / (12 + 10) = 55% of its own average.
Paid pollsA poll paid for by a campaign or party is moved toward the other side by a set number of points.
Poll age and sizeEach poll's weight halves every few weeks and grows with how many people it asked. The poll forecast is the weighted average of the corrected polls.
Past resultsA weighted average of the last four general elections, moved by how far the state's polls in other races have shifted since the last election.
Race ratingConverted to points on a fixed scale.
Toss-up 0Lean 4Likely 8Safe 15
Prediction marketsThe win chance converted to points, so 80% is about 9 points.
Third-party candidatesTheir share is set separately from the margin: their poll figure times a keep rate, learned by comparing past third-party polls with results.
Example race

How the three polls become one forecast

The polls go through four rules: the pollster's usual lean, the lean of paid polls, the poll's age and its size. Move a rule to see the poll average change. The same settings feed the prediction in step 7.

1 week12 weeks
0 points8 points
5 polls30 polls
PollResultPollster's usual leanPaid-poll leanAdjustedWeeks oldPeople askedWeight
AR+4Understates R by 1.0NoneR+5.0160039%
BR+10No recordBrooks campaign: 3R+7.0280041%
CR+6No recordNoneR+6.061,00020%
AverageR+6.0100%
Example race

Every feature, from starting figure to the value that goes in

FeatureStarting figureRule appliedFeature value
AI votersR+24Minus the midterm miss: (13 + 15) / 2 = 14R+10
Public pollsR+4, R+10, R+6The poll rules aboveR+6.0
Past resultsR+16.2Moved 4.2 points toward Democrats, the state's poll change since 2024R+12
Race ratingLikely RepublicanFixed scale: likely = 8 pointsR+8
Prediction markets80% to winWin chance converted to pointsR+9
IncumbencyBrooks is the incumbentYes or noYes
National moodNation 2 points toward DemocratsAs measuredD+2
FundraisingBrooks 10 points aheadAs measured+10
Ad spendingBrooks 5 points aheadAs measured+5
Area makeupCounty 1: 24% over 65, 3% new votersChange since 2022, per countyVaries by county

Most features need one step before they go into the model. The AI voters said R+24, but they usually come out 14 points too Republican in midterms, so 14 points are taken off and they go in as R+10.

5
Step 5

Backtesting

Backtesting runs the model on past races where we know the real result. It shows how much each feature should count and how accurate the model is.

Midterm and presidential versions

Each kind of race has a midterm version, which learns from the last two midterms, and a presidential version, which learns from the last two presidential elections. Midterm voters are mostly older and more regular, and the president's party usually loses ground.

Learning from similar races

A race learns from the past races most like it. A state house race in New York learns from races like it, and a rural Texas race from races like that one. Similar means, in order:

FirstSame stateSame election rules, calendar and ballot
SecondSame officeA state house race learns from state house races
ThirdSimilar districtSimilar partisan lean, urban or rural mix, and size
FourthSame situationOpen seat or incumbent running, midterm or presidential year

How many similar races to use (100, 300 or 1,000) is a setting in step 6. Too few and the weights are noisy. Too many and they come from places that behave differently.

Fairness rules

A backtest only means something if the past races are run the way this year's race will be. Seven rules keep it fair.

1
AI voters see the same details in past races as this yearOtherwise the past test measures a different setup.
2
When this year's races have a race information sheet, each past race gets one for its own year, built only from pages published before that electionOtherwise the AI voters' usual miss is measured on a different kind of answer.
3
Likely voters for a past race are picked only from records before itIn a real forecast nobody knows yet who will vote.
4
A past race needs records reaching back two earlier general electionsOtherwise its likely voters can't be picked fairly.
5
A past race is left out for any AI model that already knows its resultRemembering the answer isn't a test.
6
Each past race is graded with weights learned from the other racesA race used to set the weights would look perfect.
7
Some past races are held back and graded once, at the very endShows how the model does on races it has never seen.
Example race

The midterm model on past midterm races

Past raceModel predictedReal resultMiss
This state, 2022 GovernorR+16.4R+18.01.6
State B, 2022 SenateD+2.0D+5.13.1
State C, 2018 GovernorR+3.5D+1.24.7
State D, 2018 SenateR+9.0R+4.05.0
… every other past midterm race
Average miss4.5 points

The same model with the same features. Each past race is split into its counties, and each county is one row with that race's own figures. The model learns from the 300 past races most like this one, each graded with weights learned from the other races. Its average miss is 4.5 points.

6
Step 6

Weights, settings and sensitivity

Two layers work together. The search picks a set of settings to try. The regression finds the best weight for each feature given those settings. The model then predicts every past race, and its average miss is the score. The try with the smallest miss wins.

Layer 2: the searchpicks a set of settings to try (how fast polls lose weight, the lean of paid polls, …)
Layer 1: the regressionfinds the best weight for each feature, given those settings, each within its range
Scorethe model predicts every past race, and its average miss is measured
↻The search uses each score to pick the next try. Both layers use past races only. This year's race comes in at step 7.

Layer 1: the regression finds the weights

Each weight has a range. The ranges are limits: the regression looks for each weight only inside its range, so no feature can take an absurd weight. The teal marks show what the search chose for the example race.

AI voters, minus their usual missForecastNew and untested, so past races decide anywhere from none to all
30%0%100%
Public polls, after the poll rulesForecastPolls can be thin or off
45%0%100%
Past results, moved by the poll changeForecastDown-ballot races often have little else
15%0%100%
Race ratingForecastExpert calls, coarse but stable
5%0%100%
Prediction marketsForecastOnly available from 2024
5%0%100%
IncumbencyAdjustmentCovers no edge up to a large one
1 point0 points6 points
National moodAdjustmentSome states swing less than the nation, some more
0.4 times0 times1.5 times the national swing
FundraisingAdjustmentMoney often follows a lead, so its own effect may be small
0.202 points per 10-point gap
Ad spendingAdjustmentSame reason as fundraising
0.202 points per 10-point gap
Area makeupAdjustmentLets past races show whether a changing electorate matters
00.3 points per 1-point change in a share

Layer 2: the search picks the settings

The settings are the choices the regression can't make itself. Each try re-scores answers we already have. Profile details and the race information sheet are the exceptions, because each needs its own run of the past races first.

SettingRange testedWhyExample pick
How many similar past races each model learns from100, 300 or 1,000, same state firstToo few is noisy, too many brings in places that behave differently300
How much each past election countsLast four general elections, 0% to 100% each, adding to 100%Tests whether recent or same-type elections predict better–
How fast a poll loses weightHalf its weight after 1 to 12 weeksFrom "only last week counts" to "the whole fall counts"3 weeks
When a pollster's own record counts halfAfter 5 to 30 past pollsA short record can be luck10 polls
Lean of polls paid for by a party or campaign0 to 8 points toward the sponsorCovers no lean up to a large one3 points
Adjust an old poll by its pollster's later polls firstYes or noAn old poll misses what has changed since–
Third-party candidates keep30% to 100% of their poll figureThey usually finish below their polls60%
Ratings into votesSplit by rating, top choice only, or in betweenSplitting gave third parties 18% to 41% against real results of 2% to 3%–
Undecided band on the 0 to 10 scaleOnly 5, 4 to 6, or 3 to 7Compared with past polls' undecided–
Unrealistic crossoverLowers the AI voters' weight in that race, or notAI voters sometimes stick to their party more than real voters do–
Profile detailsWith or without gender, income, elections voted, estimated partyEach needs its own run of the past races first–
Race information sheetWith or withoutNeeds one run of the past races, each with a sheet for its own year–
Lining up the cross tabsOutside figure counts 0% to 100%Half and half until tested–

Sensitivity: how much the prediction depends on each assumption

After the weights and settings are chosen, each one is moved across its range while the rest stay put, and the prediction is recomputed. The method section of the report shows how far the predicted margin moves with each.

Example race

Move one setting, keep the rest

Each bar runs from the prediction at one end of the setting's range to the other. The teal line is the prediction at the current settings, which you can change in step 7.

7
Step 7

Final prediction run

With the weights and settings chosen, the model runs once on this year's feature values: this year's AI voter answers, the current polls and the rest of the race data. 2026 is a midterm, so it uses the midterm model.

Example race

Move the settings and watch the prediction

The prediction starts at the settings the search chose. The sliders cover the ranges tested in step 6, and the other forecast weights keep their proportions when the AI voters' weight moves.

15%45%
0 points8 points
1 week12 weeks
5 polls30 polls
30%100%
ForecastThis yearWeightAdds
AI votersR+10.030%3.0
Public pollsR+6.045%2.7
Past resultsR+12.015%1.8
Race ratingR+8.05%0.4
Prediction marketsR+9.05%0.5
Blend100%R+8.4
AdjustmentThis yearSizePoints
IncumbencyRepublican incumbent1 point+1.0
National moodNation 2 points toward Democrats0.4 times−0.8
FundraisingRepublican 10 points ahead0.2 per 10 points+0.2
Ad spendingRepublican 5 points ahead0.2 per 10 points+0.1
Total+0.5
Prediction
R+8.9
Likely range R+4 to R+13

Vote shares

Brooks (R)52.2% Alvarez (D)43.3% Chen (L)3.6% Undecided0.9%

Chen's share is the 6% poll figure times the keep rate. The undecided share is the AI voters' answer. The rest is split so Brooks leads by the predicted margin.

What the run produces

Each candidate's share, the margin and a likely range. The range comes from how far the model missed on past races it never saw during the search: in the example, the 4.5-point average miss from step 5. The run also produces how many points each feature added or took away, which the report prints as "What moved the prediction."

Repeatable

The run is saved with its feature values, weights and settings, so it can be repeated exactly.

8
Step 8

Output and checks

The report opens on the prediction and what moved it. A checklist runs before anything is shared.

Quick summary

Three short sentences and a quick method note.

Results

In large type, with a "What moved the prediction" table.

Cross tabs

By age, district, voting history, gender and income. Each group shows our number beside an outside figure when one exists: the poll's own group result, the last House result by district, or AP VoteCast. Groups under 50 voters are left out.

Full method

Every source and feature cited, each poll linked, and past accuracy.

Example race

The report's headline, at the settings the search chose

Civly poll · 2026 Governor

Brooks leads by 8.9 points

CandidatePredictionHow we got it
Brooks (R)52.2%Five forecasts plus four adjustments: R+8.9
Alvarez (D)43.3%Same
Chen (L)3.6%Keeps 60% of the 6% poll figure
Undecided0.9%AI voters' answer. The polls had 7%
What moved the prediction
ForecastPoints
AI votersR+3.0
Public pollsR+2.7
Past resultsR+1.8
Race ratingR+0.4
Prediction marketsR+0.5
AdjustmentPoints
IncumbencyR+1.0
National moodD+0.8
FundraisingR+0.2
Ad spendingR+0.1
TotalR+8.9

The cross tabs put our number beside the poll's for each group, for example ages 18 to 29 at D+6 against the poll's D+4.

Checks before sharing

These are added to the quality check every client PDF already goes through.

✓
A third-party share above anything that state's polls have shown beforeExample: Chen's 3.6% is below the state's highest past third-party poll figure.
✓
A party group crossing over at 0% or above 25%
✓
AI voters and polls more than 10 points apart with no reason given in the reportExample: the AI voters (R+10) and the polls (R+6) are 4 points apart.
✓
A missing election in the past-poll table
✓
Any number with no explanation or sourceExample: every number has a source.

Running a poll

One command runs the whole poll: the sample, the data lookup, a plan for approval, the AI voters and the report. Each run saves the answers, coverage, checklist results, code version and the settings the search picked, so any prediction can be rebuilt exactly.

Sources

The public data behind each step.

Frequently Asked Questions

How does Civly predict an election? ▼

Civly samples 5,000 likely voters from the state's voter records, turns each one into an AI voter, and asks three AI models from three companies how each would vote. A regression then blends the AI voters' result with public polls, past results, race ratings and prediction markets, and adjusts for incumbency, the national mood, fundraising and ad spending. How much each input counts is learned from past races.

What is a race information sheet? ▼

One short page of facts per race, 120 to 340 words, that every AI voter reads before answering: the year's events, the race's main issues, and where each candidate stands. It leaves out polls, ratings, money, endorsements and past results, which the model already counts as features. Every fact has a source and a date before the poll.

How are the weights chosen? ▼

By backtesting on past races with known results, starting with the most similar races in the same state. A search tries sets of settings, a regression finds the best weights for each set, and the set with the smallest average miss on past races wins. Each weight can move only inside a fixed range.

Where does the likely range come from? ▼

From how far the model missed on past races it never saw during the search. In the example race on this page, an average miss of 4.5 points turns a prediction of R+8.9 into a likely range of R+4 to R+13.

Does the method work for down-ballot races? ▼

Yes. District and local races, from U.S. House and state legislature to county, city and judicial offices, have their own models built on groups of precincts. Each learns from past races that also lacked polls, ratings and markets.

Run a synthetic poll on your race

Civly runs the whole poll, from sample to report, for statewide, district and local races.