Maak je eigen versie
Deze stemwijzer is in één dag gebouwd door één inwoner met een AI-assistent. Dat kan voor elke gemeente en elke verkiezing. Hieronder staat de opdracht die de hele werkwijze beschrijft.
Plak de tekst in een AI-assistent die zelfstandig kan zoeken, bestanden kan schrijven en programma's kan draaien, zoals Claude Code. Vul bovenaan je eigen verkiezing in. Reken op enkele uren rekentijd en lees het resultaat kritisch na: de assistent maakt fouten, en jij bent verantwoordelijk voor wat je publiceert.
Alles wat hiervoor gemaakt is, staat openbaar op GitHub: de code van de site, de opdrachten die de AI-agents kregen, de rekenkern en de eerlijkheidstoets. De opdracht hieronder verwijst ernaar, zodat je assistent het als voorbeeld kan gebruiken. Bekijk de repository.
Bouw voor mij een onafhankelijke stemwijzer voor de volgende verkiezing: Verkiezing: [bijvoorbeeld: gemeenteraadsverkiezing in GEMEENTE op DATUM] Website-adres (als ik dat al heb): [domein] Er bestaat een uitgewerkt voorbeeld voor Hilversum: https://github.com/PaulTondeur/hilversumkiest Lees daar eerst README.md, de opdrachten aan de agents in werk/briefs/, de rekenkern in src/engine.mjs en de eerlijkheidstoets in tools/toets.mjs, en hergebruik wat past. Neem geen stellingen of posities over: die gelden alleen voor die ene verkiezing. Werk zelfstandig en kom pas terug als er een werkende, eerlijke stemwijzer staat. Geef onderweg kort aan waar je bent. Leg alle tussenresultaten vast in bestanden, zodat het werk controleerbaar en herhaalbaar is. WAT DEZE STEMWIJZER ANDERS MAAKT 1. De kiezer kiest eerst welke partijen hij overweegt. Hij wordt alleen met die partijen vergeleken, ook als het er maar twee zijn. 2. De kiezer kiest welke thema's hij belangrijk vindt en hoe diep hij wil gaan. 3. Uit een ruime bank van stellingen kiest de stemwijzer per thema de stellingen waarop juist de gekozen partijen van elkaar verschillen. Stellingen waarop ze hetzelfde vinden, worden niet gesteld. 4. Elke partij heeft per stelling een van vijf posities (eens, eerder eens, midden, eerder oneens, oneens) of "geen standpunt gevonden", met een toelichting die de nuance geeft en een bron. Een partij die een voorstel afwijst omdat ze een eigen plan heeft voor hetzelfde doel, is "eerder oneens", niet "oneens", en de toelichting noemt dat andere plan. Het format van de vragen mag lijken op een bekende Nederlandse stemhulp (stelling, antwoordknoppen, uitslag), maar neem geen teksten of ontwerp over van bestaande stemhulpen. STAP 1. FEITEN VERZAMELEN - Zoek de officiële lijst van deelnemende partijen met lijstnummers en lijsttrekkers (bekendmaking van het centraal stembureau). - Haal van elke partij het verkiezingsprogramma voor déze verkiezing op, bewaar het origineel en zet het om naar platte tekst. Controleer dat de tekst leesbaar is en in de goede volgorde staat (pdf's met kolommen lopen vaak door elkaar). - Zoek wat partijen zelf elders hebben geantwoord: de officiële stemhulp van de gemeente, andere stemhulpen, stellingenreeksen in lokale media. Dat is bewijs voor posities, geen bron voor stellingen. - Zoek het stemgedrag in de gemeenteraad over de afgelopen periode op verdelende onderwerpen, met bron per stemming. Leg vast welke nieuwe partijen uit welke oude fracties voortkomen. - Verzamel de praktische informatie: wie mag stemmen, wat neem je mee, volmacht, stembureaus met adres en openingstijden, belangrijke data. Elk feit met bron. - Haal de officiële kandidatenlijsten op (de bekendmaking van het centraal stembureau): per partij elke kandidaat met nummer, naam en woonplaats. Dat is de waarheid voor wie er op het stembiljet staat. - Haal van elke partij het logo op, van haar eigen site of anders van Wikimedia Commons, en noteer de bron. - Verzin niets. Wat je niet kunt staven, laat je weg of markeer je als onzeker. STAP 2. PER LIJST HET PROGRAMMA UITLEZEN Lees elk programma van begin tot eind en leg per thema alle concrete keuzes vast: voor of tegen wat, hoeveel, waar, wie betaalt, onder welke voorwaarde. Bij elk standpunt hoort een letterlijk citaat met pagina. Controleer met een script dat elk citaat letterlijk in de brontekst staat. Behandel elke partij op precies dezelfde manier. Vul niets in op basis van wat een landelijke partij "vast wel vindt". STAP 3. STELLINGEN ONTWERPEN Zoek per thema waar partijen echt uit elkaar gaan en ontwerp daar stellingen voor. Eisen: - Partijen staan aan beide kanten: minstens ongeveer een kwart van de partijen met een bekend standpunt aan elke kant. Stellingen waar bijna iedereen het mee eens is, vallen af. - In lagen: per onderwerp een hoofdvraag en vervolgvragen die partijen aan dezelfde kant van elkaar scheiden. Zorg bewust voor stellingen die "buren" scheiden: partijen die verder op elkaar lijken. - Eén gedachte per stelling, over iets waar dit bestuur over gaat, in gewone taal, zonder ontkenningen en zonder geladen woorden. Eigen formulering. - Bij elke stelling een neutrale uitleg en het sterkste eerlijke argument van voor- en tegenstanders. - In balans: per thema ongeveer evenveel stellingen waarop de ene kant "eens" zegt als de andere. Geen partij mag de vaste ja-zegger of nee-zegger zijn. Draai stellingen om tot dat klopt. - Let erop dat ook partijen met een dun programma op genoeg stellingen een standpunt hebben. STAP 4. POSITIES BEPALEN IN VIER RONDES 1. Per partij: lees het hele programma van die partij en bepaal haar positie op alle stellingen, met citaat en bron. 2. Per thema: bekijk alle partijen naast elkaar met dezelfde maatstaf, onafhankelijk van ronde 1 en liefst met een ander model. 3. Beslechten: waar de twee rondes tegenover elkaar staan, of waar maar één van de twee een standpunt zag, gaat een derde ronde terug naar de bron en beslist. 4. Consistentie: loop per stelling alle partijen langs. Klopt de richting bij omgekeerd geformuleerde stellingen? Krijgt hetzelfde standpunt bij elke partij dezelfde score? Is "midden" een bewuste tussenpositie of eigenlijk geen standpunt? Bewijsvolgorde: uitdrukkelijke tekst in het programma, dan het eigen antwoord van de partij in een stemhulp, dan stemgedrag, dan een voorzichtige afleiding (nooit meer dan "eerder eens" of "eerder oneens", en als afgeleid gemarkeerd). Bij twijfel: geen standpunt. Rapporteer hoe vaak de rondes het eens waren. Schrap daarna de stellingen die toch geen partijen blijken te scheiden of die op twee manieren te lezen zijn, en zeg op de site welke dat waren. Laat tot slot de uitleg bij elke stelling op feiten controleren tegen officiële en lokale bronnen: jaartallen, bedragen, wat al besloten is en wie erover gaat. In programma's staan beweringen die niet kloppen of verouderd zijn. STAP 5. REKENEN - Antwoorden en posities op een schaal van -2 tot +2. - Overeenkomst per stelling: de afstand tussen antwoord en positie. Alleen afstand tellen bevoordeelt partijen met veel middenposities, want het midden ligt nooit ver weg. Standaardiseer de afstand daarom per positie, zodat een willekeurige invuller bij elke positie gemiddeld 0 scoort met dezelfde spreiding. Controleer met de toets dat een willekeurige invuller bij elke partij ongeveer even vaak uitkomt. - Geen standpunt bekend telt neutraal (0). Toon in de uitslag op hoeveel stellingen een standpunt bekend is. - Stellingen kiezen: per thema de stellingen met de grootste spreiding tussen de gekozen partijen, met een korting op herhaling van hetzelfde onderwerp. - Alles in de browser berekenen. Geen antwoorden versturen of opslaan op een server, geen cookies. Wil ik weten hoe de site gebruikt wordt, tel dan alleen anoniem en zonder cookies (bijvoorbeeld Plausible op een eigen server): paginabezoek, herkomst en een paar handelingen, nooit de antwoorden of de gekozen partijen, en zeg dat op de site. STAP 6. EERLIJKHEID TOETSEN, IN MEERDERE RONDES Schrijf een toets die je na elke wijziging draait, en pas stellingen, posities en rekenwijze aan tot de uitkomsten goed zijn: - Zelfherkenning: wie precies antwoordt als partij X, krijgt X bovenaan. Ook binnen willekeurige groepjes partijen en thema's. - Aanhangers met eigen accenten: wie op een deel van de punten net anders denkt dan zijn partij, krijgt die partij nog steeds meestal bovenaan, en dat lukt voor elke partij ongeveer even goed. - Willekeurige antwoorden: elke partij wint ongeveer even vaak. - Overal "eens" of overal "oneens" antwoorden levert geen duidelijke winnaar op. - Per partij ongeveer evenveel "eens" als "oneens". - Elk tweetal partijen heeft genoeg stellingen waarop het verschilt. STAP 7. KANDIDATEN Toon bij elke partij alle kandidaten in de volgorde van het stembiljet, met waar mogelijk een portret, een korte neutrale beschrijving en een link naar het LinkedIn-profiel. Het gaat om echte mensen: een verkeerde foto of het profiel van een naamgenoot is erger dan een leeg veld. - Foto alleen van de eigen site van de partij of van de gemeenteraad, en alleen als de pagina de foto ondubbelzinnig aan deze naam koppelt. Niet van nieuwsmedia of sociale media. Herken niemand aan zijn gezicht. - Beschrijving van hooguit twee zinnen, alleen feiten uit de bron die bij de kandidatuur horen. Geen privézaken, geen campagnetaal. - LinkedIn alleen met bewijs: de partij linkt er zelf naar, of het profiel noemt zelf de partij of de raad, of naam, plaats en een tweede feit kloppen. Alleen een naam is geen bewijs. - Twee rondes: een ronde verzamelt met bewijs, een tweede controleert onafhankelijk op de bron. Alleen wat de tweede ronde zelf zag, komt op de site. Laat een script daarna nog zoeken naar dezelfde foto of hetzelfde profiel bij twee mensen. - Toon van minderjarige kandidaten alleen wat op het stembiljet staat. Zet aantekeningen over personen uit het zoekwerk niet in een openbare repository. STAP 8. DE WEBSITE Een snelle, toegankelijke, statische site die ook op een telefoon goed werkt: - voorpagina met uitleg en directe start; - de stemwijzer: partijen kiezen, thema's kiezen (met per thema het aantal stellingen waarop de gekozen partijen verschillen), stellingen (met bij elke stelling een knop "Wat vinden de partijen?" die eerst de gekozen partijen toont en op verzoek alle partijen), uitslag met per stelling de positie van elke partij, de toelichting en de bron; - een overzicht van alle partijen met logo en per partij een rij kleine portretten van haar kandidaten, die doorlinken naar die kandidaat; - een pagina per partij met logo, speerpunten, alle kandidaten (zonder uitklappen), alle standpunten en de partijen die er het dichtst bij en het verst van af staan; - vergelijken: een kaart van alle partijen naar inhoudelijke afstand, waarop je twee tot zes partijen aantikt om ze naast elkaar te leggen en er daarna de stemwijzer mee te doen; - praktische informatie over stemmen, en een stembureauvinder met een prominente knop in het menu: een kaart van de hele gemeente die op de site zelf staat (geen kaartdienst van buiten), in 3D met een wissel naar plat, de stembureaus als rood gebouw. Bouw haar uit open gegevens (in Nederland: 3D BAG voor gebouwen, OpenStreetMap voor de ondergrond) en laad in lagen: uitgezoomd alleen de stembureaus in 3D, dichterbij gebouwen als blok, dichtbij met dakvorm. Maak haar mooi: schaduwen, bomen, en iets wat beweegt (een trein, een zeilboot); - naast de naam van de site in de kop de dag en de openingstijden van de stembureaus; - een verantwoording waarin eerlijk staat hoe het gemaakt is, wat de uitkomsten van de eerlijkheidstoets zijn, dat de posities niet door de partijen zijn gecontroleerd en wat de stemwijzer niet kan. Geef de site een eigen gezicht dat bij de plaats past. Houd de pagina's eenvoudig: liever alles zichtbaar dan veel uitklappen. TOT SLOT Vertel me wat je hebt gebouwd, wat de toets laat zien, waar je het minst zeker over bent en wat ik zelf nog moet nalopen voordat dit openbaar gaat.
Drie adviezen uit de praktijk
- Laat elk citaat door een script controleren tegen de brontekst. Het is de goedkoopste manier om verzinsels te vangen.
- Bekijk de uitkomsten van de eerlijkheidstoets zelf. Als één partij opvallend vaak wint bij willekeurige antwoorden, klopt er iets niet in de stellingen of de rekenwijze.
- Zet op de site hoe het gemaakt is en wat het niet kan. Zo hebben wij dat gedaan.