Show HN: PolliticalScience – Anonymous daily polls with 24-hour windows

polliticalscience.vote

24 points by ps2026 18 hours ago


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.

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.

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.

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.

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.

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.

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.

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.

gucduck - 2 hours ago

This is very much in the same space as what I’ve been building, so it’s interesting to see the overlap in instincts here!

I started working on Civie (https://civie.org) 2 months ago, which also focuses on anonymous, low-friction daily civic polling with time-boxed questions and an emphasis on privacy by default. Different implementation choices, but the same core belief: participation should be easy, frequent, and not require turning your identity into the product.

Would love to chat sometime if you're interested in comparing notes and implementation!

oersted - 15 hours ago

Cool project! The results of all the archived votes made sense to me, but I was most surprised by this one:

> The U.S. was right to withdraw from the World Health Organization (WHO)

> 62% Agree - 38% Disagree

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.

ps2026 - 13 hours ago

Update: The HN traffic exposed a bug I hadn't caught... static caching of user-specific data in Blazor Server was causing session bleed under load. One comment got attributed to the wrong user. I am pushing a fix now, so the site will be down for a few minutes while it deploys.

If you posted a comment about "people find themselves in situations that shape their fate" and it's not showing under your username, you can email me at hello@polliticalscience.vote and I'll fix it.

crazygringo - 14 hours ago

This is cool. My main question is just, what is its purpose, if not just a coding experiment?

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 want it to become more accurate? Or is it just a toy?

I have so many questions just because it could 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?)

Very clever domain name btw.

kjshsh123 - 15 hours ago

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.

FranchuFranchu - 14 hours ago

You should probably say somewhere that the questions are US-centric. For example, "the death penalty should remain legal" doesn't make sense in places where it isn't.

agnishom - 10 hours ago

Interesting how the website is called "PoliticalScience" but mainly cares about US Politics

boldslogan - 15 hours ago

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.

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.

Anyways fun idea!

1e1a - 16 hours ago

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?

insane_dreamer - 6 hours ago

The problem with binary responses vs continuous or discrete responses is that the way the question is worded has a significant impact. If all you can do is agree or disagree, then you likely only get responses from those at either extremity of the opinion line.

bflesch - 16 hours ago

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. "

"No tracking" is a different concept than "Google analytics alternative".

- 18 hours ago
[deleted]