Politiek.app maakt de Nederlandse politiek controleerbaar: wie stemde waarvoor, in de Tweede Kamer én in 351 gemeenteraden, met bij elke stem een link naar de bron. In deze case study laten we zien wat er achter dat platform zit, welke problemen we moesten oplossen en waarom het anders is dan een gewone politieke website.
De opdracht: politiek zonder tussenpersoon
Wie wil weten hoe een partij echt stemde, moet nu door vergaderverslagen, pdf’s en losse portalen graven. Bij de Tweede Kamer is dat nog te doen, maar bij gemeenteraden is de informatie versnipperd over verschillende systemen en vaak maanden achterop. Politiek.app brengt dat samen op één plek. Het doel: een bezoeker beantwoordt in een paar seconden de vraag “wat deed mijn partij, of mijn gemeente, hierover?”, en kan bij elke uitspraak zelf nagaan waar die op gebaseerd is.
Wat Politiek.app te bieden heeft
- Stemmingen van de Tweede Kamer per partij, met de tekst van de motie en wat die vraagt en waarom.
- Gemeenteraden: stemmingen, moties, amendementen en raadsvragen van 351 gemeenten.
- Personen: een database van Kamerleden, raadsleden en burgemeesters.
- Stemwijzer die op echte stemmingen is gebouwd, plus een wekelijkse peiling en trends per partij.
- Verkiezingen: uitslagen per gemeente en per stembureau, tot op wijkniveau.
- Gemeentelijke uitgaven en heffingen, en kerncijfers van wijken en buurten.
- Bekendmakingen: vergunningen, evenementen en verkeersbesluiten uit het Gemeenteblad.
- Agenda van komende raads- en commissievergaderingen, met meldingen voor abonnees.
- Pro-account en publieke API voor journalisten, onderzoekers en ontwikkelaars.
Wat het zo bijzonder maakt
1. Alles herleidbaar tot de bron
Het platform verzint niets. Elke stem, elk besluit en elk cijfer komt uit open data: Tweede Kamer Open Data, OpenBesluitvorming, de iBabs- en NotuBiz-portalen van gemeenten, het CBS, de Kiesraad en officielebekendmakingen.nl. Waar iets een benadering is, zegt de pagina dat ook. Een stembureau is bijvoorbeeld niet hetzelfde als een wijk, want mensen stemmen niet altijd in hun eigen buurt. De wijkuitslagen worden daarom expliciet als benadering getoond.
2. Gemeenteraden, waar geen nette data bestaat
Dit is het moeilijkste deel. Voor de Tweede Kamer bestaat een nette open-data-API, voor gemeenten niet. Veel raden publiceren hun uitslagen alleen als lopende tekst in een verslag, bijvoorbeeld: “Besluit: motie 1 is aangenomen met 32 stemmen voor (de rest) en 2 stemmen tegen (GdL-EA)”. Voor de verschillende schrijfstijlen hebben we eigen parsers gebouwd die uit zulke zinnen afleiden welke fracties voor en tegen stemden, ook als de tekst alleen “de rest” of “unaniem” zegt. Raden die via NotuBiz publiceren schrijven weer anders (“verworpen met 7 tegen 28 stemmen, waarbij de fracties van FVD en de PVV ervoor hebben gestemd”), dus daar draait een tweede parser. En omdat Open Raadsinformatie soms maanden achterloopt, leest het platform waar nodig rechtstreeks het openbare iBabs-portaal van de gemeente, dat wél actueel is.
3. Moties die rondreizen
Dezelfde motie duikt vaak in meerdere gemeenten op, met bijna dezelfde woorden. Politiek.app vergelijkt de significante woorden van moties en amendementen tussen gemeenten en koppelt overeenkomstige teksten tot een cluster. Daardoor is zichtbaar welk modelvoorstel zich over het land verspreidt, en welke raden er wel of niet in meegingen. Het cluster wordt elke dag opnieuw opgebouwd.
4. Een stemwijzer die niet veroudert
Een gewone stemwijzer is gebaseerd op stellingen die iemand een keer heeft bedacht. Die van Politiek.app gebruikt de omstreden moties van de afgelopen weken als vragen, dus hij is altijd actueel. De overeenkomst met een partij is het aandeel van die stemmingen waarop de partij net zo stemde als jij. De uitkomsten worden zonder persoonsgegevens bewaard (alleen week, bereik en best passende partij), en daaruit komt een wekelijkse peiling. De pagina’s zeggen er eerlijk bij dat dit geen representatieve peiling is. Daarnaast volgt het platform per partij hoe vaak de uitkomst overeenkwam met haar stem (“invloed”), de laatste weken tegenover de weken ervoor.
5. Weten wat er speelt, zonder artikelen te lezen
Een stemming over een onderwerp dat die week het nieuws domineert is belangrijker dan een hamerstuk. Het platform bewaart alleen de koppen van het nieuws (geen artikelen) en ziet welke woorden plotseling in veel koppen opduiken. Moties en vragen over zo’n onderwerp krijgen het label “actueel”, en een motie over een dominant onderwerp heet omstreden, ook als de uitslag duidelijk was. De geschiedenis van die woorden per dag wordt bewaard, zodat achteraf nog is op te zoeken wat toen speelde.
6. Onderwerpen die kloppen
Per onderwerp (wonen, zorg, energie en meer) telt het platform de stemmingen van Kamer en raden over anderhalf jaar. Een woord telt alleen als het aan het begin van een woord in het onderwerp van de stemming staat, en uitsluitzinnen voorkomen valse treffers: “parkeer” mag niet een motie over reiskosten vangen die toevallig een parkeerplaats noemt. Zo kloppen de onderwerppagina’s ook zonder redactie.
7. Moties, vragen en wetten leesbaar
Moties worden als pdf uit de open data gehaald en teruggebracht tot wat ze vragen en waarom. Schriftelijke Kamervragen en de antwoorden van het kabinet worden ingelezen tot platte tekst, zodat de pagina de tekst zelf toont in plaats van alleen te verwijzen. Ook de wetsvoorstellen (kamerstukdossiers) en hun laatste documenten worden bijgehouden.
8. Van landelijk naar je eigen buurt
Met CBS-kerncijfers (inwoners, leeftijden, huishoudens, wonen, inkomen en werk) en de gemeentelijke heffingen per inwoner zie je naast de stemmen ook voor wie en met welk geld er besloten wordt. Verkiezingsuitslagen gaan tot op stembureau, en omdat de postcode van een stembureau via de BAG en PDOK naar een wijk wordt herleid, heeft zelfs een wijk een eigen (bij benadering bepaalde) uitslag.
Onder de motorkap
Politiek.app is een maatwerk systeem met een eigen databaselaag, geen kant-en-klaar thema met plug-ins. Een paar keuzes die het verschil maken:
- Doorlopende imports. De Tweede Kamer-importer draait elke paar minuten via en gaat verder waar de vorige run stopte, met een cursor op de eigen wijzigingstijd van de API. De eerste runs vullen de geschiedenis, latere pikken alleen wijzigingen op. Stemmingen met naamafstemming (één regel per Kamerlid) worden samengevat tot één regel per partij; wie anders stemde dan zijn fractie blijft apart zichtbaar.
- Beleefd voor bronnen. De OpenBesluitvorming-client respecteert de limiet van 60 verzoeken per minuut en wacht een 429 netjes uit.
- Eén zware klus tegelijk. Meerdere imports tegelijk zouden alle workers bezetten en de site laten vastlopen. Een slot zorgt dat een zware taak een paar minuten wordt uitgesteld als er al een draait, en laat zichzelf los, hoe de aanvraag ook eindigt.
- Pro-API met sleutel per account, limieten per abonnement (aanvragen per dag en hoe ver de geschiedenis terug gaat), en een teller per account en dag.
- Insluitbare kaarten: een stemming of een gemeente is als embed op een andere site te plaatsen, en zonder JavaScript blijft de link bestaan.
- Beveiliging en privacy staan niet los: uitvoer wordt geëscaped, invoer gesaneerd en nonces gecontroleerd. De stemwijzer bewaart geen persoonsgegevens.
Het resultaat
Op het moment van schrijven bevat Politiek.app ruim 13.000 stemmingen van de Tweede Kamer, meer dan 80.000 gemeentelijke stemmingen en ruim 25.000 raadsvragen uit 351 gemeenten, circa 8.700 politici en meer dan 100.000 bekendmakingen. Het groeit door, want de imports lopen continu.
Voor burgers is het een manier om zelf te controleren wat er in hun naam besloten wordt. Voor journalisten is het een bron van nauwelijks gemelde stemmingen, met een apart overzicht “interessant voor de pers”. Voor onderzoekers en ontwikkelaars is het een API.
Wat wij hiervan meenemen
Politiek.app laat zien waar wij goed in zijn: rommelige, versnipperde publieke data omzetten in een snel, betrouwbaar en doorzoekbaar platform, dat zichzelf bijwerkt en eerlijk is over zijn grenzen. Dezelfde aanpak werkt voor elke organisatie die veel data heeft en die begrijpelijk wil maken.
Benieuwd naar wat wij voor u kunnen bouwen? Neem contact op, of bekijk Politiek.app zelf op politiek.app.