Danish Parliament is public, but not readable

- ai
Folketinget (Danish Parliament) publishes almost everything it does. Bills, committee questions, meeting transcripts, votes. It is all public, and there is even an open data API. In theory you can follow any law from first draft to final vote.
In practice, nobody does. The data is there, but it is shaped like a database, not like a question a person would ask.
So I built FT Doks, a searchable overview of Folketinget's bills, votes and documents.
Implementation model vs. mental model, again
Back in 2015 I wrote about the difference between a mental model and an implementation model. Folketinget's open data is a textbook implementation model. It is an OData v3 API with tables like Sag, Aktør, SagAktør and Afstemning, joined through type ids and role ids you have to look up in other tables. It is complete and well maintained, and it answers none of the questions you actually have.
The questions people have look like this:
- What is L 23 about, and did it pass?
- Who proposed it, and which committee handled it?
- How did each party vote?
- What did the minister actually say in the debate?
FT Doks is my attempt at the mental model. It organizes the data around cases, actors, meetings and votes, and puts the timeline of a bill on one page. Take L 23 on capacity in the electricity grid: what the bill does, who put it forward, the committee it went to, every reading, and the vote, without opening a single PDF first.
Where the ML comes in
The structured metadata is the easy part. The hard part is the documents behind it: thousands of PDFs, committee answers and transcripts. FT Doks extracts their text, indexes it for search, and uses language models to classify and answer questions about a case, with answers that point back to the source document they came from. Grounding matters more than fluency here. An answer about a law that cannot show where it came from is worse than no answer.
I maxed out the Cloudflare Paid allowance on D1 and found out how expensive it is to run at scale, missing indexes easily consume $150 in a few hours - even for just driving the ETL pipelines. I switched to PlanetScale in the process.
Why
I always thought the media reports on what fits their narrative and omit details. I know how effective language models are at understanding vasts amounts of text and reasoning about it.
It is a side project and it is free to use. If you are a journalist, a researcher, or just curious about what parliament is doing, try ftdoks.dk and tell me what is missing.