Skip to content

[Bug]: "Advanced" Experience Level Not Showing in Frontend Dropdown Even Though Backend Supports It #791

@dharini-sharma

Description

@dharini-sharma

What happened?

The Experience Level dropdown in the "Find Your Next Project" form only displays:

  • Beginner
  • Intermediate

However, the backend data loader (utils/data_loader.py) has a function get_available_levels() that returns all unique levels from data/projects.json. Since no projects in the dataset have "level": "Advanced", the dropdown never populates the "Advanced" option.

Problem: Advanced users cannot select "Advanced" as their experience level because the option doesn't appear in the dropdown. Users with advanced skills are forced to select "Intermediate" or lower, leading to inaccurate project recommendations.

Evidence:

  • Frontend code: templates/index.html lines 608-614 uses Jinja2 template to dynamically populate dropdown:
    {% for level in available_levels %}
    <option value="{{ level }}">{{ level }}</option>
    {% endfor %}

Backend Code Evidence

utils/data_loader.py lines 72-75 returns only levels that exist in dataset:

def get_available_levels():
    projects = load_all_projects()
    return sorted({p["level"] for p in projects})

Suggested Solution

Option A (Quick Fix - Hide Missing Level)

  • Keep dropdown dynamic but display a message if user tries to select unavailable level

Option B (Proper Fix - Add Advanced Projects)

  • Add 2-4 advanced-level projects to data/projects.json covering:

    • Real-time applications (chat, collaboration tools)
    • Authentication & security (JWT, OAuth, encryption)
    • Systems programming (Rust, C++, performance optimization)
    • DevOps & infrastructure (Docker, Kubernetes, CI/CD)
  • Ensure each project has:

    • Complete roadmap (8+ steps)
    • Starter code in starter_code/ directory
    • Real learning resources
    • Appropriate difficulty level content

Files Affected

  1. templates/index.html (lines 608-614)
  2. utils/data_loader.py (lines 72-75)
  3. data/projects.json (needs Advanced projects)
  4. starter_code/ (new advanced project templates)

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:

  1. First, I'll remove these dead options from the frontend to fix the immediate UX problem
  2. Then, I'll add well-structured ML/AI and DevOps projects to the dataset
  3. Finally, I'll add validation to prevent future mismatches

If I get assigned to this issue will start working submitting a PR at the earliest

Steps to reproduce

  1. Navigate to the recommendation form (#find-project section)
  2. Look at the "Experience Level" dropdown menu
  3. Click the dropdown to expand it
  4. Observe the available options

Expected behaviour

The "Experience Level" dropdown should display:

Beginner
Intermediate
Advanced

Advanced users should be able to select "Advanced" and receive recommendations for advanced-level projects (real-time chat apps, JWT authentication APIs, systems programming projects, etc.).

If no Advanced projects exist yet, the UI should either:

Display "Advanced" but show "No Advanced projects available yet. Check back soon!" when selected
Or add at least 2-3 advanced projects to the dataset immediately

Area of the app affected

Homepage form

Python version

3.9+

Operating system

Windows / macOS / Linux

Relevant error output or logs

Image

Output from backend:

  • Levels (3): ['Advanced', 'Intermediate', 'Beginner']

Before submitting

  • I searched existing issues and this has not been reported before.
  • I can reproduce this bug consistently with the steps above.
  • I am running the latest version of the main branch.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions