Show HN: PolliticalScience – Anonymous daily polls with 24-hour windows
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.

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.

  • ps2026
  • ·
  • 21 minutes ago
  • ·
  • [ - ]
I am not really sure honestly. I thought of the idea a couple years ago and thought it was interesting. I follow politics and current events, but never really participated in online discussions of it. I have a background in data analytics and have loved stats since I was a kid. I always followed sports stats and election poll stats. I have been working on an enterprise application for ~ 3 years now, that I hope to beta test this year and it has been pretty heavy. I decided to take a short break and just get this idea I had out there and see how it goes.

The reason it is anonymous is I do not want to tie users to votes. A couple reasons being liability. If I know who you are, how you are voting, and your demographics, that is pretty powerful, but also a ton of liability. If something happened and that data got leaked out, that could be awful. I also don't think users are as likely to create an account, give away their information, just to hit two big buttons. The goal was no barrier to entry, sign up if you want more and not to farm political data from users.

Of course I would like it to become popular, be a place for thousands to discuss hot topics, and get enough votes that it washes out any abuse and grabs enough diversity to see real sentiment. I don't know if it will ever get to that point though. I don't plan to make it scientific as that would require removing the anonymous nature of it. I have thought about it as a free tool for universities or high schools to use for current events polls and discussions.

The short version, I have no idea haha. It really is a fun side project for now, it was fun to code and get something out there, but I am interested to see where it goes.

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.

Thanks for checking it out!

Most of my voters have come from Reddit and Bluesky so far, which is primarily where the left leaning is coming from. My X account was unfortunately suspended lol. I put an appeal in, but was originally flagged I think do to a new account, political content, and lots of links to the polls. I use an OG dynamic card generator so if I post a link to that poll or result, it creates a card for it on the fly. I think X didn't like that since I wasn't established.

That one was interesting, I am not really sure why that one skewed so far the other directly. I did not have the discussion section open yet (and just slowly getting a few active users), but that was the original reason I added the discussion. I don't know who users are, what their demographics are, etc.. (and I don't want to store that info), so hopefully in the future polls like that people will explain the "why".

I need to build some more analytics into the site (both frontend and backend) so I can analyze the data and visualize it, and so users on the frontend can get better ideas on what is happening.

One of the reasons is that the US pays for a whole lot of those international institutions, creating policy and governance issues that end up beyond local accountability. The "force for good, or fairly harmless" rubric changes when it's your money. Then it becomes "why are they spending my money on that bullshit when we have fires to put out at home?"

Covid era politicization and the fallout from that has a lot to do with it as well.

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.
That would actually be really interesting since most of my users so far are from Reddit and Bluesky. Seeing how that breaks down would be telling of how sites primary users feel.

The only issue is, while Plausible analytics that I am using is really nice since it is privacy focused and doesn't track people, I have noticed it doesn't do a great job of understanding what links brought someone there. I am sure Google Analytics or others would do a better job, but it sort of circumvents the anonymous idea. Especially since this is a side project mostly for fun/interesting, I don't really want to be responsible for linking people to political choices.

  • 1e1a
  • ·
  • 55 minutes ago
  • ·
  • [ - ]
Plausible is probably just looking at the Referer header.
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!

Haha so like "guess" which way you think public sentiment leans before you submit your vote? Were you thinking like "what percent agreed" or something? You type 55% then it shows you actually 22% agree sort of deal?

That could maybe be a little optional thing to make it more "interactive". The original idea was to be dead simple, two big buttons. The issue is attracting people to come back since they hit the big button, go "that's interesting", then forget it ever existed.

The death penalty should remain legal. Yes/No

user clicks Yes. new one pops up Show Results (button) or Guess which was more popular: Yes/No. This is more simple than guessing a percentage. but both could work.

So you then show the results and then you show the "meta" results which is like a "line" that is labelled where it shows what others thought of other people. The dead simple idea is a nice draw, this like...ah hah learning moment to learn or see more about the world I think is maybe a nice feature to add. to get more people to come back?

  • 1e1a
  • ·
  • 2 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?
That is a great idea! So I actually have two "meta" tags that will be used as I get going more. One is "revisited". This one will tag statements that have been asked before and I'll then add in more analytics to see how sentiment shifts. The other one is "recurring". I'll likely ask some of the more boring straightforward "The country is headed in the right direction" statements. Then set up some charts to see how it tracks over time.

I am hoping the general public finds this interesting as a lot of the major polls (who to be fair do it scientifically) only ask a couple thousand people. Many never get to participate. While this is not scientific, anyone can participate and eventually with enough people, we can maybe gauge and see how sentiment shifts after time.

  • 1e1a
  • ·
  • 1 hour ago
  • ·
  • [ - ]
Awesome! I'm excited to see how this goes.
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".

Maybe it was changed quickly, but I can't find anywhere that is says "No tracking". It specifically says "We don't track you around the internet." and "doesn't track you across sites" in the terms and about pages.

Also, you kind of have to "track" users to some extent for a site like this - otherwise it would be simply for someone to stuff votes.

The Plausible does count raw statistics without "tracking" specific users. That is just used for general website analytics. The first-party functional cookie that I am using (very similar to the auth login cookie) is used to prevent duplicate anonymous votes. Neither of these track the user and both are for on-site only. The functional cookie works much better than the fingerprint (actually less invasive too), but isn't full proof. You can switch browsers, go to incognito mode in some browsers, etc.. to bypass it, but it works for most casual users. Since it isn't election level polling, I figured it is fine. I do have an in memory rate limit to prevent excessive voting spam.
  • 1e1a
  • ·
  • 1 hour ago
  • ·
  • [ - ]
Are you rate limiting at the subnet/prefix level for IPv6?
  • ps2026
  • ·
  • 53 minutes ago
  • ·
  • [ - ]
Actually no, I'm rate limiting per individual IP address right now. Good catch... I should probably normalize IPv6 to /64. I was originally thinking about not blocking universities or large groups that share IPs, but I guess that is more of an IPv4 NAT concern. Thanks for pointing it out! I didn't really think about a user rotating through IPs. I didn't add the rate limiting on voting until I removed the fingerprint, so that is for sure a valid concern.
  • 1e1a
  • ·
  • 36 minutes ago
  • ·
  • [ - ]
It could make sense to lightly rate limit at /48 in addition to /64 (this is generally the largest subnet size given out by ISPs), otherwise it will be easy for people to multiply your /64 rate limit by 65536.
  • ps2026
  • ·
  • 17 minutes ago
  • ·
  • [ - ]
Hey thanks for the recommendation. That makes sense. Layered rate limiting at both /64 and /48 with different thresholds. Appreciate the explanation, and I'll be adding this to the list! This is my first time dealing with a public facing app where this type of rate limiting is needed.
On the landing page, right underneath the "disagree" button it says "no tracking"
So the site does use Plausable analytics. I chose that one because it does not use cookies, does not identify the user in any way, and does not follow you across the internet.

It counts raw aggregate statistics and is compliant with GDPR without requiring a banner. While it is "tracking" I suppose, it doesn't "track you". Do you think my wording doesn't work? I am open to suggestions.

GDPR is not about cookies it is about you giving user data to another company, and by including plausible.io you are doing that.
  • ps2026
  • ·
  • 4 minutes ago
  • ·
  • [ - ]
I guess I will have to dive into this a bit more. I don't want to make false claims on the site. From the research I did before choosing Plausible, they do not collect any user data. They collect statistics of things that happened, but no actual user data.

From their website:

"By using Plausible, you don’t need to have any GDPR, CCPA or PECR prompts and you don’t need a complex privacy policy about your use of analytics and cookies. With Plausible, you are not tracking any personal data after all. Your visitors can enjoy your site without any annoyances and distractions."

You can't even tell if the same person comes back on a different day.

You can see their full privacy statements here: https://plausible.io/privacy-focused-web-analytics.

Honestly, I don't even really need them. I may just remove it entirely. I am not a B2C or B2B website. It doesn't really matter to me that much to have the stats, but it is nice in general to see how it is doing. The votes submitted sort of count the users for me anyways.

  • ·
  • 3 hours ago
  • ·
  • [ - ]