MOOC platforms lose learners who can't find their next course. The goal: recommend each learner's next course from their history — and prove the recommender actually beats simpler alternatives before anyone trusts it.
Instead of jumping straight to deep learning, the project built an honest evaluation harness first: a chronological leave-last-out split (predict each learner's final enrollment from everything before it), shared by every model. Three baselines — popularity, item-based collaborative filtering, and matrix factorization (SVD) — set the bar. The hybrid model then had to clear it.

/recommend, /health, and sample-user endpoints over precomputed top-20 listsThe pipeline downloads and k-core filters MOOCCube, trains the hybrid network with AdamW, and runs ablations to show each component earns its place. Cold-start slices measure how the model behaves for learners with almost no history — where content embeddings carry the load. Significance testing (p ≈ 1e-182) confirms the improvement isn't noise.

The hybrid model beat every baseline on every metric: Recall@10 rose to 0.454 from item-CF's 0.426, NDCG@10 to 0.285 from 0.264, and AUC to 0.9279 from 0.9188. Recommendations for all 95,415 learners are precomputed and served through the Flask API with a browser demo UI.
Describe your data and the decision it should support — you'll get a feasibility answer and a fixed quote.
Start a project →