Show HN: Elect.io, my side-project that provides objective candidate information
elect.io
elect.io
In addition to providing basic candidate bio information, when possible I also provide details on what issues a candidate supports or opposes. I calculate each position programatically using the following data:
- Special Interest Group ratings for this particular candidate. i.e. the NRA may give a candidate a score of 90 out of 100 in the year 2007 for the candidate's position on gun rights issues.
- The bias of the Special Interest Group i.e. the NRA strongly supports issues related to the preserving of Second Amendment privledges.
These ratings are then weighted by year (more recent ratings have greater weight) and run through an algorithm to determine a candidate's calculated "position" for each issue.
The Bill of Rights are privileges? I thought they were, um, rights. As far as I'm concerned, you could throw all the guns in the world in the ocean, but if your site is to be unbiased your terminology should be too.
A couple of comments:
- I find the use of checkmarks and "X" to be a little too simple, since you're calculating this stuff based on an algorithm. It might be better to devise some sort of little visualization (a small pie chart, thermometer, etc...) to show me the actual score in addition to the "X" or "check". This is useful to identify situations where a politician is deliberately waffling on an issue. For example, my own congressman has a twisted history with respect to "Card Check". The algorithm shows this, but I have to click into the checkmark to see his score is 75/100.
-It's hard not to introduce bias in the phrasing of issues (I don't have a good solution for this). For example, I'm sure some would take issue if you had labeled the abortion issue "pro-life" vs. the current "pro-choice" (conversely, I'm sure some take issue with the current use of "pro-choice" as a category). About the only (not great) solution I can offer for this is to show both labels and give a score (as mentioned above). Civil liberties is another. Just because the ACLU doesn't like a candidate, doesn't mean they're a knuckle-dragging, sexist, racist, homophobe.
-There's the potential for subtle incumbent bias by letting the candidates with the most information drive the display. If one candidate is better known, the vast majority of the categories are driven by that candidate and it has the effect of making the other candidates look like they don't have positions on those issues (when in fact, the info is probably just not as readily available). Again, I don't have a really good solution for this issue either, but detecting extreme cases and really calling it out to the user is probably the best way to mitigate this.
Any UI decision that involves selecting from a list of every city in a state is a bad UI decision.
I'm going to look into purchasing their paid service, but in the meantime I modified the code to only accept zipcodes and bypass the geonames web service call.
As mentioned by others, you seem to have a (lack of) data issue. Perhaps you could also work with public voting records (http://www.votesmart.org/) to help mitigate that.
Thanks for the link to Sunlight Labs, I'll check it out.
Hitting enter after entering my ZIP code gives me:
Traceback (most recent call last): File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 513, in __call__ handler.post(*groups) File "/base/data/home/apps/codeablepolitics/1.344842764317514643/controllers.py", line 66, in post geonames_results = geonames.zipcode_search(query, 1) File "/base/data/home/apps/codeablepolitics/1.344842764317514643/utils/geonames.py", line 26, in zipcode_search if len(web_service_response['postalCodes']) == 0: KeyError: 'postalCodes'
Also: add this on the ZIP code input box: onfocus="this.value=''"
The search functionality makes a call out to Geonames.org to get location data, and unfortunately I hit the quota for more free account. I'm going to purchase premium service with a higher quota, but in the meantime I modified the search to only accept zipcodes, which will not require a call to geonames.
(In Germany, there's Wahl-o-Mat which operates like that)
Most of the pages in my area only have positional data on 1 candidate. Some have no info at all, or only 'gun rights'.
Until it's got more info, I can't see it being very useful.
Also, without references as to why the system thinks they have that position, I can't easily double-check. That means I end up doing most of the same work I'd have done anyhow before voting.
You can view details on how I calculate each position by clicking on the position's 'check' or 'x' image. Doing so will open a modal dialog provide that displays detailed information in both a graph and table view.
Getting additional position data is one of my top priorities in the next week or so. The first additional subset of data I plan on using is the Political Courage Tests from Project Votesmart (http://www.votesmart.org/npat_about.php). With this data, I should be able to provide positional information on 40-50% of all Congressional candidates, including Independents.
Finding this same data for regional candidates will be tougher. I am thinking of providing some alternate information for these candidates, such as a Twitter feed or RSS feed.
Also thanks for reporting the error. I will look into it today.
Now, putting it like that already causes a bias in the reader, the opposite bias that "Pro-life: YES,NO" would cause, of course.
My point being: is very prepotent to say your site provides objective information. And you're probably pro-choice, right?
Not ideal, of course. But if you're bound to simple booleans, there's not much more you can do.
I will address this issue tonight.