← All projects
AI · Full-stack· HCL hackathon · Round 2 · team of 3· Built· Aug 2026

Waypoint

A learning-path recommender that plans over a skill graph instead of searching course text. It never puts a course in front of you before you're ready for it.

Waypoint landing page: every course is a station, learning is the line between
The landing page. Courses are stations and a learning path is the line between them.

Highlights

  • 0% prerequisite violations vs 49% for similarity search, on 9 paths written by hand by a human expert.
  • Closes 93% of the learner's skill gap vs 65%, and agrees with the expert's ordering far more (Kendall tau 0.459 vs 0.111).
  • Built in four days by a team of three, with 181 tests. I was the team captain.

Overview

Round 2 of HCL's hackathon asked for an AI learning-path recommender: understand a learner's goal and background, recommend courses, put them in a sensible order, explain each step, and adapt as they make progress. We were a team of three and I was the captain. My two teammates curated the course catalogue (65 skills, 126 resources) and wrote the expert learning paths we evaluated against. I helped with the catalogue too. We weren't shortlisted for the final pitch round, but I'm proud of how it turned out.

Problem

Course platforms have thousands of good courses, but learners struggle with the order. The usual approach ranks courses by how similar they are to the goal text, which happily puts an advanced course in front of someone who hasn't learned the basics yet.

Approach

I treated it as a planning problem instead of a search problem. A learner is a vector of skill levels, a goal becomes a target skill state, and the path is a sequence of courses that closes the gap in the fewest hours while respecting prerequisites. The language model only reads your goal into structured skills and phrases the explanations. It never picks or orders a course.

Architecture / how it works

  • Beam search over the prerequisite graph. The graph decides which courses are even allowed as the next step, so an out-of-order step can't be generated. That's why the violation rate is 0%, by construction.
  • Hybrid retrieval scored against the learner's skill gap, not their query: skill-tag overlap, Cohere embed-v4.0 embeddings and lexical match, with an optional rerank-v3.5 stage.
  • Every step carries a reasons object built by the planner (what it closes, what it unlocks, difficulty fit, hours). The LLM only turns that into a sentence, so explanations can't be made up.
  • Conversational intake: the LLM's output is validated with Zod against the skill graph's own names, so it can't invent a skill that doesn't exist.
  • Feedback ("I finished this", "I struggled here") updates the learner's skill levels and replans the route, showing what changed.
  • Runs with no database and no API keys: the corpus loads from CSV and learner state lives in memory, so a reviewer can try it instantly. Postgres + pgvector kicks in when configured.

Tech stack

Next.jsTypeScriptPostgres + pgvectorDrizzleCohere embeddings + rerankZodVitest

Outcomes

Evaluated against a similarity-search baseline on 9 expert-written paths, with the same corpus and the same embeddings: prerequisite violations 0% vs 49%, skill gap closed 93% vs 65%, redundant effort 16.8% vs 36.3%, nDCG 0.392 vs 0.168, ordering agreement (Kendall tau) 0.459 vs 0.111. One of the 10 test goals ("I want to work with AI") was too vague to plan, so the intake asked a clarifying question instead of guessing.

Gallery

The same learner routed by Waypoint and by similarity search, side by side
The same learner routed two ways. Similarity search puts courses in front of them before they're ready; Waypoint's route never does.
Evaluation results against the similarity baseline
The evaluation page, computed from the committed eval run.
A route with the reasoning for one step expanded
Each step explains itself: which skills it closes, what it opens up, and how hard it is for you.
Conversational intake turning a goal into a learner profile
Describe your goal in plain words. The profile fills in as you talk.
Learner dashboard with progress and the next step
The dashboard: where you are, what's left, and the next stop.

Resume

Want my resume?

I share it on request, so you always get the latest version. Drop me an email with a line about the role or why you're asking, and I'll send it over.

devanshpandeyji4321@gmail.com
Write the email →