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
Collecte multi-sources
Google Jobs via SerpApi, complété par des recherches ciblées sur Bayt, Rekrute et Emploi.ma.
Normalisation et déduplication
Les résultats des différentes recherches se recoupent : ils sont normalisés puis dédupliqués avant tout classement.
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.
Historique PostgreSQL
Offres et recherches stockées dans PostgreSQL : historique complet et statistiques consultables.
Export Excel soigné
Classeur avec une feuille d’offres et une feuille de synthèse, pertinence colorée et liens de candidature cliquables.
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.
- InterfaceCompétences du candidat
- API Flask/api/search
- SerpApiGoogle Jobs · sites ciblés
- DéduplicationNormalisation
- Score5 critères
- 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émontreQue 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.
06Technologies
Stack complète
- Python
- Flask
- PostgreSQL
- SerpApi
- pandas
- openpyxl
- REST
- HTML
- CSS
- JavaScript