What happened?
The frontend form displays 40 hardcoded skill chip buttons for users to quickly select from:
Python, JavaScript, HTML, CSS, Flask, SQL, React, Node.js, C++, Java, TypeScript, Go, Rust, C#, Kotlin, Django, FastAPI, Express.js, Next.js, Vue.js, Angular, Tailwind CSS, Bootstrap, PostgreSQL, MySQL, MongoDB, Redis, Docker, Kubernetes, Git, Linux, Pandas, NumPy, TensorFlow, PyTorch, AWS, GraphQL, Jest, pytest, Webpack
However, a programmatic audit of data/projects.json reveals the backend dataset contains only 14-15 unique skills:
- css, typescript, java, pandas, requests, c++, kotlin, javascript, html, rust, node.js, flask, go, python
The Mismatch: ~26 skill options in the UI are completely dead—they have ZERO matching projects in the dataset. When users select skills like TensorFlow, Kubernetes, AWS, or GraphQL, the recommendation engine returns no results or misleading matches based on level/interest/time alone (due to bug #96).
This creates a poor user experience: users think they can find projects for these skills, but the system returns nothing.
Evidence:
Frontend hardcoded skills (templates/index.html lines 561-602): 40 buttons total
Backend actual skills (from data/projects.json): ['python', 'javascript', 'html', 'css', 'flask', 'sql', 'react', 'node.js', 'c++', 'java', 'typescript', 'go', 'rust', 'kotlin', 'django']
Total: ~15 skills
Dead Skills (26+): TensorFlow, PyTorch, AWS, Kubernetes, Docker, PostgreSQL, MySQL, MongoDB, Redis, GraphQL, Jest, pytest, Webpack, Bootstrap, Tailwind CSS, Angular, Vue.js, Next.js, Express.js, FastAPI, Linux, Pandas, NumPy, and others
Related Issues
This issue is related to #96 (recommendation engine bug where low-scoring projects return for dead skills) but is distinct because it focuses on the UI bloat/mismatch rather than the scoring logic.
Relevant Error Output or Logs
None - Frontend/data mismatch (no runtime errors). The problem is silent: users see skill options that don't exist in the backend dataset.
Environment
- Python Version: 3.9+
- Operating System: Windows / macOS / Linux
- Browser: Chrome / Firefox / Safari
- DevPath Branch: main (latest)
GSSOC'26 Contributor Note
Hii @komalharshita, I'm a GSSOC'26 contributor and would like to work on this issue and resolve it. I hope this issue is assigned to me so I can continue working on it.
My approach:
- First, I'll remove the 26+ dead skill options from the hardcoded list in
templates/index.html
- Then, I'll create a backend function
get_available_skills() in utils/data_loader.py to dynamically return available skills from the dataset
- Create a new
/api/available-skills endpoint in routes/main_routes.py
- Update the frontend to fetch and render skills dynamically
- Add unit tests to ensure skill list matches dataset
- Test that as new projects are added, their skills automatically appear in the UI
If I get assigned to this issue will start working submitting a PR at the earliest.
Steps to Reproduce
- Navigate to the recommendation form (#find-project section)
- Look at the "Quick-select skill chips" section below the "Your Skills" input
- Click on a skill that doesn't exist in the dataset (e.g., "TensorFlow", "AWS", "Kubernetes")
- Enter any other valid inputs (level, interest, time)
- Click "Generate My Projects"
- Observe that no relevant projects are returned
Example:
- Skills: TensorFlow
- Level: Intermediate
- Interest: Data
- Time: High
- Result: "No Projects Found" or irrelevant projects
Expected behaviour
Expected Behaviour
The frontend should only display skill chips for skills that actually exist in the dataset.
Better approach:
- Remove dead skill options from the hardcoded list
- Dynamically populate skill chips from the backend (from
data/projects.json)
- Only show skills that have at least 1 project in the dataset
- As new projects are added with new skills, they automatically appear in the UI
Suggested Solution
Option A (Quick Fix - Remove Dead Skills)
- Identify which 26+ skills are dead (no projects)
- Remove them from the hardcoded list in
templates/index.html lines 561-602
- Keep only skills that exist in dataset: python, javascript, html, css, flask, sql, react, node.js, c++, java, typescript, go, rust, kotlin, django
Option B (Proper Fix - Dynamic Skills)
- Create a backend endpoint
/api/available-skills that returns all unique skills from data/projects.json
- Update frontend to fetch and render skill chips dynamically instead of hardcoding
- Benefits:
- No more UI-data mismatch
- New projects with new skills auto-populate in UI
- Maintainers don't need to update HTML for new skills
Option C (Long-term - Dataset Expansion)
- As you add new projects, ensure their skills are included in the dataset
- The dynamic UI will automatically show them
Files Affected
templates/index.html (lines 561-602 - skill chips)
utils/data_loader.py (add get_available_skills() function)
routes/main_routes.py (add new /api/available-skills endpoint)
data/projects.json (reference for valid skills)
Area of the app affected
Homepage form
Python version
3.9+
Operating system
Windows/Linux/Mac
Relevant error output or logs
Before submitting
What happened?
The frontend form displays 40 hardcoded skill chip buttons for users to quickly select from:
Python, JavaScript, HTML, CSS, Flask, SQL, React, Node.js, C++, Java, TypeScript, Go, Rust, C#, Kotlin, Django, FastAPI, Express.js, Next.js, Vue.js, Angular, Tailwind CSS, Bootstrap, PostgreSQL, MySQL, MongoDB, Redis, Docker, Kubernetes, Git, Linux, Pandas, NumPy, TensorFlow, PyTorch, AWS, GraphQL, Jest, pytest, Webpack
However, a programmatic audit of
data/projects.jsonreveals the backend dataset contains only 14-15 unique skills:The Mismatch: ~26 skill options in the UI are completely dead—they have ZERO matching projects in the dataset. When users select skills like TensorFlow, Kubernetes, AWS, or GraphQL, the recommendation engine returns no results or misleading matches based on level/interest/time alone (due to bug #96).
This creates a poor user experience: users think they can find projects for these skills, but the system returns nothing.
Evidence:
Frontend hardcoded skills (
templates/index.htmllines 561-602): 40 buttons totalBackend actual skills (from
data/projects.json): ['python', 'javascript', 'html', 'css', 'flask', 'sql', 'react', 'node.js', 'c++', 'java', 'typescript', 'go', 'rust', 'kotlin', 'django']Total: ~15 skills
Dead Skills (26+): TensorFlow, PyTorch, AWS, Kubernetes, Docker, PostgreSQL, MySQL, MongoDB, Redis, GraphQL, Jest, pytest, Webpack, Bootstrap, Tailwind CSS, Angular, Vue.js, Next.js, Express.js, FastAPI, Linux, Pandas, NumPy, and others
Related Issues
This issue is related to #96 (recommendation engine bug where low-scoring projects return for dead skills) but is distinct because it focuses on the UI bloat/mismatch rather than the scoring logic.
Relevant Error Output or Logs
None - Frontend/data mismatch (no runtime errors). The problem is silent: users see skill options that don't exist in the backend dataset.
Environment
GSSOC'26 Contributor Note
Hii @komalharshita, I'm a GSSOC'26 contributor and would like to work on this issue and resolve it. I hope this issue is assigned to me so I can continue working on it.
My approach:
templates/index.htmlget_available_skills()inutils/data_loader.pyto dynamically return available skills from the dataset/api/available-skillsendpoint inroutes/main_routes.pyIf I get assigned to this issue will start working submitting a PR at the earliest.
Steps to Reproduce
Example:
Expected behaviour
Expected Behaviour
The frontend should only display skill chips for skills that actually exist in the dataset.
Better approach:
data/projects.json)Suggested Solution
Option A (Quick Fix - Remove Dead Skills)
templates/index.htmllines 561-602Option B (Proper Fix - Dynamic Skills)
/api/available-skillsthat returns all unique skills fromdata/projects.jsonOption C (Long-term - Dataset Expansion)
Files Affected
templates/index.html(lines 561-602 - skill chips)utils/data_loader.py(addget_available_skills()function)routes/main_routes.py(add new/api/available-skillsendpoint)data/projects.json(reference for valid skills)Area of the app affected
Homepage form
Python version
3.9+
Operating system
Windows/Linux/Mac
Relevant error output or logs
Before submitting