PolskiEnglish

Pryzmat · check it at the source

What is really happening in the Sejm?

Pryzmat collects public data on the Polish parliament - what MPs say, how they vote, what bills change, what they own and which companies they are linked to - and shows every figure next to the register it came from.

This page is the English introduction

The data pages, the source documents, the quotations and the existing AI analyses are in Polish, because the registers they come from are. Every link below that leads to a Polish page says so. The Polish home page is at pryzmat.net(in Polish).

Source data, calculation and AI interpretation are three different things. How to read them?

Sources and interpretations

How to read the debate analyses

The official transcript shows the record of a debate. The calculation describes the material that was analysed, and AI helps to classify features of a statement and to point out passages worth a closer look. Those are three different layers: source data, the result of a calculation and an interpretation. Analysis of the style of a statement is not a judgement of someone's views, nor of whether what they said is true.

AI can be wrong. A quotation lets you check what an interpretation was based on, but on its own it does not prove that the interpretation is correct. Before you use an analysis, check the date, the range of the material and the context in the source. The methodology describes what the indicators mean and where their limits are; a result is not a universal verdict on a politician.

Substance and specifics
how many concrete arguments and proposals there are, and how much of it is generalities.
Specifics vs evasions
whether a question gets an answer or an evasion, following a typology taken from the research literature.
Argumentation
possible logical fallacies flagged by the model - to be checked in context.
Persuasion techniques
an automatic classification of how an argument is made, not proof of what the speaker intended.
Data sources and how it works

How it works

1Data sources

All the data comes exclusively from official, publicly available sources. No information on this platform was obtained illegally, and none of it comes from a „leak”. Every source is public by law.

Sejm API
api.sejm.gov.pl
The official API of the Chancellery of the Sejm - MPs, votes, interpellations (formal written questions to the government), committees, official transcripts, legislative processes and Sejm papers.
KRS
prs.ms.gov.pl
KRS (the National Court Register) - companies, foundations, management boards, supervisory boards and shareholders (surnames masked under GDPR).
MSiG
ems.ms.gov.pl
MSiG (the Court and Commercial Gazette) - the full names of board members, which makes it possible to unmask entries taken from KRS.
Asset declarations
sejm.gov.pl
The public asset declarations of MPs - scanned PDFs put through OCR into a structured form.
CEIDG
dane.biznes.gov.pl
CEIDG (the Central Register and Information on Economic Activity) - sole traders.
VAT white list
wl-api.mf.gov.pl
The register of VAT taxpayers kept by the tax administration (KAS) - VAT status, bank accounts, representatives.
CRBR
crbr.podatki.gov.pl
CRBR (the Central Register of Beneficial Owners) - who really controls a company.
BZP
ezamowienia.gov.pl
BZP (the Public Procurement Bulletin) - contractors, tax identification (NIP) numbers and contract values.

2Processing and analytics

Raw data is processed automatically, using statistical and machine-learning methods. One rule applies throughout: if a journalist asks „how did you calculate this?”, the answer has to be method + sample size + confidence interval + a link to the code, and not „a threshold we set by eye”.

  • Voting patterns - detecting blocs of MPs who vote alike, and an ideological scale (who actually votes with whom), independently of formal parliamentary group membership.
  • Discipline and absences - the share of votes cast against the MP's own parliamentary group, with a confidence interval, and unusual absences on particular topics, checked with a statistical test.
  • Quality of speeches - analysis of how MPs speak from the rostrum: substance, evasions, rhetorical devices (see the section „How to read the debate analyses”).
  • Linking sources - cross-referencing data: an MP + companies from KRS + assets from declarations + public procurement. Every coincidence is shown as a fact with a source, never with a „suspicious” label.
  • Change tracking - every change in the data is logged with a date, the old value and the new one. Nothing disappears without a trace.

3The role of AI and the safeguards against errors

An important caveat

Artificial intelligence helps to describe the data and to analyse statements. It is not an independent source of facts. It can attribute context wrongly, flatten an argument or state a conclusion that does not follow. That is why an interpretation has to be set against the original material.

  • Quotation and context - check who the words belong to and what the discussion was about. A matching quotation does not on its own confirm the interpretation.
  • Range of the data - a result describes the material that was available and analysed. The absence of a marker is not proof that the phenomenon is absent.
  • A checkable claim ≠ a verified one - the fact that AI pointed to a specific claim does not mean that the claim has been verified.

4Technical architecture

The system is built on proven open-source technology. The source code is publicly available on GitHub.

Backend
FastAPI + PostgreSQL
data API, async, SQLAlchemy
Frontend
Next.js + ECharts
server-side rendering, interactive charts
ML/AI
Gemini + statistics
describing data and analysing debate quality, always with a quotation
Data
Public registers
votes, interpellations, official transcripts, assets, KRS
ETL
Cron + scrapers
refreshed from 8 sources, bronze→silver layers
Hosting
Railway
PostgreSQL + containers, Europe
Why Pryzmat was built and who makes it

Why this was built

I have no ties of any kind to any political party or political grouping.

As a citizen I watch how hard it is in Poland to reach reliable, well-ordered information about what members of parliament do. The data is public - the law guarantees that - but it is scattered across dozens of registers, in formats that make analysis difficult. To draw even simple conclusions about who works with whom and what the real connections are, you have to be an advanced analyst. It should not be like this.

I value the invaluable work of Polish investigative journalists. At the same time I see that their analyses - by the nature of the work - cover selected subjects at a particular moment. What is missing is a tool that would give continuous, holistic insight into what happens in the Sejm: who votes how, what business links they have, how their assets change from year to year. I am a programmer and a data analyst - tables, charts and diagrams are my language. That is why I built Pryzmat.

This project was not commissioned by any company, organisation or newsroom. I funded it out of my own pocket and gave it my own private time, guided by a simple conviction: if data about what politicians do is public by law, then it should also be easy to reach and easy to understand for every citizen.

I consider myself a patriot and I am not building this tool against anyone. Quite the opposite - I believe that transparency serves everyone, politicians included. The problem was never a lack of data, but the fact that it surfaced selectively, on the occasion of a particular scandal or a media cycle. I would like Pryzmat to change that dynamic - by giving everyone the ability to check the facts for themselves, without waiting for the next press piece.

I can see how complex and how opaque the Polish political scene is. Let me lay a layer of data-driven analytics over it - wherever the public registers and the right to information allow it.

About me

Michał Madejski

Michał Madejski

Programmer · Data analyst · Citizen

I run a one-person business in the technology sector. I specialise in data analysis, machine-learning systems and building analytics platforms. Pryzmat is my personal project - it is not sponsored, not commissioned and not connected to any political, media or business organisation.

If you share this mission and would like to work together or to support the development of the platform, you are very welcome to get in touch. This is a civic project, kept running with private money. Every form of support - substantive, technical or financial - lets me take Pryzmat further.

☕

Buy me a coffee

Pryzmat runs 24/7 - servers, a database, AI for analysing the data. That generates real costs, and my own work is not paid for. If you think a tool like this ought to exist, you can support me on Buy Me a Coffee. Even a single espresso makes a difference.

Open Pryzmat

Votes, assets, business links, the quality of debates and the path of a bill - data that is public by law, gathered in one place and described so that it can be checked.

Start with the news →(in Polish)