Methodology

The site uses a reproducible path: official PxWeb extracts are stored raw, validated, normalized into a processed JSON artifact, then transformed into chart view models.

The story page combines two processed extracts: Statistics Finland RTP (11qp, sector S13141, instrument F0) for the year-end asset stock line, and ETK rahavirrat01_kaikki for annual flows. The bar chart net is a narrow derived figure from the ETK file (contributions + investment result − pensions paid, excluding other lines); it is not a solvency indicator, and ETK flows are not interchangeable with RTP stock totals.

Site structure and stack

Pension Project is a multilingual Next.js editorial site: the active language is part of each route. Processed public datasets are loaded on the server and shaped for the page; the charts are lightweight client components that receive prepared series only. The stack is Next.js, TypeScript, the App Router, Tailwind CSS, next-intl for locale-aware copy, and Zod at the data boundary—kept deliberately straightforward so the story stays easy to audit.

Data layers

  • Raw — PxWeb JSON-stat as retrieved
  • Validation — Zod schemas for raw and processed shapes
  • Normalize — ordered annual series in million EUR
  • Processed — versioned JSON consumed by the app
  • Transform — view models for sections and charts