Building a Movie Recommendation Engine for Smart TV App

Building a Movie Recommendation Engine for Smart TV App

Key Details

Improved movie recommendation function by 25%.

  • Challenge
    Deliver fresh personalized recommendations to every user
  • Solution
    Custom recommendation engine powered by machine learning
  • Technologies and tools
    Python, SQL; Spark, Nginx, Flask-API, PostgreSQL, Spark Parquet


The Client operates in the Smart TV digital home entertainment market. It’s a leading premium video-on-demand service, which allows users to watch newly released movies in perfect quality or choose from a library of more than 7000 titles. Their SmartTV application has 1.5 million monthly active users.

Challenge: deliver personalized recommendations to every user

When the Client went searching for a data science partner, 80% of the company’s revenue had already been coming from their recommendation page. The recommendations list had been updated by an editor every week.

In order to improve customer experience and drive more sales from the recommendation page, the Client decided to build a recommendation engine that would offer up-to-date personalized movie recommendations for every user.

The main goals of the project were:

  • improving customer experience by offering personalized movie recommendations
  • helping customers find desired movies faster
  • improving visitor-to-customer conversion rate

Solution: custom movie recommendation engine powered by machine learning

ESSID Solutions built a custom recommendation engine for the Client, to ensure that the system integrates perfectly with the existing business and technical environment of the Client’s Smart TV application.

ESSID Solutions used machine learning to build a recommendation engine that serves individual recommendations for millions of users.

The recommendation engine uses a collaborative filtering approach which is based on the idea that people who agreed in their evaluation of certain movies in the past are likely to agree again in the future.

In order to generate fresh recommendations every day, the system is optimized to store data efficiently and perform queries faster.

It is well-known that columnar storage saves both time and space when it comes to big data processing. For this project, ESSID Solutions used Parquet + Spark, which helped to boost Spark SQL performance by 5X compared to using other storage formats.

Result: improved customer experience

  • Fresh personalized recommendations delivered to every customer.
  • Users find desired movies faster. The average number of unique scrolled-before-purchase film cards in recommendation feed dropped by 25%.