** What Inspired Us We were inspired by the daily reality of thousands of young people in Moroccan towns like Safi, El Jadida, and Ouarzazate who struggle to find internships, gigs, or freelance work that matches their skills. Most job platforms focus on big cities like Casablanca or Rabat, leaving smaller communities overlooked.

As students ourselves, we knew this pain. We've seen classmates give up on their dreams due to lack of access, not lack of ability. So, we asked: What if an AI assistant could bridge this gap and bring opportunities directly to local youth based on what they know, not just where they live?

** What We Learned

How to build a recommendation engine using simple machine learning models like TF-IDF and cosine similarity to match user profiles with scraped job posts.

How to scrape Moroccan job platforms using BeautifulSoup and Requests while respecting anti-bot mechanisms.

How to translate user needs into product features — for example, filtering jobs by distance, experience level, and skill match.

How to build a minimal yet functional frontend using Streamlit to demo the product in real-time.

** How We Built It

*Backend: Scraped local job data (internships, freelance gigs, NGO calls) from platforms like Rekrute, MarocAnnonces, and freelance Facebook groups (via exported data).

Preprocessed job posts with NLP (stopwords, stemming, etc.).

Used TF-IDF vectorization + cosine similarity to match user-inputted skills with job descriptions.

Created a user form (city, skills, preferences) and returned top 5 matches.

*Frontend:

Built with Streamlit for speed and simplicity.

Users enter their profile, see ranked matches with job titles, links, and matching scores.

Added filters by job type (remote, part-time, internship) and region.

*Challenges We Faced

Data availability: Most local jobs aren’t listed on big platforms. We had to dig into lesser-known websites and social media groups.

Web scraping limits: Some job boards had anti-bot protection, so we limited scraping frequency and used cached data.

Job diversity: Matching a student with both tech and non-tech offers was hard — we had to refine our model to not over-prioritize keywords.

Balancing accuracy vs. speed: More complex models gave better results but slowed down responses. We opted for TF-IDF for a balance between relevance and performance.

**Final Thoughts

JobBridge isn’t just a project — it’s a mission. We believe access to opportunity shouldn't depend on your city, your network, or your background.

In just 48 hours, we created a proof of concept that shows how AI can empower Moroccan youth with local, relevant, and realistic job matches. With the right support, we’re ready to turn this into a real platform and continue building the bridge between skills and opportunity.

Share this project:

Updates

Submission history