Skip to content
  • Featured
  • Live lab
  • Hackathon
  • Team result
  • Synthetic data

2024 · Recommendation systems · Data science · Internship hackathon · Agilisium Consulting, 2024

Course Recommendation System

A team project built during my Data Engineering internship at Agilisium Consulting, exploring a recommendation-based approach to finding relevant courses. The team won first prize. This page also hosts a new explainable course-recommendation prototype covering 13 domains.

Headline

1st prize

Team result · Agilisium Consulting hackathon

Synthetic data

01 · Problem

Problem

A course catalogue can hold many options, and recommendations can help people find the ones that are relevant to them. The project looked at how a recommendation-based approach could do that.

02 · Approach

Approach

The live prototype above is new work built for this portfolio. It is not the hackathon submission. A learner picks an area, a target topic, their level, what they already know, a preferred format and any courses already completed. Hand-written rules remove courses already completed or marked not interesting. A decision tree then classifies each remaining course as a good fit, a stretch or not suitable, a hand-weighted score orders the courses within each class, and each result shows its reasons, its prerequisites and the path the profile took. A learning map shows the topics of the area in prerequisite order.

Key concept

A learned model can only learn the labels it is given

Here the labels come from a rubric written for the demo and the learners are synthetic, so the tree’s accuracy says how well it reproduces that rubric, not whether real learners would find the courses useful. That is why the page compares it with a simple score baseline and three other models, labels every step as learned or rule, and says what is synthetic.

Live lab

Try it

What you're looking at

A new prototype, not the hackathon entry. Pick an area, a goal and what you already know: rules remove courses you have done, a decision tree sorts the rest into good fit, stretch and not suitable, and every result shows its reasons. The learners and labels it was trained on are synthetic.

Loading the recommender…

03 · Results

Results

Hackathon: the team won first prize in the hackathon held during the Agilisium Consulting internship. This is a team result. Prototype: on held-out synthetic learners, scored on the courses that touch the learner’s goal, the decision tree reproduces its labelling rubric with 99.5% accuracy (macro F1 0.994), against 63.6% (macro F1 0.585) for thresholding the hand-designed match score. Against a random forest, gradient boosting and logistic regression (5-fold cross-validation held out by learner), gradient boosting scores highest (macro F1 0.997, the tree as deployed 0.987) and logistic regression is far behind (0.600). These figures describe the synthetic data only.

04 · Limitations

Limitations

What it does not show

The hackathon entry records the project and its result only; it makes no claim about the team’s recommendation method, data or evaluation, or whether it was deployed. The prototype is a separate implementation: a sample of 107 courses rather than every course in every domain (for some topics there is a single course), annotations from one author, synthetic training learners and an authored rubric. It does not read course content, has no real enrolment, completion or rating data, and its match score is a hand-set weighting rather than a probability.

Responsible AI

The prototype stores nothing: answers and feedback stay in the browser tab and are discarded on reload. It asks only what is needed for recommendations and lets learners skip optional questions. Course details are not verified, so the page tells learners to check the provider before enrolling.

Data & reproducibility

Data and reproducibility

Six tables, all downloadable from the page. Hand-curated: 107 well-known courses across 13 domains (titles and providers are real; topics, prerequisites, difficulty and format are the prototype’s own unreviewed annotations), a 76-topic prerequisite ontology, the course–topic links and a learning path per domain. Synthetic: 900 invented learner profiles and the (learner, course) examples built from them, labelled by an authored rubric. No live catalogue and no real learner data were used; prices, durations, ratings and links are not recorded.

Source code is not public.

All work