Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧭 Tech Stack Recommender

A content-based recommendation engine that matches a person's skills to the engineering roles they align with most closely — the same core idea behind "users who liked X also liked Y" engines, applied to careers instead of products.

Python Flask scikit-learn License


📖 Overview

Enter your skills, and the engine ranks the top 5 engineering roles that best match them — using TF-IDF vectorization and cosine similarity, the same techniques behind real-world recommendation systems.


⚙️ How It Works

  1. Ingestion — each role in data/roles.json is described as a set of skill tags (e.g. Backend Developerjava, python, sql, rest apis...)
  2. Vectorization — role descriptions are converted into weighted vectors with TF-IDF, so a specific skill like kubernetes counts more than a generic one
  3. Scoringcosine similarity measures the angle between the user's vector and every role vector — smaller angle = closer match
  4. Ranking — top 5 roles are returned with a match percentage and overlapping skills

🛠️ Tech Stack

Layer Technology
Backend Python, Flask, scikit-learn (TfidfVectorizer, cosine_similarity)
Frontend Vanilla HTML/CSS/JS — no build step, no frameworks
Data Hand-curated role/skill dataset (data/roles.json)

🔒 Security Notes

  • All skill input validated server-side (length, character whitelist, max count per request)
  • Vectorizer fit once at startup on the fixed role vocabulary — never refit on user input
  • Request bodies size-capped; responses set X-Content-Type-Options, X-Frame-Options, and a restrictive CSP
  • Frontend builds DOM nodes with textContent, not innerHTML — user input can never be interpreted as markup

🚀 Getting Started

git clone https://github.com/areebaathar-dev/tech-stack-recommender.git
cd tech-stack-recommender
python -m venv venv
source venv/bin/activate      # Windows: venv\Scripts\activate
pip install -r requirements.txt
python app.py

Open http://127.0.0.1:5000


📁 Project Structure

tech-stack-recommender/ ├── app.py # Flask app, TF-IDF + cosine similarity logic ├── data/ │ └── roles.json # Role definitions and skill tags ├── static/ │ ├── css/style.css │ └── js/app.js ├── templates/ │ └── index.html └── requirements.txt


🔭 Extending It

  • Add more roles/skills directly in data/roles.json — no code changes needed
  • Swap TF-IDF for word embeddings for fuzzy matches between related terms (e.g. "web design" vs. "frontend development")
  • Add an onboarding flow with pre-filled common skill sets for new users

📄 License

MIT — see LICENSE.


👩‍💻 Author

Areeba Athar LinkedIn · GitHub

About

A content-based recommendation engine that matches your skills to engineering roles using TF-IDF and cosine similarity

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages