How Meta’s repeated failures appeared to favor Flávio Bolsonaro

Lula won the runoff and promised to regulate the platforms that carried the campaign, while the company that sold the reach, set the prices, ran the AI and kept the logs still has not explained the asymmetry that the campaign took to court.

01-eduardo-suplicy-meta-nao-se-meta.png

On the night of 25 October, after the electoral court proclaimed him re-elected with 51.77 percent of the valid vote against Flávio Bolsonaro’s 48.23 percent, Luiz Inácio Lula da Silva used his victory speech to name the thing that had followed him through the runoff, saying that the campaign had overcome an intrusion from outside through digital platforms, that Brazil would have to regulate them, and that a crime committed online should be treated like a crime committed in the street. The count came a few weeks after Lula’s official Instagram account spent almost twenty-four hours unable to pay to expand the reach of anything posted to its feed, and the campaign asked the electoral court whether that silence was a bug or a decision, a question the victory did not answer.

Inside Meta, according to internal messages obtained by the São Paulo newspaper Folha de S.Paulo, an employee named Roberto wrote that Lula’s account was “limited” compared with Senator Flávio Bolsonaro’s and that the asymmetry carried a “high chance” of legal action. The campaign estimates that 1.3 million people did not see its ads. Meta blamed a global data outage that hit more than 3,000 accounts on 7 October, although that outage lasted five hours and Lula’s lasted nearly a day, and the company later told the court that an antifraud review had deactivated Lula’s ad account by mistake for just over an hour on 23 September and that the problems of 7 and 9 October came from global failures. None of that explains why the systems’ failures repeatedly had asymmetric effects at a moment when reach mattered most, and none of it opens the logs.

A private monopoly on the last mile

Brazil’s campaigns have handed Meta R$ 288.7 million so far in 2026, according to open data from the TSE and its DivulgaCand platform, more than double the R$ 129 million declared in 2022, and the company now takes 6 percent of all declared campaign spending, up from 1.9 percent in 2022. Flávio Bolsonaro has declared R$ 7.45 million with Meta, almost three times Lula’s R$ 2.59 million, while Flávio’s Liberal Party (PL) has spent R$ 63.7 million against R$ 37.9 million from Lula’s Workers’ Party (PT). The concentration matters because the TSE forbids algorithmic recommendation of candidate accounts, which leaves paid reach as the only legal way to expand an audience at scale.

02-meta-campaign-spending.png

The spending totals hide a second question, which is what the company charged for the reach it sold. A study by the NetLab lab at the Federal University of Rio de Janeiro and the International Panel on the Information Environment examined 7,677 ads from 11 presidential campaigns in the first round and found that Lula paid between 33 and 43 percent more than Flávio per thousand people reached in three of four statistical models, with the fourth pointing to 10 percent more. The authors call the finding a set of signs rather than a settled result, because 52 percent of the ads sat in the lowest price band, where Meta publishes only a range from R$ 0 to R$ 99, and because the company withholds the raw auction data, which it promised the TSE to make available, that would separate platform pricing from campaign choices. Meta said that it does not set prices by advertiser or opinion and that comparisons built from public spending bands are misleading.

The TSE’s Resolution 23.610/2019 requires platforms to keep a public, auditable repository of amounts spent, periods of display, people reached and targeting criteria, and Phil Howard, the IPIE president and an Oxford professor, told O Globo that Meta fully meets three of the nine items the rules require. A BBC News Brasil survey of Meta’s Ad Library found that Flávio’s official page spent R$ 6.79 million on ads between 15 and 21 October, against R$ 1.09 million for Lula, which describes a market where one campaign buys more volume while the other pays more per person reached and neither can prove the auction treated them the same.

What the internal messages show

The Folha messages describe more than an outage. In early October, Flávio’s Instagram profile appeared in search results while other candidates’ profiles did not, and Lula’s account failed to appear even when users typed his exact name. Inside WhatsApp, a search for “Exército do Lula” returned the Lula channel, the PT channel and “Tropa do Flávio”, a channel supporting the senator. TSE rules allow candidate profiles and channels to appear only when a user types the exact name, not as suggestions. Employees called the Flávio recommendation a “furo”, a breach in the system, and said Lula’s absence came from a technical rule about his long name that had supposedly been fixed, while colleagues asked that the case be classified SEV2, the internal tag for a severe incident.

The channel at the center of that search became a case of its own. On 22 October the TSE president, Kassio Nunes Marques, gave Meta twenty-four hours to report on whether “Exército do Lula”, administered by Deputy André Janones, showed coordinated action and paid distribution, after Flávio’s campaign asked the court to investigate, and Meta answered on 23 October that its technical analysis found no violation of its channel policies. The channel had grown from 50,000 people to more than 8 million after the first round, against just over 2 million for “Tropa do Flávio”, according to BBC News Brasil.

The machine that makes a candidate

Meta’s own AI assistant added another layer in tests run by the news site g1, the newspaper O Globo and the fact-checking project Projeto Comprova on 13 and 14 October, which found that the WhatsApp assistant produced images for “Flávio 22” while refusing “Lula 13”, although it also refused “Flávio Bolsonaro 22” and produced a Lula image after repeated prompts. By the afternoon of 14 October the asymmetry no longer reproduced in Comprova’s tests, and on 20 October VEJA found the tool refusing both candidates. TSE Resolution 23.755/2026 bars AI systems from ranking, recommending or prioritizing candidates and from expressing electoral preference. Justice Marco Aurélio Bellizze, the court’s rapporteur, wrote that the prompt-control tool had failed, but that there was no evidence the failure came from a deliberate criterion or had repeated systematically. The tool was erratic, but its errors were not random in their effects.

03-meta-ai-whatsapp-exchange.png

On 22 October the electoral inspector, Ricardo Villas Bôas Cueva, widened the record by giving Meta and X twenty-four hours to explain how their AI, automatic translation and search tools handled the candidates, and by asking Meta whether the two campaigns’ ad accounts passed through the same review parameters. Meta had already told the court that a gap allowed images with common first names alongside electoral numbers while full candidate names were blocked, and that it had closed the gap on 14 October.

The court arrives after the damage

Bellizze’s decisions turned the TSE into the country’s ad hoc platform regulator in the final week. On 15 October he ordered Meta to equalize treatment under a daily fine of R$ 500,000, then gave the company twenty-four hours to prove compliance. On 19 October, Cueva also barred Meta and X from giving privileged distribution to the accounts of Nikolas Ferreira and influencer Pablo Marçal and suspended paid reach for their accounts until the 25 October vote. The orders arrive after the reach has already been delivered or withheld, and they depend on data the company controls, and on 20 October Meta met the campaigns and Bellizze behind closed doors and promised human review of ad restrictions within two hours. Flávio said after the result that he would contest it and announced a request for annulment.

The numbers that made the allegations visible

The clearest public trace of algorithmic privilege is not Lula’s account but Nikolas Ferreira’s. The watchdog group Sleeping Giants Brasil compared the ten most recent Reels from 30 profiles and found that Nikolas’s ten videos had 410.5 million views against 141.4 million for ninety videos from nine other deputies, a median that put him ahead of Neymar, Selena Gomez and Beyoncé. The study does not prove manipulation, since six of the ten videos were posted after the first round, when Nunes Marques allowed platforms to recommend posts by politicians already elected. Sleeping Giants, ARTIGO 19 and CTRL+Z took the data to the electoral prosecutor’s office on 16 October.

What people are building

On 19 October, hundreds of people protested outside Meta’s São Paulo headquarters under the slogan “Meta, tire a mão da nossa eleição”. Eduardo Suplicy, a state deputy and founding member of the PT, held a sign reading “META NÃO SE META”, a pun on “Meta, don’t meddle”. CTRL+Z, ARTIGO 19 and Sleeping Giants Brasil organized the protest, and CTRL+Z had collected 1,121 reports of suspended accounts and removed posts. The federal prosecutor’s office opened a procedure, the data protection authority notified Meta, and Congresswoman Erika Hilton filed a request for a congressional inquiry.

The result gave that coalition an opening and a test. On 26 October Lula told the elected Congress that he would work with it on the platform rules he had promised in the victory speech. The demand that the digital rights groups had pressed through courts and regulators now has a president willing to talk about regulation, and the TSE’s 22 October order and the NetLab study give any future bill a public record to cite, but the new Congress is one that Lula himself acknowledged others call more conservative than the last, he has not presented a bill, the companies still control the auction data, the emergency orders expire with the election, and a daily fine of R$ 500,000 is a rounding error against the R$ 288.7 million the campaigns have paid Meta.

Justice Bellizze wrote on 15 October that a failure in the stretch before the vote could not be repaired once the election was over, and Lula won by 4.4 million votes anyway, which leaves the question of what happened to his account on 9 October with an answer that sits in logs only Meta can read and that the company has not opened.

In Conversation:
Topics:
Filed under:

Admin:

⎘ Download docx

✉ Schedule Newsletter

More from: Gabriela Caligares