Case study

Démo privée

Job Radar - radar d'offres, scoring et dashboard

Radar local d'offres d'emploi : collecter des sources autorisées, fusionner les doublons, extraire les faits, séparer le score de pertinence du score de confiance, puis rendre le tout lisible dans un dashboard. Le refresh ne prépare ni n'envoie de candidature.

Aperçu du projet Job Radar
TypeOutil local - ingestion, scoring, dashboard
Période2026 - en cours
RôleConception, développement, data, UX, QA
StatutOutil personnel, en usage
Niveau de preuveLa preuve existe hors ligne ou contient des données qui ne peuvent pas être publiées.
StackPython, FastAPI, SQLite, React, TypeScript, Playwright, Connecteurs ATS
En brefUn pipeline complet : connecteurs ATS, fusion des offres, scoring de pertinence et de confiance séparés, dashboard local. Le refresh ne prépare ni n'envoie aucune candidature.
PreuvesCaptures du dashboard et rapports de refresh datés, montrables en entretien. Outil personnel, pas un produit commercialisé ; les données de candidature restent privées.

Contraintes

Contexte et contraintes.

  • Sources hétérogènes et doublons entre plateformes.
  • Données personnelles et offres à ne pas exposer.
  • Plateformes restreintes non scrapées : seules les sources autorisées ou importées sont utilisées.

Architecture / workflow

Architecture.

  • Sources autorisées (France Travail, Adzuna, Greenhouse, Lever, Ashby, etc.) et alertes locales importées ; les plateformes restreintes ne sont pas scrapées.
  • Pipeline : ingestion → fusion canonique des offres → extraction de faits → scoring pertinence / confiance → rapports JSON et Markdown.
  • SQLite local, profil candidat hors du dépôt, API FastAPI et interface React.
  • Refresh planifié avec verrou inter-processus et contrôle d'intégrité ; aucune candidature préparée ni envoyée.

Décisions

Les choix et leurs compromis.

DécisionPourquoiÉcarté
Séparer le score de pertinence du score de confianceUn bon poste mal sourcé n'est pas une bonne offre.Un score unique qui mélange le poste et la fiabilité de la source.
SQLite localUn seul utilisateur, zéro serveur à maintenir, des requêtes assez rapides.Postgres ou une base hébergée pour un outil personnel.
Aucune soumission automatiqueLe geste final reste humain, avec revue du CV et de la lettre.Un robot qui postule à ma place.

Livraison

Livrables.

  • Connecteurs ATS et import d'alertes locales.
  • Schéma canonique des offres, fusion des doublons et extraction de faits.
  • Scores de pertinence et de confiance séparés.
  • Dashboard React et API FastAPI, rapports de refresh.
  • Refresh planifié avec verrou et contrôle d'intégrité.

Résultats

Résultats.

  • Outil utilisé pour la recherche d'emploi : collecte, tri et priorisation des offres.
  • Le pipeline tourne localement ; les rapports de refresh sont datés.
  • Aucune candidature n'est préparée ni envoyée par le refresh.

Pas encore mesuré

Ce qui reste à creuser.

  • Précision du scoring comparée à une décision humaine : pas encore mesurée sur un échantillon publiable.
  • Temps gagné par refresh : non instrumenté.

V2 / suite

Prochaine itération.

  • Mesurer la précision du scoring sur des décisions réelles, pas seulement sur des cas construits.
  • Durcir les connecteurs et les tests de non-régression à mesure que les sources changent.