Steam Recommender

Personalized recommendations for the Steam platform.

View the Project on GitHub wesleykerr/steamrecommender-webapp

Steam Recommender

Unfortunately, I have decided to sunset

Steam Recommender was a side project that I intended to do for a long time. I started work on the project in 2013 because I was disappointed with the recommendations that the Steam platform provided. I thought it would be nice to discover new games besides sales and based on which games that I had spent the most time playing. The site has been up for several years now and never really generated that much traffic, so I decided to shutdown the site and open-source all of the code.

Steam is a unique platform, since it provides a user's playtime for all games in their Steam library. If you have a public profile, then anyone can see which games you have been playing and how much time you have spent playing them. This means that you can randomly sample Steam ids and gather training data for a recommender system. If you are interested in more technical details see my blog post on the subject.

Sample Pages

The following demonstrate the capabilities of my Steam recommender site.

Game Details

This page contained details for a single game including total playtime for the sample of Steam players that I had. I also included a small set of recommendations in case you enjoyed the game you were looking at and wanted to find similar games.

Game Listing

This page contained all of the games sorted by total playtime or median playtime. Included with each game were recommendations for the game, so you could quickly find games related to the most popular games.


This page contained the details for a personal profile. It has all of the games that were owned and played ordered by playtime. In addition I compute a star rating for each game based on an individual's playtime vs. median playtime for that game. Like the games listing page, you can get recommendations for each of your games individually.


This page contained the top recommendations for the profile given. If your backlog of Steam games was large enough and you had not played many of the games, then I would go ahead and recommend games off of your backlog that you should play. Of course, there was the main set of recommendations that you should purchase from the Steam store based solely on your play history.


The code that powered the website is broken into several GitHub projects to ease maintenance and because they were written in several languages.

Web Application

The main frontend and serving backend. This was written in Ruby because at the time I wanted to learn Ruby for my position at Riot Games and it took little time to get the system up and running.


This is a collection of Java programs used for scraping steam, moving data, and building recommendations.


Called ETL, but really consists of one Ruby script that queries steam in order to get screenshot information and try to determine the types of apps. This is a very flaky script and badly needed rewritten.


I relied on the open-source task scheduler called TaskForest and these were my configuration files for it. It's basically a wrapper around cron with better log management, so all jobs are written in bash and executed at different times of the day or week.