Finnish politics, measured.

A data-led look at the Eduskunta: 41,528 plenary speeches, 281 MPs across 9 parties, 2019–2026. Who talks, what they ask, and where they sit on the ideological map.

01 · activity

Parliament activity

Explore speeches, questions, and initiatives by party or MP. Compare raw totals or adjust for seats and active MPs across the Marin and Orpo terms.

04 · topics

Which party talks about what?

See which topics each party discusses more than the chamber average, and compare the priorities of government and opposition parties.

02 · ideology

Compass

Our speech-derived GAL-TAN coordinates for each party, overlaid on CHES, Manifesto Project, and EVA.

05 · time

How does positioning shift?

Track how party positions move from year to year and how events change the topics discussed in parliament.

03 · accountability

Do they speak as promised?

Compare each MP's 2023 election questionnaire answers with the positions in their plenary speeches during the Orpo term, using the same two axes.

vas sd vihr liik r kesk kd kok ps
Speeches
41,528
MPs
281
Questions & initiatives (known party)
8,266
Stance-scored speeches
18,319
Parliamentary years
2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026
Speeches through
21/07/2026
Votes through
21/07/2026
Questions & initiatives through
23/07/2026
Question & initiative years
2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026
Dataset created
28/07/2026

activity

Parliament activity

See who does what in the Eduskunta: plenary speeches, written and oral questions, interpellations, and motions. Toggle between speeches and questions & initiatives, group by party or by MP, and normalize by seats or sitting MPs to compare fairly across party sizes. Covers 2019–2026 across the Marin and Orpo terms.

what
who
normalize
breakdown
when by type
term
sort
show data table

Speeches come from plenary puheenvuoro records; the type buckets collapse the Finnish labels into six groups (Regular, Reply, Fast, Group, Intro, Other). Questions & initiatives are first-signer matters: KK written, SKT oral, VK interpellation, TPA/TAA/KA motions. Seat counts are from the official Vaalit.fi results (2019, 2023). "Sitting MPs" counts MPs who gave at least one speech in the term. Note the systematic government/opposition effect: governing parties file far fewer questions because they don't interrogate themselves. In the all-years view, per-seat figures divide by the combined seats across both electoral terms (seat-terms), while per-MP figures use distinct speakers across the whole period.

topics

Which party talks about what?

Each party's share of speeches per area, expressed as an over-index (party share ÷ area's share across the whole chamber). A 3.6× cell means: this party talks about this topic 3.6× more often than the chamber average. Dataset: 41,528 area-tagged speeches.

term
group
color scale (over-index) below average → above average

Over-index = party's speech share on an area ÷ the area's share across the whole chamber for the same term. The baseline is fixed to the whole chamber so the government/opposition filter stays on the same scale. Figures use the published area dataset (full sample).

compass

Ideological compass

Each party is plotted from 20,763 accepted axis scores from 18,319 distinct speeches. X-axis: economic (−2 left … +2 right). Y-axis: GAL-TAN (−2 cosmopolitan/green … +2 traditional/nationalist). Bubble size ∝ number of accepted axis scores.

overlay references
tie-lines

Every sufficiently long speech is evaluated separately on the economic and GAL-TAN axes. The model may mark either or both axes unscorable when the speech contains no explicit position from the speaker. Accepted −2…+2 axis scores are averaged by party. Speeches were scored by deepseek-v4-flash; the party is withheld from the prompt. The prompt is in the about section. References are scaled to the same −2…+2 axis: CHES (0–10 GAL-TAN → −2..+2 via (x-5)·0.4); Manifesto (RILE -100..+100 → -2..+2 via x/50); EVA (Economic/social -1..+1 → -2..+2 via ×2).

Reference datasets

CHES
Chapel Hill Expert Survey: Expert judgments on party positions (2015 trend file). (0–10 GAL-TAN → −2..+2 via (x-5)·0.4)
Manifesto
Manifesto Project (MARPOR): Automated coding of party election manifestos (RILE index). (RILE -100..+100 → -2..+2 via x/50)
EVA
EVA value survey: Finnish citizen value survey ('Suomen kuvitettu arvokartta'). (Economic/social -1..+1 → -2..+2 via ×2)

party outliers

Pick a party and see its MPs on the Orpo-term speech compass. Highlighted are those furthest from the party speech mean toward the left or right (economic) and toward GAL or TAN.

pick a party


Governing vs opposition

The same data, split by whether a party was in government or in opposition when it spoke. Each line joins a party’s mean economic position in opposition (○) to its mean in government (●). Every party that changed role sits further right while governing. This holds for every party that changed roles.

axis
in opposition in government

Mean shift +0.38 points rightward on the economic axis (7 parties). Part of this is era, not role: RKP, which governed under both cabinets, drifted +0.46 rightward between the Marin and Orpo eras, but the role effect remains. On the values axis (GAL-TAN) there is almost no such shift (+0.16): role colours economic stance, not values. Reading: the compass’s economic axis partly measures incumbency, not ideology alone.

consistency

Election promises and speech alignment

All 200 sitting MPs' pre-election answers (Yle/HS eduskuntavaalit 2023 vaalikone) projected onto the economic and GAL-TAN axes. These are the same axes used by the compass. The answers are then compared with where their Orpo-term parliamentary work lands. The economic and GAL-TAN classification is done by a large language model. The arrow shows drift between the election-compass and parliamentary-work positions; the salience bars show whether their floor focus matched what they felt strongest about before the election.

MPs with vaalikone
200
MPs with stance-scored speeches
193
median drift (vaalikone → speeches)
0.76
mean drift
0.78
party MPs mean drift median drift
Liike Nyt (liik) (liik) 1 0.21 0.21
Left Alliance (vas) (vas) 11 0.47 0.39
Christian Democrats (kd) (kd) 5 0.51 0.48
Greens (vihr) (vihr) 13 0.63 0.64
National Coalition (kok) (kok) 44 0.71 0.69
Social Democrats (sd) (sd) 42 0.79 0.80
Finns Party (ps) (ps) 44 0.81 0.75
Swedish Party (r) (r) 9 0.91 0.75
Centre (kesk) (kesk) 23 1.10 1.04
by party

how often party members voted according to their vaalikone answers

per question

votes where representatives diverged from their answers

pick an MP
filter by party
sort
N/A

Orpo-term activity at a glance. Comparison figures = party and parliament means.

signed: what they put their name on

spoken: what they discussed on the floor

Each answer is connected to speeches on the same issue, documents first-signed by the MP, and manually reviewed roll-call mappings. A topic match is a lead, not proof of a position.

Promised coordinates are projected from each MP's 30 vaalikone answers: every question is hand-mapped to one axis (economic or GAL-TAN) and a sign (whether "agree" points left/GAL or right/TAN). Each answer's (value − 3) is multiplied by the sign and averaged across that axis's questions, yielding a −2…+2 coordinate directly comparable to the speech stances. Speech-position coordinates are the mean of each MP's per-speech stance scores during the Orpo term (2023–). Drift is the euclidean distance between the two points. The headline drift measures broad speech alignment. The question-level audit keeps topic matches separate from compliance verdicts. A vote match or contradiction requires a mapped vote: the mapping is LLM-suggested and direction-validated against the party Jaa/Ei split. A same-direction marker is the weakest signal: the MP spoke in the area in a consistent direction, without addressing this specific claim.

about

About

This site is a static view of an analysis of the Finnish parliament (Eduskunta), 2019–2026. Every figure is calculated in advance. The page shows ready-made aggregates with no database running behind it.

  • Speeches
    41,528 plenary speeches, api.eduskunta.fi puheenvuoro search. ~50% sample (per-MP cap of 200/year).
  • MPs
    281 distinct speakers with recorded speeches.
  • Questions & initiatives
    8,266 party-attributed matters from parliamentary years 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026: written and oral questions (KK, SKT), interpellations (VK), and motions (TPA, TAA, KA).
  • Stance scores
    20,763 accepted axis scores from 18,319 distinct speeches. Every speech is evaluated separately on the economic and GAL-TAN axes.
  • Area tags
    Keyword mapper (full coverage); a language-model classifier validates a subset.
  • Parliamentary years
    2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026

Area classification

Every speech and matter is assigned one policy area from a fixed taxonomy of 13 categories. The default is a deterministic Finnish keyword mapper over the matter title. It is free and instant, with about 75% coverage. A language-model classifier tags a subset for higher per-speech precision; the party is withheld from the prompt.

Stance scoring

Every sufficiently long speech is evaluated separately on both axes using a scale from −2 to +2. If a speech contains no explicit position on an axis, that axis is marked unscorable and excluded from the mean:

axis evaluation −2 (left / GAL) +2 (right / TAN)
economic evaluated separately for every speech state / redistribution / welfare free market / low tax
GAL-TAN evaluated separately for every speech cosmopolitan / green / libertarian nationalist / traditional / authoritarian

The prompt instructs the model to reason from speech substance, not speaker identity, and marks speeches without an explicit position as unscorable. Party is withheld to prevent speaker-prior bias. The published scores used deepseek-v4-flash. The prompt is available below.

Show stance prompt

Below is the Finnish instruction given to the model. Both axes are evaluated in the same call; the matter title and speech text are inserted via the input template.

deepseek-v4-flash

Olet suomalaisen politiikan asenneanalyytikko. Sinulle annetaan yksi
eduskuntapuheenvuoro. Arvioi puhujan oma kanta ERIKSEEN kahdella akselilla.

TALOUSAKSELI (economic), vasen ↔ oikea:
−2 = vaatii julkisen sektorin, uudelleenjaon tai työntekijän aseman LAAJENTAMISTA
     (lisää palveluita, korkeampi verotus, vahvempi sääntely/ay-asema)
−1 = puolustaa nykyisiä julkisia palveluita tai etuja leikkauksia vastaan
 0 = nimenomaisesti keskitie tai tasapaino talouskysymyksessä
+1 = kannattaa maltillista markkinaehtoisuutta, veronkevennystä tai menokuria
+2 = vaatii selvästi markkinaehtoisuutta, merkittäviä veronkevennyksiä tai
     julkisen sektorin supistamista

ARVOAKSELI (gal_tan), GAL ↔ TAN:
  GAL = vihreä, vaihtoehtoinen, liberaali, kosmopoliittinen
  TAN = perinteinen, autoritaarinen, nationalistinen
−2 = vahva GAL (yksilönvapaus, avoimuus, pluralismi, yli-rajainen yhteistyö)
−1 = maltillinen GAL
 0 = nimenomaisesti keskitie tai tasapaino arvokysymyksessä
+1 = maltillinen TAN
+2 = vahva TAN (kansallinen sulkeutuneisuus, järjestys, perinteiset normit)

Säännöt jokaiselle akselille:
- Perusta arvio VAIN puhujan omaan, eksplisiittiseen kantaan. Älä käytä puoluetta,
  henkilön tunnettuja mielipiteitä tai yksittäisiä avainsanoja oikoteinä.
- Hallituksen puolustaminen tai opposition arvostelu EI OLE oma kanta. Kysy:
  esittääkö puhuja oman vaihtoehdon, vai reagoiko hän vain toisten esityksiin?
  Jos jälkimmäinen, akseli on "unscorable".
- Useimmat puheet ottavat kantaa vain TOISEEN akseliin. Se on odotettua: merkitse
  toinen "unscorable". Älä pakota kantaa akselille, jota puhe ei käsittele.
- Aihe ei ratkaise akselia: talouspuhe voi ottaa arvokannan ja päinvastoin.

status jokaiselle akselille:
- "clear": selvä oma suunta; stance −2, −1, +1 tai +2.
- "neutral": puhuja kannattaa eksplisiittisesti keskitietä; stance 0.
- "mixed": vastakkaisia omia kantoja ilman hallitsevaa suuntaa; stance 0.
- "unscorable": tähän akseliin liittyvää omaa kantaa ei ole; stance 0.

Vastaa kentät tässä järjestyksessä jokaiselle akselille: poimi ensin SANATARKKA
lainaus puheesta ("evidence"), päätä sitten status ja stance. Älä tiivistä tai
muotoile lainausta uudelleen; jos sanatarkkaa lainausta ei ole (esim. unscorable),
jätä "evidence" tyhjäksi.

Input template

AIHE (taustatieto): {matter}

PUHEENVUORO:
{speech}

Party compass

A party's place on the compass is the mean of its stance-scored speeches on each axis. Each party therefore gets one point: (economic, GAL-TAN). The same coordinates are compared below to CHES, Manifesto, and EVA.

Activity

The activity view counts plenary speeches as well as questions and initiatives (by first signer). Figures can be shown by party or by MP, as raw counts or relative to seat totals or sitting MPs — otherwise larger parties win on size alone.

Seat counts come from Vaalit.fi (2019 and 2023). Here, the Marin term means parliamentary years 2019–2022 and the Orpo term 2023–2026. The all-years per-seat figure uses the combined seat count across both terms.

Our speech-derived compass agrees strongly with three independent reference datasets (Pearson r, 8 shared parties). Each uses a fundamentally different methodology:

reference method econ r GAL-TAN r n parties
CHES Expert judgments on party positions (2015 trend file). 0.91 0.98 8
Manifesto Automated coding of party election manifestos (RILE index). 0.94 0.98 8
EVA Finnish citizen value survey ('Suomen kuvitettu arvokartta'). 0.93 0.97 8
  1. Eduskunta open-data API: api.eduskunta.fi. Valtiopaivaasia and Puheenvuoro categories.
  2. CHES: Chapel Hill Expert Survey. Expert judgments on party positions (2015 trend file). (0–10 GAL-TAN → −2..+2 via (x-5)·0.4)
  3. Manifesto: Manifesto Project (MARPOR). Automated coding of party election manifestos (RILE index). (RILE -100..+100 → -2..+2 via x/50)
  4. EVA: EVA value survey. Finnish citizen value survey ('Suomen kuvitettu arvokartta'). (Economic/social -1..+1 → -2..+2 via ×2)
  5. YSO, the Finnish General Ontology: finto.fi/yso.