Drie schermen van Wijsstemmer op telefoons, tegen een donkere achtergrond
foto: Wijsstemmer

Case

Praten met het verkiezingsprogramma zelf

In tien dagen bouwden we Wijsstemmer: per politieke partij een chatbot op het eigen verkiezingsprogramma, met de passage erbij waar het antwoord op berustte. Twee weken voor de verkiezingen ging hij eraf, na een sommatie van ProDemos over de naam.

Wijstemmer 2023 AI automatisering, Webapplicaties

LaravelInertiaVue.jsTailwindLeto-chatwidgetRAG met vectordatabaseGitLab CIEigen hosting

11 partijen

elk een bot op het eigen verkiezingsprogramma

10 dagen

van eerste ontwerp tot persbericht

2 weken

voor de verkiezingen ging hij er weer af

In het najaar van 2023 wilden we laten zien wat een taalmodel doet als je het aan één bron vastlegt. Niet “wat vindt de AI hiervan”, maar: wat staat er in het verkiezingsprogramma van deze partij, en waar dan? Zo ontstond Wijsstemmer, een eigen project van Eenvoud en Leto, waarin je per partij een gesprek kon beginnen met het programma zelf.

Het was tegelijk de etalage van Leto: onze eigen dienst voor chatbots op je eigen documenten. Elf partijen, elf bots, allemaal op dezelfde motor. Tien dagen na het eerste ontwerp stond het online. Twee weken voor de verkiezingen hebben we het er zelf weer afgehaald.

Een kiezer brengt haar stem uit bij een stembureau, geholpen door een vrijwilliger
beeld: AI-gegenereerd in opdracht van Eenvoud

Het vraagstuk

Een verkiezingsprogramma is tientallen pagina’s lang en wordt door bijna niemand gelezen. Wat wél gelezen wordt zijn samenvattingen, en die zijn van iemand anders. Wij wilden de omgekeerde route: laat iemand zelf een vraag stellen, en antwoord alleen met wat er in het programma staat.

Dat stelt twee harde eisen. De bot mag niets verzinnen - staat het er niet, dan is het antwoord dat het er niet staat. En elk antwoord moet terug te leiden zijn naar de passage waar het op berust, anders is het net zo goed een mening. Daar komt nog iets bij: bij een politiek onderwerp is de vraag zelf gevoelige informatie. Wie wat vraagt, mag niet aan een persoon te koppelen zijn.

Staat het er niet, dan is het antwoord dat het er niet staat.

Het Binnenhof in Den Haag, gespiegeld in de Hofvijver
foto: Unsplash - Stephan van de Schootbrugge
Bekijk bron

Onze aanpak

We hebben de inhoud en het gesprek strikt gescheiden gehouden.

  • Het verkiezingsprogramma van elke partij ongewijzigd ingelezen, in stukken geknipt per alinea, met de vindplaats eraan vast
  • Die stukken in een vectordatabase, zodat een vraag in gewone woorden de juiste passage vindt en niet het juiste trefwoord
  • Per vraag alleen de relevante passages plus de vraag naar het taalmodel, zodat er geen antwoord kan ontstaan dat niet in het programma staat
  • Elf partijbots op één motor: onze eigen dienst Leto, waarin een bot niets anders is dan een set documenten met een widget erop
  • Een frontend in Laravel met Inertia en Vue, waarin je per partij een gesprek begint en met één tik naar een andere partij overstapt
  • Vragen anoniem verwerkt en in bulk doorgezet, zodat een vraag niet aan een bezoeker te koppelen is - uitgelegd op een eigen pagina in plaats van in de kleine lettertjes

Het ontwerp ging op 16 september de deur uit, de maandag erna begon het bouwen, en tien dagen later lag het persbericht bij de redacties. Klein team, korte lijnen, elke wijziging via dezelfde release-pijplijn naar productie.

De startpagina van Wijsstemmer op desktop, met de vraag met welke partij wil jij een gesprek beginnen en de partijlogo's op de kaart van Nederland
De startpagina van Wijsstemmer op mobiel, met de partijlogo's op de kaart van Nederland
De pagina Over Wijsstemmer op mobiel, met een foto van de plenaire zaal van de Tweede Kamer
Het chatscherm van Wijsstemmer op mobiel, waar je een vraag stelt aan het verkiezingsprogramma van een partij
De pagina Over Wijsstemmer op desktop, met een foto van de plenaire zaal van de Tweede Kamer

Het resultaat

Wijsstemmer stond eind september online en werd opgepikt: Sargasso zette hem in het rijtje kieswijzers, en de perslijst deed zijn werk. Elf partijen waren te bevragen, in gewone taal, met de passage erbij waar het antwoord op berustte.

Begin november kwam er een sommatie van ProDemos, de organisatie achter StemWijzer: de naam Wijsstemmer maakte volgens hen inbreuk op hun merk. Wij vonden van niet - Wijsstemmer nam de rol van StemWijzer niet over en had er prima naast kunnen bestaan - maar een merkenprocedure twee weken voor de verkiezingen leek ons geen goed idee. Op 6 november is de site omgedoopt tot Slimstemmer en kort daarna offline gegaan. Een week later stopte ook Leto: OpenAI had in een paar maanden ingehaald waar wij op hadden gebouwd, en die conclusie stond in september al in onze eigen stukken.

Wat overblijft is wat het aantoonde. Een taalmodel dat aan één document vastzit en zijn bron kan noemen is een ander apparaat dan een taalmodel dat overal antwoord op geeft. Dat onderscheid is de kern van elk AI-project dat we sindsdien voor klanten hebben gedaan.

Een taalmodel dat aan één document vastzit is een ander apparaat dan een taalmodel dat overal antwoord op geeft.

Tien dagen bouwen en elf partijen aan het woord - de techniek was het probleem niet, de naam wel.

Praat met ons

Vertel ons over je vraagstuk. Wij denken mee.

Binnen één werkdag reactie. Geen accountmanagers, geen verkooppraatje.