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.
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.
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.
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:
- The script
fetch_data.pyfetches the new files from the CKAN API. - The script
scripts/process.pyprocesses them and generates clean JSON files. - The system automatically rebuilds and deploys the dashboard.
Dashboard last processed: 24 June 2026