Show HN: PolliticalScience – Anonymous daily polls with 24-hour windows
by ps2026 on 2/2/2026, 5:55:11 PM
I have been building a Blazor WASM enterprise app for a few years now. I wanted a break from it and had an idea for a side project that had been in the back of my mind for a few years. A daily political poll where anyone can participate and privacy is a product, not a checkbox.<p>This is how it works. One question per day about current events. Agree or Disagree. Each poll runs for 24 hours (midnight to midnight ET) and then close permanently. You do not need an account to vote. The main idea is to capture sentiment at a specific point in time, before the news cycle moves on and people's opinions drift.<p>For this app, I tried to make privacy the point and not just a feature. I originally used a browser fingerprint for anonymous voting, but recently changed it to a simple first-party functional cookie. It uses a random string and the PollId to see if your browser had voted before. The server stores a hash of the cookie to check for duplicates while the poll is live, then deletes all hashes when the poll closes. Only the aggregate counts remain. The browser fingerprint had way too many device collisions where it would show someone they voted even though they had not (an odd thing to see when you go to a poll). The HttpOnly cookie is also available during prerender, which helped eliminate loading flashes I was getting.<p>This app was built with .NET 10 Blazor with a hybrid Static SSR + Interactive Server. The static pages (about, privacy, terms, etc...) don't need SignalR connections. The interactive ones (voting, archive, results, etc...) do. Mixing these modes was a new experience for me and ended up being pretty tricky. I ended up with data-enhance-nav="false" on most links to prevent weird state issues.<p>The two biggest things I learned during building this app was how to prevent weird blazor flashes and duplicate queries during pre-render, hydration, and state changes. I used the _ready pattern from preventing the hydration flashes (gate rendering until data is loaded by setting the flag before the first await). Preventing the duplicate queries was possible by using a 2-second static caching during prerender to hydration.<p>This isn't scientific polling and these are obviously not representative samples. The 24-hour window means smaller numbers than longer surveys and it's only a survey of those who choose to participate. The Agree/Disagree binary choice basically flattens nuance (like I sort of agree), but I am okay with all of this as I think a lot of people feel they never get to participate in these sorts of polls.<p>I recently also added discussions with AI moderation (Claude Haiku 4.5 as a "first-pass" filter which flags things clearly out of the community guidelines for human review), a reaction system where counts stay hidden until the discussion closes, and news coverage from across the political spectrum shown after you vote for more perspective on the topic.<p>Thanks for checking it out and happy to dig into any of the Blazor SSR patterns or anything else that sounded interesting. I know Blazor is less frequently used and especially for a public facing website. It did have its challenges, but so far, it has been a blast to work with overall.
https://polliticalscience.vote/
Comments
by: crazygringo
This is cool. My main question is just, what is its purpose, if not just a coding experiment?<p>Like you say, it's not scientific or representative. Is it for entertainment, do you want to gamify it? Is it pedagogical? Why is it anonymous? Do you want it to get picked up by the media? Are you trying to demonstrate something about public opinion or polarization? Do you want it to become popular? Do you <i>want</i> it to become more accurate? Or is it just a toy?<p>I have so many questions just because it <i>could</i> be so many different things, and the idea of a single daily poll on the main current event feels like it could have legs. (Though I don't know what today's poll about the death penalty has anything to do with today's or yesterday's news cycle?)<p>Very clever domain name btw.
2/2/2026, 9:13:10 PM
by: oersted
Cool project! The results of all the archived votes made sense to me, but I was most surprised by this one:<p>> The U.S. was right to withdraw from the World Health Organization (WHO)<p>> 62% Agree - 38% Disagree<p>I didn't know that the WHO had such a negative reputation. We are quite fond of such international institutions in the EU at least (ranging from a force for good to fairly harmless). What's the context? The rest of the votes seem quite liberal leaning otherwise.
2/2/2026, 8:27:32 PM
by: kjshsh123
I think it would be cool to track how votes differ depending on where a user was linked from. Being able to see e.g. "x% from hackernews support death penalty, y% from x". You wouldn't just be polling but also showing differences between users of different sites.
2/2/2026, 8:24:12 PM
by: boldslogan
feature request? dumb question, but can you add underneath or after you click your vote and before you show it. can you ask "What do you think most people answered" for that question.<p>It is cool to see the distribution of yes/no. But maybe when you do that you can do a kind of....how far off was i type result that lets people learn about their...biases? or just a fun surprise.<p>Anyways fun idea!
2/2/2026, 8:46:38 PM
by: 1e1a
It would be cool to be able to see how sentiment changes for a specific issue over time. Maybe you could recycle questions every so often?
2/2/2026, 7:28:20 PM
by: bflesch
Website says "no tracking" on the frontpage. I look at ublock origin, it mentions one blocked domain called "plausible.io". I go to plausible.io and see that "Easy to use and privacy-friendly Google Analytics alternative Plausible is powerful, lightweight analytics. No cookies, just insights. Made and hosted in the EU, powered by European-owned infrastructure. "<p>"No tracking" is a different concept than "Google analytics alternative".
2/2/2026, 8:00:28 PM
by:
2/2/2026, 5:59:26 PM