Tracking Election Promises with Scala and Play!

A few months ago I decided to learn Scala because it looked like an interesting, type-safe, concise and multiparadigmatic programming language. And all the cool kids were talking about it. At the same time, about two months before last year’s elections to the German parliament, my internet friend and journalist Jan Falk had the idea to build a German version of the Obameter tracking the campaign promises of the next German government.

Thus, the wahlversprechen project was born. A Scala and Play! based web application. Today, about 6 weeks after the new government formed, the complete coalition treaty signed by the two governing parties is online as are the campaign promises by both governing parties, the Social Democracts and the Christian Democrats.

We itemized the election programs as well as the coalition treaty and identified the promises that can be rated as kept or broken, i.e., the promises that are precise enough that failing to implement them is actually possible. The election promises are categorized based on the responsible Ministry, they are tagged and searchable.

Each election promise has its own page which shows how it has been rated (i.e. if the promise has been rated as a kept promise, a broken one, if it has stalled, or is in progress), the relevant quote from the election program and the editorial updates linking to press reports or even the passed law. To let interested users and readers contribute their opinions or even updates on the state of some promises, each election promise page has its own Disqus comment thread.

The start page shows at a glance how many promises have been kept, were broken, or ended in compromise:

Progress Bar on Start Page

To import long lists of itemized election promises the application is able to import Google Spreadsheets. Site editors can post editorial updates, change the tags or fix typos via the web interface of course (Note the Markdown syntax in the source of the quote):

Editing View for Election Promises

What’s next?

There are a couple of todo items pretty high on my list:

  • The site needs some (JSON) export to free the data we have assembled
  • All templates are in German at the moment and need some internationalization. (The code is in English of course as it should be)
  • I’ve already started work on a news aggregator that tries to identify the election promises the media are currently talking about through simple statistics. The code is on github and it is already working pretty well.

What can you do?

Well glad you asked!

  • Use it as a reference and tell me if it works!
  • Tell me and the team if anything important is missing.
  • Comment, help us do the research and follow the news.
  • Run your own instance and track other elections!
  • Fork it & improve it!

Most of all, tell me if you find it useful. That always makes my day.