A production recommender system with full CI/CD, containerization, and K8s orchestration.
Recommender systems sit at the intersection of ML and production engineering. The model is only half the challenge. This project was built to practice the full MLOps lifecycle: developing a hybrid recommender (content-based + collaborative filtering), containerizing it, deploying it to Kubernetes, and establishing automated CI/CD pipelines. The hybrid approach was chosen because neither content-based (ignores user behavior) nor collaborative filtering alone (ignores item attributes) achieves the best recommendations. Combining them captures both signal types.
Anime metadata (genres, studios, rating, synopsis) is encoded using TF-IDF and cosine similarity. Items similar to previously liked content are ranked highly.
User-item interaction matrices are decomposed using matrix factorization. Latent factors capture behavioral patterns: users who liked similar anime are grouped, and their preferences propagate.
Content and collaborative scores are fused with a weighted combination tuned against a held-out validation set. The weights balance exploration (content) vs personalization (collaborative).
The recommender is served via a Flask API, containerized with Docker. A multi-stage Dockerfile minimizes image size for efficient Kubernetes pod spin-up.
Jenkins runs unit tests and builds Docker images on every commit. ArgoCD watches the Helm chart repository and auto-syncs Kubernetes deployments, full GitOps.
Hybrid approach outperforms either content-based or collaborative filtering alone on NDCG@10
Full GitOps pipeline: code push to production deployment in under 5 minutes
Kubernetes deployment with auto-scaling handles traffic spikes without manual intervention
Model versioning via DVC ensures reproducible recommendation behavior