Scrutineer
A benchmark that asks Apertus 1.5 what the Swiss people decided in every federal vote since 1990, in four languages, and shows where and why it gets them wrong.
F1 accuracy gap, 70B (Featherless)
8.8 points lower on votes the government lost
64.7% on votes the Federal Council won, 55.9% on votes it lost.
The pre-registered claim failed: the gap is under the 10-point falsifier. It predicted at least 20 points.
On initiatives the government lost, 70B (Featherless) is right 17.2% of the time, against 90.5% on initiatives it won. On referendums and counter-proposals the government lost it is right 67.0%, against 40.0% when the government won. A model repeating the government would fail both. Apertus fails the first and does better on the second, which fits a default answer of "rejected".
70B (Featherless) was asked whether each vote was accepted or rejected (question F1). German, French, Italian and English answers are pooled: 1,069 on votes the government won, 261 on votes it lost. Two-proportion test: z = 2.64, p = 0.01.
The 13th AHV pension initiative (vote 665) was accepted on 3 March 2024 with 58.25% yes. Asked in each language whether it was accepted or rejected, 70B (Featherless) answered: German rejected (incorrect), French rejected (incorrect), Italian rejected (incorrect), English rejected (incorrect), Romansh rejected (incorrect).
Show the numbers
| Run | Votes | Accuracy | 95% CI | Answers |
|---|---|---|---|---|
| 70B (Featherless) | Government won | 64.7% | 61.8% to 67.5% | 1,069 |
| 70B (Featherless) | Government lost | 55.9% | 49.9% to 61.8% | 261 |
| Public AI "8B" route | Government won | 64.7% | 61.8% to 67.5% | 1,069 |
| Public AI "8B" route | Government lost | 55.9% | 49.9% to 61.8% | 261 |
| Public AI "8B" route, thinking | Government won | 64.0% | 61.1% to 66.8% | 1,069 |
| Public AI "8B" route, thinking | Government lost | 57.9% | 51.8% to 63.7% | 261 |
| 70B thinking (Featherless) | Government won | 63.9% | 61.0% to 66.7% | 1,069 |
| 70B thinking (Featherless) | Government lost | 57.1% | 51.0% to 62.9% | 261 |
The answer depends on the language you ask in
Asked in English, 70B (Featherless) says a proposal was accepted 2.2% of the time. In German it says so 55.3% of the time. On the 334 votes it has answered, the true share is 46.1%.
German, French, Italian and English give the same answer on 135 of 309 votes for 70B (Featherless), 137 of 310 votes for Public AI "8B" route, 153 of 303 votes for Public AI "8B" route, thinking, 146 of 296 votes for 70B thinking (Featherless).
Asking "rejected or accepted" instead of "accepted or rejected" moved the share of accepted answers by -1.5 points in French (n=334), -2.2 points in English (n=328), -23.1 points in German (n=334), with Public AI "8B" route. Registered reading: under 10 points, the option order does not explain the effect. 20 points or more, it explains a large part.
This was noticed after the data came in, so it is exploratory. It is registered as E1 in the claim ledger.
Show the numbers
| Language | Run | Says accepted | Answers |
|---|---|---|---|
| German | True share | 46.1% | |
| German | 70B (Featherless) | 55.3% | 334 |
| German | Public AI "8B" route | 55.6% | 334 |
| German | Public AI "8B" route, thinking | 47.2% | 334 |
| German | 70B thinking (Featherless) | 46.9% | 334 |
| Italian | True share | 46.1% | |
| Italian | 70B (Featherless) | 33.3% | 334 |
| Italian | Public AI "8B" route | 33.5% | 334 |
| Italian | Public AI "8B" route, thinking | 24.5% | 334 |
| Italian | 70B thinking (Featherless) | 25.2% | 334 |
| French | True share | 46.1% | |
| French | 70B (Featherless) | 4.7% | 334 |
| French | Public AI "8B" route | 5.0% | 334 |
| French | Public AI "8B" route, thinking | 2.2% | 334 |
| French | 70B thinking (Featherless) | 2.5% | 334 |
| English | True share | 45.4% | |
| English | 70B (Featherless) | 2.2% | 328 |
| English | Public AI "8B" route | 2.2% | 328 |
| English | Public AI "8B" route, thinking | 15.8% | 328 |
| English | 70B thinking (Featherless) | 17.4% | 328 |
Same weights, different answers
70B (Featherless) and Public AI "8B" route give word-for-word identical answers on 91.9% of 6,716 items.
70B (Featherless) and 70B (Public AI) give word-for-word identical answers on 92.3% of 287 items.
70B (Public AI) and Public AI "8B" route give word-for-word identical answers on 92.3% of 287 items.
Public AI "8B" route, thinking and 70B thinking (Featherless) give word-for-word identical answers on 68.8% of 2,351 items.
Public AI's apertus-v1.5-8b id answers like the 70B, so no 8B result is reported. Decision D24 has the evidence.
Method
Every item is a question about one federal vote. Outcomes, yes shares, canton results and the Federal Council's recommendation come from Swissvotes. Titles are the official Federal Chancellery titles from LINDAS: German, French and Italian for every vote, Romansh where the Chancellery publishes it (since 2009), and English where it publishes one. For 69 more votes the English title is the Swissvotes short title, and votes with neither get no English items. No model translated anything. There are 6,716 items on 334 decided votes and 4 votes that have not been held yet, where the right answer is to say so.
A deterministic parser reads each answer in its own language: accepted, rejected, a percentage, or I don't know. Answers it cannot read, and the two free-text question families, go to a local open-weights judge, Qwen2.5-7B-Instruct. Apertus never grades its own answers. In run R1 the judge has decided 1,553 answers so far.
The main claim was written down before the first request: on F1, 70B (Featherless) would be at least 20 points less accurate on votes the government lost, and at least 70% of its misses there would match the Federal Council's recommendation. Below 10 points or 50% it fails. Its status is regenerated from the data, never edited by hand.
make run rebuilds the items from the pinned sources, replays grading from the stored responses, checks results.json against its recorded hash, and regenerates the figures and this site. It runs in Docker and needs no API key.
Which way the wrong answers point, 70B (Featherless)
Show the numbers
| Language | Match the recommendation | Oppose it |
|---|---|---|
| German | 46 | 19 |
| French | 18 | 122 |
| Italian | 34 | 57 |
| English | 13 | 124 |
| Romansh | 1 | 6 |
How could this be misleading
Government lost or usual outcome
In this set of votes, the government losing always coincides with the less common outcome for that kind of vote: initiatives usually fail and referendums usually pass. So the data cannot tell a model that repeats the government apart from one that assumes the usual outcome. Always answering with the Federal Council's recommendation scores 100.0% on votes it won and 0.0% on votes it lost. Answering "initiatives fail, everything else passes" scores 99.3% and 0.0%. Within initiatives alone, 70B (Featherless) scores 90.5% on votes the government won (n=524) and 17.2% on votes it lost (n=58).
Contamination
The questions are built from public sources that are likely in the training data, which is the point of a recall test. The risk is that the exact question text or the gold answers leaked too. The check and its result are in CONTAMINATION.md.
Template phrasing
Each question family uses one fixed template per language. Different wording could produce different answers, and some of the gap between languages may come from the templates rather than the language. F1 accuracy for 70B (Featherless) runs from 54.2% in French to 76.3% in German.
Language or template wording
Every language has its own question template, so the language effect could come from how each template is worded rather than from the language itself. The option-order test above checks one part of that. The templates are in src/scrutineer/templates/.
Hosted endpoint, not official weights
The runs went through a hosted endpoint (router.huggingface.co), not the official weights on hardware we control. A hosted deployment can differ in quantisation, chat template or decoding. A replay of a sample against the official checkpoint has not been run yet.
Serving
The same weights at temperature 0 give a different answer on 7.7% of items, about 1 in 13, depending on who serves them. That is 70B (Featherless) against 70B (Public AI) on the 287 items both answered. A single run of a hosted Apertus carries that much serving noise.
Judge disagreement
Answers the parser cannot read are graded by a 7B judge model, which can be wrong. In run R1 it decided 1,553 answers.
Human check
A second AI rater labelled a blind sample of judge decisions without seeing the judge's verdict, the run or the language. A person then reviewed those labels and kept 309 of 311. So judge-human agreement is close to judge-AI agreement and is not an independent human annotation. Judge prompt 1.1.0 agrees with the reviewed labels on 94.5% of them, Cohen's kappa 0.89. That prompt was corrected using these rows, so the number is optimistic. JUDGE.md describes how the labels were made.