I built a better voting guide because the others are broken

I built a better voting guide because the others are broken

Published October 10, 2025📱 Multi-format available

I Built a Better Voting Guide Because the Others Are Broken

Hey folks, it's been a bit since my last post on AI in healthcare, but with the Dutch House of Representatives elections coming up on October 29, I figured it was time to switch gears. As an AI full-stack developer, I spend a lot of time building tools that cut through the noise and make complex stuff easier to handle. This time, I took on something closer to home: voting guides.

If you're in the Netherlands like me, you've probably seen sites like StemWijzeror Kieswijzer popping up everywhere. They promise to help you figure out which party matches your views, but after digging in, I found most of them are full of subtle biases that skew results without you even noticing. So, I built my own version at https://schmeitzke.com/verkiezingslens/ (why VerkiezingsLens, you ask? Because they trademarked StemWijzer). It's live now, and in this post, I'll walk you through why I made it, how it works under the hood, and why I think it's a step up from the rest. I'll keep it straightforward for anyone new to this, but I'll dive into the tech details too for those who want the nitty-gritty. Let's get into it.

The Problem with Most Voting Guides

First off, let's talk about why existing tools fall short. I did some research because, honestly, I was getting ready to vote myself and wanted something reliable. What I found bugged me. A lot of these guides use simple agree or disagree setups for statements, like "We should raise taxes on the rich." You pick agree, neutral, or disagree. Sounds harmless, right? But studies show people tend to agree more than disagree just because of how our brains work. It's called acquiescence bias. On top of that, research suggests they often colour the buttons green for agree and red for disagree, which nudges you toward green since it's linked to positive vibes in our minds. I pulled from sources like psychological research on survey design, and it's clear this stuff influences answers without people realising.

Then there's the calculation side. Most guides just count how many times your answer matches a party's position and give you a percentage based on that. If you agree with Party A on 20 out of 30 questions, you get 67%. But that misses the point. Not all questions are equal, and it doesn't capture how strongly you feel about options or how parties rank against each other in a more nuanced way. Plus, they usually stick to 30 questions, which feels too shallow for big topics like healthcare, climate, or taxes. And accessibility? A lot of them aren't great for folks with disabilities, like blind users who need screen readers or keyboard navigation.

I wanted to fix all that. My goal was a guide that's as neutral as possible, deeper, and open to everyone. No hidden pushes, just facts from party programs, and smarter ways to score your answers. That's how my VerkiezingsLens came about.

How I Built the Basics: Questions, Options, and User Experience

I started by pulling data straight from official party programs for the 2025 elections. No opinions, just what the parties actually say. I aimed for depth, so users can pick 50, 75, or 100 questions. Why more than the usual 30? Because politics isn't black and white. More questions let you cover nuances across domains like economy, environment, healthcare, and immigration.

For each question, I avoided agree or disagree traps. Instead, I phrase them neutrally. Take this example: "What should happen with tax benefits and subsidies for fossil fuels?" Then I give five options:

  • These benefits should remain to protect the economy and employment.
  • All tax benefits and subsidies for fossil fuels should be abolished as soon as possible.
  • These benefits should be gradually phased out, taking into account the economic consequences.
  • No preference.
  • Don't understand.

These come directly from party stances, without leading words. To kill any colour bias, the whole UI is in shades of grey. No green or red buttons to sway you. I built it with React and Next.js for a smooth experience, and I made sure it's accessible. Blind users can navigate with keyboard arrows, select answers with the number keys (1-5), and utilise the built-in text-to-speech feature to have questions read aloud. It’s a tool for everyone.

Sourcing the Questions: Leveraging LLMs for Objectivity

Here's something cool I discovered while building this. I needed 100 questions to give users real depth, but I'm not a political expert, and I didn't have weeks to read every party program myself. So, I came up with a plan: why not feed all the official party programs to large language models (LLMs) and have them generate the questions? That way, the questions come straight from the source material without my own biases creeping in.

I gave the programs to several LLMs from different companies, like ChatGPT, Grok, and others. Research shows these models can lean politically. ChatGPT tends more left, Grok more right, so I had them work together to reach a consensus. For each question, the LLMs analysed the programs, came up with neutral statements, generated three unbiased answer options, and then assigned parties to the right answers based on what the programs actually said. If they disagreed, I had them discuss and vote on it until they agreed. This might sound odd, but it worked better than I expected. The math behind the tool ended up confirming the questions were solid, more on that later.

The Scoring Methods: From Simple to Smart

Now, the fun part: how it calculates your results. I give users three options after finishing the quiz, so you can see different angles. One is the old-school approach most guides use, which I include to illustrate its limitations. The other two are better, using smart, established ranking models. I'll explain each.

1. The Deterministic Method (The Flawed Classic)

This is the basic count I mentioned earlier. It looks at your answers and checks how often they match a party's position on questions where both you and the party have a clear stance. It's straightforward, but here's why it's flawed: it treats every match the same. If you pick option A over B and C, it doesn't capture that A might be way better than B for you, while B is just okay. It's like ranking movies by how many you watched, not how much you liked them. Still, I include it so users can compare.

2. The BT Estimator (A Smarter Ranking Approach)

This is where it gets interesting. I used a sophisticated method called the Bradley-Terry (BT) model. Forget simple counting; think of this as a deep personality analysis versus a simple checklist. The goal isn't just to see if you agree with a party, but to understand how you think and find the party whose overall pattern of reasoning is most similar to yours.

It works in two main steps:

  1. First, the model learns YOUR ideology. It looks at all your answers at once, not one by one. It searches for a consistent pattern. To do this, it uses the political parties as a guide. If you consistently choose answers supported by a similar group of parties across different topics (like the economy, climate, and healthcare), the model identifies this as your unique "ideological fingerprint." It learns what a "good" answer looks like to you, without any pre-programmed ideas of "left" or "right."

  2. Then, it finds the party that best fits your fingerprint. Once the model has created your personal profile, it uses it as a scoring key. It goes through each political party's entire platform and measures how well it aligns with the ideological pattern you've revealed.

This is much better because it ranks parties by ideological proximity, not just direct matches. It recognizes that even if you don't agree with a party on every single question, their general way of thinking can be a near-perfect fit. It rewards the underlying consistency in your choices, giving a much truer and more nuanced result.

3. The Hybrid Method (Best of Both Worlds)

This method merges the two. It takes the standardised scores from the simple deterministic count and the smart BT model and blends them together (with a 60% weight on the deterministic score and 40% on the BT score). This creates a balanced result that values both direct matches and the underlying ideological nuance. It gives users the ability to switch modes and see the differences for themselves.

Extra Features in Results: Visuals and Insights

In the results page, I added tabs for an overview, a landscape chart showing party positions in a 2D space, and a "maverick" section highlighting where you differ from your top match.

The landscape computes a political map based on the parties' stances. Parties that are close together share similar views; those far apart differ more. The x and y axes emerge from the data's correlations, with no predefined labels like "left/right." Your dot shows where you fit.

Now, tying back to the LLM question generation: the landscape doesn't know terms like left/right or conservative/liberal. It just crunches the numbers. But when I ran it, the plot came out looking a lot like the real Dutch political landscape. This was a nice validation; the LLMs produced questions and assignments that, when math-checked, lined up with reality.

The maverick tab is made to find your "unusual" answers. One's rare among parties or diverging from your top match, sorted by rarity. It encourages broader thinking.

Why This Guide is Better (And What I Learned Building It)

Compared to others, mine avoids biases with neutral phrasing, more questions, and grey UI. The methods give deeper insights, and accessibility makes it inclusive. The LLM sourcing and landscape validation adds an extra layer of objectivity I didn't expect.

Building it taught me how smart ranking can apply to real-world choices, like elections. It took days of tweaking the BT model for accuracy and implementing the landscape math, but seeing it rank parties based on true preferences and validate the questions was worth it.

If you're voting, give it a try at https://schmeitzke.com/verkiezingslens/. It's free, no ads. And if you need AI tools for your own projects, like custom ranking systems or accessible apps, drop me a line. Let's chat