Elect.io is a side-project I've been working on for the past few months, and is my attempt at providing a tool for voters in the U.S. to learn more about the candidates that are running for office in their area.
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.
I've wanted something like this for a while. It takes a lot of effort to find info about candidates that are less well known.
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.
Unreasonably hard to pull up "Chicago"; your search didn't accept a Chicago zip code, the name "Chicago", or "Chicago, IL". Instead, I had to select "Chicago" from a list of every city in the entire state of Illinois.
Any UI decision that involves selecting from a list of every city in a state is a bad UI decision.
Yep you're right. I'm using Geonames' free postal code search, and unfortunately I went over the quota around midday today, so searches stopped working after that point.
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.
That's quite clever. I'm impressed at how you can composite fairly objective views from special interest groups.
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.
I'm using data from Project Votesmart (http://www.votesmart.org/services_api.php). At one point I planned on also using data from OpenCongress and OpenSecrets.org, but that functionality didn't make the cut for the initial launch.
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.
Have you also considered a mode in which the website first asks the user about his agreement with a series of political statements, and then offers the best-matching candidates?
(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.
I see "Abortion issues: Pro-life", so that has been accounted for somehow. I would be interested in knowing how it decides which version to show. There does seem to be a bias towards evaluating as true as much as possible in that bullet point.
Not ideal, of course. But if you're bound to simple booleans, there's not much more you can do.
I like the sound of this app, but it doesn't seem to work with IE7 at all. I tried searching for my state and it gave an error and if I try to pick the state I see the select a city briefly appear and then it disappears.
I'm not sure about your color choices. It is just hard for my eyes to focus. I mean I can read it, but I can feel an extra one or two mississippi before my eyes really lock in.
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.