Brazil went to the polls on Sunday expecting Flávio Bolsonaro to win.
He had won round one three weeks earlier. In the final week of the runoff, seven of the eight polls we tracked had him ahead and the eighth had it level. The poll average said Flávio by 2.2.
On 20 October, five days before the vote, our Decision Desk recorded a different answer. Our 600 synthetic Brazilians said Lula by 4.3.
Then Brazil counted.
Lula won. Our call was within 0.3 points of each candidate’s share and 0.8 points of the margin. The poll average was 5.7 points off the margin and named the wrong winner. It is the first time since direct elections returned in 1989 that the candidate who came second in round one has won Brazil’s presidency.
Every poll on one side. Our call on the other.
Why it matters
The polls weren’t careless. Datafolha, Quaest, AtlasIntel and the rest are serious operations, and they agreed with each other. Agreeing with each other is exactly the problem: when every instrument leans the same way, nobody in the room is placed to say otherwise.
A synthetic electorate is a different instrument. It is not a poll and it does not average polls. It is 600 synthetic Brazilians, built to match the real country, each given what a voter would have known in the last week of the campaign and asked how they would vote. Five days out it came down on the other side of the consensus, and the country came down there with it.
Three governors, called
Six states also elected their governors in Sunday’s runoffs. In three of them our call named the winner and came close on the margin:
Three governors, called
- Acre: Mailza Assis won with 66.2%. We had her at 64.0, within 2.2 points.
- Distrito Federal: Celina Leão won with 57.2%. We had her at 54.6. We were closer on the margin than the polls: we said 9 points, polls said 21, the count said 14.
- Amazonas: Omar Aziz won, as we called.
Bulgaria: the runoff, and who is in it
The same Sunday, Bulgaria held round one of its presidential election, with twenty-seven tickets on the ballot. Our synthetic Bulgaria made three calls: no one wins outright, Iliana Iotova finishes first, and Andrey Gyurov finishes second. All three held. Iotova and Gyurov meet in the runoff on 1 November.
It also put the top four in the order the country did:
| Our call | The count | ||
|---|---|---|---|
| 1 | Iliana Iotova | Iliana Iotova · 34.8% | ✓ |
| 2 | Andrey Gyurov | Andrey Gyurov · 32.0% | ✓ |
| 3 | Kostadin Kostadinov | Kostadin Kostadinov · 12.5% | ✓ |
| 4 | Radostin Vasilev | Radostin Vasilev · 4.6% | ✓ |
Further down the ballot the small parties landed close to their real shares: Vasilev within 0.7 points, Ivan Hristanov about half a point off, and Ivelin Mihaylov within 1.5. These are parties at 2 to 5 percent, where a few synthetic voters either way would show.
The scorecard
| Calls | Right | |
|---|---|---|
| Brazil, president | 1 | 1 |
| Brazil, governors | 6 | 3 |
| Bulgaria, who reaches the runoff | 1 | 1 |
| Total | 8 | 5 |
Both head-of-state races, the ones each country was watching, went the way we called them. In Brazil, it was the call nobody else made.
Where we fell short
A desk that only shows its wins is not keeping score.
Three governors, missed
- Tocantins was a clean miss. Round one there was nearly a tie, and every runoff poll had Vicentinho Júnior ahead by 8 to 13 points. We had Professora Dorinha winning by 21. She lost by 29. This is the race we are taking apart first.
- Rio Grande do Norte went the other way. We had Allyson Bezerra by 15. The PT’s Cadu Xavier won by 1.5, the closest race of the night. The poll average had Allyson ahead too, but by 4, not 15.
- Espírito Santo was a coin flip, and we called it wrong. Our electorate split 49.8 to 50.2, a 0.4-point edge to Ricardo Ferraço. Lorenzo Pazolini won by 4.3. We were closer to the final margin than the polls (which had Pazolini by 11), but on the wrong side of it.
- Amazonas was right but too lopsided. We had Omar Aziz winning by 40; he won by 23.
Bulgaria, round one: the right order, the wrong distances
- Bulgaria’s gap. We had Iotova 25 points clear; she led by under 3. The final polls, at 13 to 24 points, missed it too, but that is no defence: Gyurov’s late surge is the story of the night, and our electorate did not see it.
- Protest in the wrong place. Our synthetic Bulgaria parked a fifth of its vote on “none of the above”. Real voters gave it 4.4%. Bulgarians who wanted to protest mostly stayed home instead, on a turnout of about 22%. We did not model turnout for this race, and in an election decided by who showed up, that matters.
- Where GERB’s voters went. GERB and DPS fielded no candidate, and the polling before the vote had GERB’s voters leaning to Gyurov. Our own check against Alpha Research’s breakdown had flagged it: our electorate sent most of them to Iotova. We published the call anyway; a check that far off should have held it back.
- Small samples are noisy. Each governor race and the Bulgarian call used 200 synthetic voters, which leaves several points of margin uncertainty either way. Even Brazil’s presidency, at 600, carries about four points of noise on the margin. The Lula call is the result we are proudest of, but one race is a data point, not a track record.
Our calls, as they stood on the desk before the vote: Brazil · Bulgaria.
Synthetic estimates describe a simulated population, not a poll of real voters. The calls shown are the ones recorded on our Decision Desk on 20 October 2026, before the vote. Bulgaria’s figures are the CEC’s count at 99.95% processed and may move slightly before certification.