Custom Learning Path Generation for Online Course Catalogs
This system solves a constrained planning and optimization problem in the professional learning domain. Given a set of candidate decisionsβcourses, skills, certificationsβit generates multiple valid learning pathways and evaluates them across technical metrics such as cost, duration, difficulty, and semantic alignment. The architecture uses a Large Language Model (LLM) as an analysis engine to compare, rank, and explain alternative progression strategies.
The project converts normalized online course catalogs into structured learning trajectories. Using normalized course metadata and NLP embeddings, the system:
- π₯ Extracts and normalizes online course information.
- π§ Computes semantic embeddings and similarity scores.
- π€οΈ Builds learning pathways that connect skills, objectives, and prerequisites.
- π Presents results through a lightweight Streamlit web UI.
The goal is to help learners, professionals, and teams identify the most appropriate sequence of courses based on goals and prior experience.
LLM Pathway Evaluator/
βββ README.md # Project documentation
βββ requirements.txt # Python dependencies
βββ .env # Environment variables for API keys and config
βββ Alternative Career Paths Report.pdf # Project PDF report
βββ data/
β βββ embedding.json # Cached course embeddings
β βββ normalized_courses.json # Normalized course metadata
β βββ csv/ # Raw dataset CSV files
β βββ dataset_1.csv
β βββ dataset_2.csv
β βββ ...
βββ previews/ # UI preview images shown in README
βββ experiments/ # Experimental test cases and quality tests
βββ src/
β βββ app.py # Streamlit UI for pathway exploration
β βββ download_dataset.py # Kaggle dataset download and normalization
β βββ llm_adapter.py # LLM / spaCy adapter for embeddings and explanations
β βββ planner.py # Path planning and course modeling logic
β βββ simulation.py # Simulation runner for pathway evaluation
β βββ strips_search.py # STRIPS based search for course path planning
βββ tests/ # Unit tests for core logic
βββ .gitignore
- Python 3.8+
- pip
- Internet access for dependency installation and spaCy model downloads
git clone https://github.com/jery04/LLM-Pathway-Evaluator.git
cd "LLM Pathway Evaluator"python -m venv .venv
.\.venv\Scripts\Activate.ps1If you use cmd:
.\.venv\Scripts\activate.batIf you use Git Bash or WSL:
source .venv/bin/activatepython -m pip install --upgrade pippip install -r requirements.txtVerify the presence of the following data artifacts:
data/normalized_courses.jsondata/embedding.jsondata/csv/*.csv
If the files are missing, regenerate them with:
python src/download_dataset.pyBefore launching the web UI, create a .env file in the project root containing your Gemini API key:
GEMINI_API_KEY=YOUR_API_KEY_HERE
How to create the .env file from the terminal:
- PowerShell (Windows):
echo "GEMINI_API_KEY=YOUR_API_KEY_HERE" > .envStep-by-step: how to obtain a Gemini API key (Google Generative AI):
- π Open https://console.cloud.google.com/ and sign in with your Google account.
- π Create a new project or select an existing project using the project selector (top-left).
- βοΈ Go to "APIs & Services" β "Library" and search for "Generative AI" or "Generative AI API"; click "Enable" if it is not already enabled.
- π Go to "APIs & Services" β "Credentials" β "Create credentials" β "API key".
- π Copy the newly created API key and paste it into the
.envfile asGEMINI_API_KEY=YOUR_API_KEY_HERE. - π‘οΈ (Optional but recommended) In the Credentials section, restrict the API key by IP address, HTTP referrer, or API usage to improve security.
Note: If you use Generative AI Studio (https://console.generativeai.google), the interface and flow may differ slightly; look for "Credentials" or "API keys" in that interface.
To verify that all dependencies and setup steps are correct, run the project test harness with the following command:
python tests/tests_runner.pyNote: if any test fails, review the previous installation and setup steps before proceeding.
After creating the .env file with your API key, run the following command (inside the activated virtual environment):
streamlit run src/app.pyIn the experiments/ folder, a specific forced-condition test case was created to evaluate the response quality of the system. It contains a deliberately crafted set of courses designed to stress-test the recommendation engine across all three supported optimization criteria:
- Fastest Path β minimizes time to completion
- Cheapest Path β minimizes total cost
- Balanced Path β optimizes for both time and cost
The test dataset was intentionally constructed (not sampled from real data) to expose edge cases and verify that each routing strategy produces semantically correct and distinguishable recommendations.
To execute the experiment, run the following command from the project root:
python -m experiments.quality_testThis will run the full quality evaluation suite against all three path criteria and output the results for manual or automated inspection.
streamlit: interactive web UI for career path generation and visualizationgoogle-genai: Google Gemini client for LLM-powered explanationsspacy: NLP processing and skill extractionlangdetect: automatic language detectionkagglehub/kagglesdk: Kaggle dataset integrationnumpy/scipy: numerical computation and similarity calculationspython-dotenv: environment variable management
en-core-web-md: English spaCy modeles-core-news-md: Spanish spaCy model
A typical generated pathway might look like this:
The following images correspond to the simulation section:
Built with β€οΈ by a human








