Tous les projets

IA & données

Job Hunter Morocco · agrégateur d’offres

Une seule recherche interroge les principaux sites d’emploi, puis déduplique, classe par pertinence, historise et exporte les offres dans un classeur Excel prêt à l’emploi.

  • Fonctionnel en local · pas de démo en ligne
  • Projet individuel
sites d’emploi couverts
6+
critères dans le score de pertinence
5
endpoints REST
5
recherche au lieu d’une par site
1

01Le point de départ

Contexte & mission

Le problème

Chercher un emploi au Maroc, c’est refaire la même recherche sur LinkedIn, Bayt, Rekrute, Emploi.ma, Indeed, Glassdoor et d’autres, puis trier les doublons à la main, sans savoir quelles offres méritent d’être lues en premier.

La mission

Construire un outil qui part des compétences du candidat et lui montre les meilleures offres en premier, avec un historique et un export directement exploitable.

Mon rôle

Projet conçu et développé seul : collecte, traitement, score, base de données, API, interface et export.

02Réalisation

Ce que j’ai fait

  1. Collecte multi-sources

    Google Jobs via SerpApi, complété par des recherches ciblées sur Bayt, Rekrute et Emploi.ma.

  2. Normalisation et déduplication

    Les résultats des différentes recherches se recoupent : ils sont normalisés puis dédupliqués avant tout classement.

  3. Score de pertinence explicable

    Cinq critères : mots-clés dans le titre, mots-clés dans la description, qualité de la source, présence d’un salaire et fraîcheur de l’offre. Un classement heuristique, présenté comme tel.

  4. Historique PostgreSQL

    Offres et recherches stockées dans PostgreSQL : historique complet et statistiques consultables.

  5. Export Excel soigné

    Classeur avec une feuille d’offres et une feuille de synthèse, pertinence colorée et liens de candidature cliquables.

  6. API REST et interface

    API Flask (/api/search, /api/export/excel, /api/history, /api/stats, /health) et interface monopage légère, avec un badge de pertinence sur chaque offre. Identifiants séparés du code par variables d’environnement.

03Conception

Architecture

Chaque responsabilité est séparée : l’interface appelle l’API Flask, qui lance la recherche via SerpApi, normalise et déduplique les résultats, calcule le score, puis enregistre dans PostgreSQL et produit l’export Excel.

Le pipeline d’une recherche
  1. InterfaceCompétences du candidat
  2. API Flask/api/search
  3. SerpApiGoogle Jobs · sites ciblés
  4. DéduplicationNormalisation
  5. Score5 critères
En appui
  • PostgreSQLHistorique · stats
  • Export ExcelOffres · synthèse

04Impact

Résultats

  • Une recherche unique remplace la même requête répétée sur chaque site.
  • Des offres dédupliquées et classées, avec un score dont chaque critère est connu.
  • Un historique consultable et un export Excel prêt à partager.

05Bilan

Ce que j’en retiens

Ce que ce projet démontre

Que je sais transformer une tâche répétitive en produit complet : collecte de données, règles de classement explicables, persistance, API et export prêt à l’emploi.

Enseignements et suite

Le projet tourne en local. Les recherches peuvent déjà être planifiées avec un outil externe comme cron ; une démo en ligne serait la prochaine étape.

06Technologies

Stack complète

  • Python
  • Flask
  • PostgreSQL
  • SerpApi
  • pandas
  • openpyxl
  • REST
  • HTML
  • CSS
  • JavaScript