Software Development

Film Management System

Python Firebase Recommendation Engine TMDB
View on GitHub

Overview

The Film Management System (FMS) is a recommendation engine built in Python as part of a group project at DHBW Lörrach. It suggests movies to users based on their prior selections, using a category-weighted matrix to compute similarity scores between user preferences and the available film catalogue sourced from the TMDB database.

How It Works

The recommendation engine combines two approaches: a content-based method that scores films against a user’s genre history, and a collaborative filtering method that finds the most similar other user and borrows their picks.

1 — Content-Based Scoring

For every candidate film, the engine sums up how often each of its genres appears in the films the user has already liked:

score(film) = Σ genre_count(g)  for each genre g in film

genre_count is built with a Counter over all genres from the user’s liked films. Films whose genres appear more frequently in the user’s history receive a higher score. Candidates are then ranked by descending score.

2 — Collaborative Filtering (Jaccard Similarity)

To find a similar user, the engine compares genre sets using the Jaccard index:

J(A, B) = |A ∩ B| / |A ∪ B|

where A is the set of genres liked by the current user and B is the set liked by another user. A value of 1 means identical taste; 0 means no overlap. The user with the highest Jaccard score is selected, and their highly-rated films (not yet seen by the current user) are surfaced as recommendations.

Features

  • Movie catalogue sourced from the TMDB dataset (tmdb_movies.json)
  • Matrix-based recommendation engine with category weighting
  • Interactive user interface for browsing and rating films
  • Persistent data storage for user history and preferences
  • Two variants: one with Firebase backend for cloud sync, one fully local

Tech Stack

Component Technology
Language Python
Data TMDB movie database
Backend (cloud variant) Firebase
UI Python (interactive CLI / GUI)

Context

Developed as a second-semester group project at DHBW Lörrach. The dual implementation — with and without Firebase — demonstrates how the same application logic can be adapted for both offline and cloud-connected environments.