Methodology

Sources, limitations and the update process

Parliamentary questions 2024–2028

Format: JSON · 657 records

Last portal update

2026-05-10

  • Dates are in the .NET legacy format /Date(ms)/ — converted to ISO-8601.
  • 168 records (26%) have no assigned session — the questions are not yet scheduled.
  • 91 records have no assigned institution — addressed to independent bodies.
  • 5 records with status 'Answered' have an empty answer — a limitation of the source data.
Source: https://opendata.sobranie.mk

My MP — Report no. 32 (Jan–Jun 2025)

Format: XLSX · 116 records

Last portal update

2025-11-11

  • Periodic report, not updated since November 2025.
  • The XLSX file uses a three-row header structure with internal codes.
  • The parser maps headers by value, not by position — for resilience against changes in the XLSX structure.
Source: https://opendata.sobranie.mk

Citizen contact offices

Format: XLSX · 610 records

Last portal update

2026-01-08

  • Covers 46 MPs (not all 120) — only those with active offices.
  • Format: tidy/long — each category is a separate row.
  • The UUID identifier is used to join with the other datasets.
Source: https://opendata.sobranie.mk

Active assembly (120 MPs)

The single source of truth for who is an MP is the active assembly of the Assembly — exactly 120 members, sourced from the official register at kancelarii.sobranie.mk (status “active”). MPs who took office in the Government or as directors (whose mandate is frozen, e.g. the prime minister and ministers) and replaced MPs are not part of these 120 and are excluded from all per-MP views.

The “My MP” report covers the period January–June 2025; MPs who took office later (replacements) are shown in the assembly but without data for that period. The record of parliamentary questions is kept complete (657), but the per-MP rankings cover only active members.

Joining the datasets

The offices contain an MP UUID identifier that matches the official register 1:1 and is used as the primary join key. For the other datasets (names in different formats), a deterministic name normalisation is applied with an explicit exceptions table for variant records — without fuzzy matching, to avoid wrongly joining different people.

The MP profile unifies all three datasets and shows where data exists and where it is missing.

Update process

The dashboard does not use a live feed. Data is refreshed manually or via an automated script 2–3 times until March 2027. On each refresh:

  1. The script fetch_data.py fetches the new files from the CKAN API.
  2. The script scripts/process.py processes them and generates clean JSON files.
  3. The system automatically rebuilds and deploys the dashboard.

Dashboard last processed: 24 June 2026