What is Festook?
Festook helps when you struggle to plan a music festival with 10 stages and 200 bands because it gives you a personalised agenda of concerts so you can have the best festival experience ever. Just indicate which artists you don’t want to miss and Festook will automatically construct a schedule including only those concerts that better fit your tastes. In other words: where Artificial Intelligence meets music festivals.
Festook as an iOS app
Festook was born back in 2014 as a beta version of the iOS app. Although the design and functionality were quite simple, it was enough to win the “Most Innovative” prize at AppsCultura 2014. This prize gave Festook the final push because afterwards it finally became a full-time project.
The first objective for 2015 was to redesign the app and have it ready for music festival season. This new version of the app was not only a chronological update with 2015 festival’s data but it adds a whole new set of functionalities:
- Browse the festival line-up and read the detailed information of each artist.
- Get the personalised schedule that better fits the user’s music tastes.
- Select the right schedule mode.
- Allow the app to remind the user right before a concert starts.
- Quickly check which artists are playing ‘right now’.
- Give feedback about the concerts after seeing them and contribute to improve the recommendation engine.
You can get a more detailed description of these functionalities in this open letter to festival goers.
Unfortunately the Festook app is not available any more in the App Store because I do not have time to maintain the project.
The system is composed of 3 parts:
- Python scripts run offline to compute the the similarity between bands playing at the festival retrieving information from Echonest and LastFM APIs.
- iOS app (Objective-C) implementing the user interface and computing the recommendtions. The schedule computation was built at the client side (no backend interaction) to overcome the bad connectivity problem at Festivals. Check the code at github.
- PHP server runing a small web service to update client data as new festivals appeared.
Festook as a Telegram Bot
2016 was the year of the Chatbots, and Festook had to join the party. This is why it became a Telegram bot.
Getting the personalized festival schedule is as simple as chatting to the Festook Bot at Telegram. Although I must say that it was a huge challenge to transform the experience of configuring the schedule into a text-based interaction. The bot functionalities were the same as in the 2015 version of the app but adapted to the command-based Telegram bots:
- /help – Get help
- /bands – See the bands playing
- /must – See your must bands
- /addmust – Add a must band
- /removemust – Remove a must band
- /schedule – Get your plan
- /now – Now playing
- /avoid – See your bands to avoid
- /addavoid – Add a band to avoid
- /removeavoid – Remove a band to avoid
Unfortunately the Festook bot is not operating any more because I do not have time to maintain the project.
Except for the offline Python scripts, the entire fucntionality was built into a NodeJS server:
- Interation with the Telegram bot API
- Implementation of a State Machine to control de bot flow
- Schedule computation based on bands similarity and user taste
- Mongo DB to store user tastes and schedules
Check the code at github.