Project Recap: Kickammender

Flatiron School / 11 July 2014

Like so many of our alums, Michael and Joe both applied to Flatiron School at points in their lives when they weren’t sure what was next: Joe was an economics major turned Marine, and Michael was shirking questions about applying to PhD programs. Now full-time developers, they used their time at Flatiron to level up their programming skills and work on a project called Kickammender—a recommendation engine for the ridiculously popular crowd-funding site Kickstarter.

How They Got Here

When Joe left the Marines, he felt like he needed a new skill to join the workforce and started learning to program. “I never really considered myself a technical person,” he said, “But it was gratifying to write code and have it actually do something.”

After graduating university with a degree in Electrical Engineering, Michael worked for a hardware company with 2,000+ employees. He had a lot of ideas he wanted to bring to life at a smaller startup but felt he like he needed to know how to program in order to get a job. “Programming gives you the power to make your ideas,” he explained, “By the end of the program [at Flatiron], I was able to do stuff that I wouldn’t have dreamed of before.”

“By the end of the program, I was able to do stuff that I wouldn’t have dreamed of before.”

Why Kickammender?

As students, Michael and Joe worked on Kickammender to apply their interests, grow what they’d learned, and fill what they perceived as a gap in Kickstarter’s user experience. Although Kickstarter users can follow their Facebook friends’ activity, preference-based recommendations don’t really exist.

“It’s hard to find better, more personalized recommendations,” Joe explained. “If there’s a new project out that you might want to check out or back, there was no way to know or be notified.”

Their solution? Just a few weeks into the program, Michael built an engine that used machine learning to make dynamic product recommendations. “I was just going to write a blog post about it,” he said, “But I got kind of obsessed.” They decided to use the momentum and excitement from this initial project to make something bigger.

How it Works

Kickammender uses machine learning and the k-means clustering algorithm to compare users to the thousands of other people on Kickstarter. When the app finds a group of users with similar preferences, it recommends projects that real people in that group have backed.

Users simply log in through Facebook and receive dynamically updated recommendations based on what they’ve liked before. They can also tailor their recommendations with feedback, save projects they’re interested in, and find Kickstarter users outside of their Facebook network with similar preferences.

Challenges and Highlights

Challenges ranged from having to go through the process of scraping Kickstarter’s infinitely scrolling site in the absence of an API to disappearing data points. “Disappearing clusters,” Joe explained, “we’d have 100,000 data points, process them through the algorithm, and at the end of that process, half of the them would be gone. It took some refactoring to fix.”

In spite of technical challenges, they still point to Kickammender as a big achievement in their learning process. “It was the first software project that I ever started and finished,” Michael said. “Everything about it was challenging, but I’m really proud we did it.”

“It was the first software project that I ever started and finished. Everything about it was challenging, but I’m really proud we did it.”

Although Kickammender was developed independently, it got a shout out from a Kickstarter Product Manager on Twitter. Still, the real praise is in the product itself. Even as fresh-out-of-the-box Rubyists, Michael and Joe took a great but little-known feature on a popular website and made it even better.

The Stack

Built with Ruby on Rails
PostGreSQL on the backend
Javascript Bootstrap on the frontend
Served up by Digital Ocean

Um, so we have these chairs... Previous Post Using the Twitter Streaming API Next Post