AI Job Matcher (Projet AI en Python)

AI Job Matcher (Projet AI en Python)

Badge délivré à

Stephan Medina

Créer une solution automatisée permettant d’identifier rapidement les nouvelles opportunités et de mesurer leur pertinence pour différents profils.

Délivré le 08 déc. 2025 par

Lab4tech

Émetteur

Lab4tech

info@lab4tech.ch

Association sans but lucratif, Lab4tech est une mesure active qui s'adresse aux demandeurs d'emploi du domaine de l'informatique spécialisée (IT/IS). Ses objectifs sont les suivants:

Améliorer l'employabilité des demandeurs d'emploi dans le domaine de l'informatique. Améliorer leur aptitude à l'emploi en développant leur professionnalisme. Développer l'esprit "Qualité" (décrivez ce que vous faites, faites que ce que vous décrivez). Pour atteindre ses objectifs, Lab4tech s'appuie sur deux piliers qui sont :

Le bilan complémentaire pour informaticien. Les stages pratiques (laboratoires de pratique).

Critère(s)

Les critères de présentation d'un projet au Comité sont :

  • Le document de description du projet, qui sera visible via le badge, sert de premier step dans l’attribution du badge. Il doit convaincre après lecture le Comité qu’une attribution est possible.
  • La durée minimale du projet doit être de au moins : 120 h.
  • Le résultat du projet doit être visible sur internet.
  • Le projet doit montrer une charge de travail supérieure à 120h, une réalisation, une réponse à au moins 80% du besoin à résoudre.
  • Le stagiaire doit être motivé à présenter son projet au Comité d’attribution des badges pour une durée de 30 minutes à 1 heure.

Eléments clés de description du projet

Titre du projet : AI Job Matcher

Description succincte :

Créer une solution automatisée permettant d’identifier rapidement les nouvelles opportunités et de mesurer leur pertinence pour différents profils.

Justification du projet :

Le marché de l’emploi génère chaque jour un grand volume d’offres, mais leur suivi manuel est chronophage et inefficace. Les professionnels comme les recruteurs, consultants RH ou personnes en recherche d’emploi doivent parcourir régulièrement plusieurs plateformes pour repérer les nouvelles annonces pertinentes. En parallèle, évaluer l’adéquation entre des dizaines de CV et des centaines d’offres demande un travail analytique lourd, souvent subjectif et difficile à automatiser sans outils adaptés. Ce projet répond à cette double problématique en créant une solution automatisée qui surveille en continu l’apparition de nouvelles offres et mesure instantanément leur pertinence par rapport à un ensemble de CV. L’opportunité est de transformer un processus manuel et répétitif en un flux intelligent, rapide et fiable, capable d’offrir une vision claire des meilleures correspondances chaque jour. Cela améliore la réactivité, la qualité du tri et la capacité à saisir les opportunités sans effort.

_ Objectifs :_

  • 1) Automatiser la collecte d’offres d’emploi en récupérant chaque jour les 300 dernières annonces publiées sur Jobup.ch.
  • 2) Pouvoir réduire le temps de veille en offrant une mise à jour quotidienne des nouvelles offres publiées avant 12h00, sans intervention manuelle (au moyen d'un scheduler)
  • 3) Evaluer automatiquement les correspondances CVs–Offres avec un score de matching généré en moins de 10 secondes par analyse.
  • 4) Centraliser les résultats en fournissant un rapport quotidien consolidé contenant l’ensemble des nouvelles offres et les meilleurs scores de match par ordre descendant.

Phases de travail :

  1. Product Vision > automatiser la récupération des offres + évaluer leur adéquation avec des CVs.

  2. Product Backlog

Scraper (Jobup.ch)

  • analyser les structures des pages (news + détail pour chaque offre)

  • développer le scraper (sur la base du cours pratique de Python)

  • gérer les erreurs de scraping

  • filtrer les offres via certains critères

  • sauvegarder les offres correspondantes

  • produire un rapport clair d'extraction

JobMatcher (via l'IA suite aux problèmes constatés avec l'embedding)

  • afficher un interface utilisateur simple pour sélectionner les CVs et les Offres

  • charger les offres

  • charger les CVs

  • comparer chaque CV avec chacune des offres et récupérer un score de matching

  • stocker les résultats en mémoire pour tri ultérieur

  • produire un rapport final clair des comparaisons (scores les plus élevés en premier)

Méthodologie utilisée :

Agile (Scrum)

_Calendrier : _

Scrapper

Prototypage + Définition des besoins: du 20.10.2025 au 22.10.2025 (3 jours)

Analyse des pages Jobup.ch: du 23.10.2025 au 23.10.2025 (1 jour)

Développement du scraper Jobup.ch: du 24.10.2025 au 27.10.2025 (2 jours)

Ajout des filtres pour les offres: du 28.10.2025 au 29.10.2025 (2 jours)

Sauvegarde des offres filtrées (format MD + PDF): du 30.10.2025 au 30.10.2025 (1 jour)

Production du rapport de scraping: du 31.10.2025 au 31.10.2025 (1 jour)

AI Job Matcher

Charger les offres + génération JSON: du 03.11.2025 au 03.11.2025 (1 jour)

Charger les CVs + anonymisation + génération JSON: du 04.11.2025 au 10.11.2025 (5 jours)

Moteur de comparaison entre CV et Offre: du 11.11.2025 au 13.11.2025 (3 jours)

Ajout Interface Utilisateur (streamlit): du 14.11.2025 au 17.11.2025 (2 jours)

Production rapport final: du 18.11.2025 au 19.11.2025 (2 jours)

Documentations & Présentation finale: du 20.11.2025 au 21.11.2025 (2 jours)

Budget estimatif :

Le nombre global est de 5 semaines, soit 25 jours ouvrés ou 200 heures environ

Technologie pratiquées :

Python + librairies suivantes: streamlit / openai / python-dotenv / PyPDF2 / python-docx / pdf2image / pytesseract / Faker / gliner / selenium / webdriver-manager / beautifulsoup4 / scikit-learn / numpy / langdetect / reportlab / requests / lxml LLM: OpenAI (DEFAULT_MODEL = "gpt-4o-mini" / HEAVY_MODEL = "gpt-4o")