SkillBot: from job title to the skills it needs
A portfolio project by Malav Naik: SkillBot, an MSc research project combining an LLM and a knowledge graph for skill recommendations, and a free in-browser skills explorer built on public job-ad data with a leave-one-out evaluation.
- Python
- LLMs
- Knowledge graphs
- Prompt engineering
- sentence-transformers
- transformers.js
- Hugging Face
- GitHub Actions
See it live → · Code on GitHub →
The problem
People who want to change or grow their career keep asking the same question: “what do I need to learn for this job?” Course catalogues and job ads live in separate places, so the answer is usually guesswork.
The MSc project
For my MSc in Data Analytics at the National College of Ireland, I designed and evaluated SkillBot, a chatbot that recommends skills and learning paths. As described in my thesis, it combined:
- a GPT-3.5 model fine-tuned on 15,000 skill-related conversations,
- a knowledge graph of about 2.3 million facts linking jobs, skills and courses (with TransE embeddings, stored in Neo4j), and
- prompt templates that feed the graph’s context, the user’s profile and the chat history into each answer.
Reported in the thesis, from a study with 50 participants: 87% recommendation accuracy, an F1-score of 84%, and a usability score (SUS) of 86/100.
The code of that full system isn’t public. The GitHub repository holds the thesis, the data exploration and an early prototype notebook, so the numbers above can only be checked in the thesis itself.
The free rebuild: a skills explorer
The full system needed paid APIs and servers to run. So I rebuilt its core idea, job title → skills, as a small tool that runs in your browser for free, on public data, and tested it properly.
- Data: 1,167 real job ads in five areas (IT, finance, sales, HR and business development), each with a list of skills. I kept only the job title, area and skills.
- Clean: the skill lists were written by software and spelled inconsistently (“SQL”, “sql”), so I merged the variants (5,774 → 4,984 distinct skills).
- Match by meaning: a small open model (
all-MiniLM-L6-v2) turns job titles into vectors, so “data wrangler” can still find data analyst ads. - Suggest: count the skills of the 25 most similar ads, plus the skills typical of their main job area, and show the top 10.
Demo
Type a job title and see the skills most often asked for. Nothing you type is sent anywhere.
Results
To test it honestly, I hid each of the 1,167 ads in turn and asked the tool to suggest 10 skills from the ad’s title alone, using only the other ads:
| Method | Suggested skills that were in the real ad |
|---|---|
| First version (before merging spellings) | 31% |
| Most common skills of the ad’s area* | 47% |
| Skills explorer (similar ads + their area) | 48% |
*This one cheats a little: it is told the job’s area, which a title alone doesn’t give you.
- About 5 of the 10 suggestions are in the real ad, and the tool finds about 28% of each ad’s listed skills.
- The biggest gain came from cleaning the data, not from the model: merging spelling variants took it from 31% to 48%.
- I chose the final settings with this same test, so 48% is slightly optimistic.
- Limits: only five job areas (try “nurse” and it will struggle), and the skill lists were extracted by software, not people.
Data and credits
job-skill-set by Batuhan Mutlu, built from LinkedIn Job Postings by Arsh Koneru, both under CC BY-SA 4.0.
Links
- MSc thesis (NCI repository)
- Skills explorer on Hugging Face
- Code on GitHub (the explorer is in
skills-explorer/)