OECD Pensions Explorer diagram: pension indicators connected into a trade-off explorer

Scattered indicators → harmonized dataset → cross-country trade-off explorer.

Public

OECD Pensions Explorer

An interactive explorer of OECD pension-system trade-offs: it connects replacement rates, spending, retirement age, and old-age poverty over a reproducible dataset. Won the Chief Viber prize at the Plotly Analytics Vibe-a-Thon and was published in Plotly’s official examples.

★ Chief Viber · Plotly Analytics Vibe-a-Thon

4 views
one per question
3 sources
OECD harmonized
Featured
Plotly official examples

Stack

Python · Dash · Plotly · pandas

Artifacts

Public demo on plotly.app; featured in Plotly’s official examples

Constraints

  • Solo project, built within a hackathon deadline.
  • The data is a curated snapshot of OECD sources; it does not update live.

TL;DR

  • Brings pension indicators that usually live in separate reports into one comparable interface.
  • Four views, each answering a distinct question: generosity, cost, retirement age, and old-age poverty.
  • Reproducible dataset harmonized from three OECD sources (Pensions at a Glance, SOCX, LFS).

Reusable patterns

  • Start from the policy question, not the indicator at hand: each chart exists to show one concrete trade-off.
  • Harmonize several official sources into a single reproducible dataset before visualizing.
  • Pick the chart type by the question —choropleth, line, scatter, radar—, not for visual variety.

Context

Pension debates usually lean on isolated metrics: a spending figure here, a replacement rate there, a retirement age in yet another report.

That fragmentation hides the core trade-off: a system can be generous, fiscally sustainable, or equitable in old age, but rarely all three at once.

The explorer puts those indicators on a single surface so that comparing countries no longer means jumping between PDFs.

Decisions

  • Design each view around a policy question, not around an available table.
  • Harmonize Pensions at a Glance, SOCX, and LFS into a reproducible dataset instead of hard-coding figures.
  • Map the chart to the question: choropleth for generosity, lines for cost and retirement age, scatter for poverty, radar for country comparison.
  • Keep the dataset under the contest cap (75 MB) so the app loads fast.

Architecture

OECD Pensions Explorer architecture: OECD sources, harmonization, dataset, and Dash/Plotly app
OECD sources → cleanup and merge in pandas → reproducible dataset → deployed Dash/Plotly app.
  • The three OECD sources are cleaned and merged in pandas into a single dataset.
  • Dash orchestrates the callbacks; Plotly provides default interaction (hover, zoom, selection).
  • It deploys to plotly.app as a public app, with no backend of its own to maintain.

Outcome

  • Won the Chief Viber prize, the top award at the Plotly Analytics Vibe-a-Thon (October 2025).
  • Plotly selected it for its official finance examples: external editorial validation, not a self-assessment.
  • It stands as a public, verifiable piece —live demo— and as a trade-off narrative reusable across other policy domains.

Links