How boredjnurseman/ml-recommender-system-design works
This repository demonstrates a narrow film-recommendation serving workflow: a request uses a deterministic stand-in for cached top-25 candidates, applies regional eligibility, assigns a stable policy cohort, optionally reranks, and returns five films. Policy files supply the versioned weights; disabling reranking preserves the filtered relevance-order fallback. The README also describes offline model production, telemetry, monitoring, and deployment as design context, not implemented subsystems. The graph follows the sampled serving calls and documented policy loading; no deployed API or external store is present.
Main entry points: serving.py Serving orchestrator · config.py Policy loader · candidates.py Snapshot generator · models.py Top-25 snapshot
Components 12
Candidate data
- Snapshot generator
src/recommender_demo/candidates.py - Top-25 snapshot
src/recommender_demo/models.py - Film candidate
src/recommender_demo/models.py
Policy control
- Stable assignment
src/recommender_demo/rollout.py - Policy loader
src/recommender_demo/config.py - Baseline policy
config/policy-v1.yaml - Discovery policy
config/policy-v2.yaml
Online serving
- Regional filter
src/recommender_demo/constraints.py - Serving orchestrator
src/recommender_demo/serving.py - Policy reranker
src/recommender_demo/reranker.py - Five recommendations
src/recommender_demo/serving.py
Other components
- Recommendation caller
Connections 14
- Recommendation caller → Serving orchestrator: requests
- Snapshot generator → Top-25 snapshot: creates
- Snapshot generator → Film candidate: generates
- Top-25 snapshot → Serving orchestrator: supplies candidates
- Serving orchestrator → Regional filter: filters by region
- Regional filter → Film candidate: keeps eligible
- Serving orchestrator → Stable assignment: assigns cohort
- Serving orchestrator → Policy loader: loads policy
- Baseline policy → Policy loader: read by
- Discovery policy → Policy loader: read by
- Serving orchestrator → Policy reranker: scores eligible
- Serving orchestrator → Five recommendations: returns top five
- Policy reranker → Five recommendations: ranks candidates
- Five recommendations → Recommendation caller: returns