weitblick ▸ docs/PARTY-COMPASS.md
updated 2026-08-02

Party Compass — the German party alignment quiz

Live: hub.unicorn.land/party-compass/

A questionnaire that scores you against the German party landscape and shows why — ranked matches, a political compass, and the specific answers that pulled you toward or away from each party. Built so two people can take it separately and compare.

It exists as background for Weitblick: before arguing that a new current is needed, it is worth being precise about what the existing thirteen actually offer and where the genuine gaps in the landscape are.


What changed in this version

The first version scored against seven parties — the six that entered the 2025 Bundestag plus BSW and FDP, minus SSW. That turned out to be too narrow to answer the question people actually ask it, because roughly 14% of 2025 second votes went to parties it never mentioned. Someone whose politics are Pirate or ÖDP-shaped was told they were an FDP or a Green, with no way to see the party they’d actually vote for.

This version scores against thirteen, adds nine statements that separate them, fixes a scoring bug that would have made the new parties nonsense, and lets a result travel as a link.


Which parties, and why those

Ranked by 2025 Zweitstimmen. Bold = included.

Party 2025 In? Reasoning
CDU/CSU 28.5% Governing party
AfD 20.8% Largest opposition
SPD 16.4% Junior coalition partner
Grüne 11.6% In Bundestag
Linke 8.8% In Bundestag
BSW 4.98% Missed the threshold by 0.02 points — nationally significant
FDP 4.3% Out of the Bundestag but still a real option
Freie Wähler 1.5% Largest omission from v1; governs Bavaria in coalition
Tierschutzpartei 1.0% Above 1% and a genuinely distinct single issue
Volt 0.7% Requested; the only true pan-European federalist
Die PARTEI 0.5% Satirical — no scoreable platform (see below)
SSW 0.2% Holds a Bundestag seat, but only electable in Schleswig-Holstein
dieBasis 0.2% The direct-democracy / institutional-distrust position, held by nobody else
Bündnis Deutschland 0.2% Marginal and a platform duplicate of AfD
ÖDP 0.1% Ecological and socially conservative — an otherwise empty quadrant
Piraten ~0.04% Requested; the only privacy-absolutist platform
MERA25 ~0.0% Marginal and a platform duplicate of Linke

On the four exclusions

Die PARTEI polls above Volt but is a satirical party. Scoring it requires pretending its positions are sincere; every answer would be a fabrication.

SSW is the awkward one — it has a Bundestag seat, exempt from the 5% threshold as a Danish/Frisian minority party. It is excluded because you cannot vote for it unless you live in Schleswig-Holstein. Ranking it nationally would tell most users their closest match is a party not on their ballot.

Bündnis Deutschland and MERA25 are each both marginal and close platform duplicates of a party already included. Adding them splits a cluster without offering a distinct choice — it makes the result less clear, not more.

The guiding rule: more parties is not the goal — more distinct, actually-votable options is. Thirteen was the point where adding another party started subtracting clarity.


Two things that had to be fixed first

1. The coverage bug

Alignment was ((raw / max) + 1) / 2, where max sums only the statements a party takes a position on. With seven broad parties this is invisible — they all cover almost everything. Add a single-issue party and it breaks badly:

Tierschutzpartei has a clear position on maybe 8 of 45 statements. Agree with all eight and it scores 100% — beating a party you matched on 40 statements.

Single-issue parties would have topped almost every result. The fix pulls each score toward 50% in proportion to how little ground the party covers:

conf   = max[party] / total_answered_weight        // 0..1 coverage
shrunk = 0.5 + (rawAlign - 0.5) * (conf / (conf + 0.4))

A party covering ~40% of your answered weight keeps half its distance from neutral. Broad parties are essentially unaffected. Anything under 45% coverage is marked with an asterisk and explained in the results, rather than silently discounted.

2. Nine new statements

The original 36 were written to separate seven mainstream parties. Bolted onto the new six, Volt came out as Grüne, Piraten as FDP-with-privacy, ÖDP as Grüne. Each addition is there to make a specific party separable:

New statement Separates
EU as a federal state with its own army Volt from every other pro-European
No chat control, no blanket data retention Piraten from FDP
Unconditional basic income Piraten from Linke
Post-growth economy ÖDP from Grüne
Ban factory farming, animal rights in the constitution Tierschutz, ÖDP
Decisions as locally as possible Freie Wähler, dieBasis
Binding lobbying/donations transparency register ÖDP, Piraten
COVID measures went too far, no accountability dieBasis from BSW
Restart nuclear power FDP/AfD from ÖDP/Tierschutz

Nuance instead of a single winner

A flat “you are X” is usually wrong. The headline now adapts to the shape of the result:

A genuinely flat spread is reported as flat rather than resolved into a false winner.


Sharing a result

Answers encode into the URL itself — one base-12 character per statement, carrying both the answer and whether it was flagged double-weight. Copy result link produces a URL that renders exactly that result for anyone who opens it. No account, no server, no database; the answers never leave the device except in a link the taker chooses to send.

Opening a shared link is explicitly read-only — a banner says whose result it is, and the viewer’s own saved answers are left untouched.

Copy raw JSON gives scores, coverage, axis positions and every answer as data.


Known limits

Sources