Track : onPrem
Ma contribution au #HackAVP, le hackathon de l'OPT-NC, de Station N et de la commission Data & IA d'OPEN NC, réalisée dans le cours Interopérabilité des SI du M2 MIAGE de l'IAE de Nouvelle-Calédonie. Dans JobMatch NC, le projet de notre promo, je m'occupe de la brique matching.
Au dĂ©part, une question toute bĂȘte
"Est-ce que mon CV coche vraiment les cases ?".
Ici, en Nouvelle-Calédonie, l'OPT-NC publie ses offres d'emploi en open data, décrites compétence par compétence et ouvertes à tous. De quoi construire un outil vraiment utile au territoire, pour les candidats comme pour les recruteurs.
D'oĂč ma question de dĂ©part : "Et si un CV pouvait ĂȘtre comparĂ© Ă toutes les offres en quelques secondes⊠à condition que la machine explique pourquoi ?"
La rĂšgle : pas de chiffre sans preuve
Beaucoup d'outils de "matching" donnent une note, point. 72 %. Pourquoi 72 ??? MystĂšre...đ€
Je voulais l'inverse : chaque point du score doit pouvoir ĂȘtre vĂ©rifiĂ©.
CV-Matching affiche donc, pour chaque compétence de l'offre, la phrase du CV qui la prouve.
Exemple rĂ©el, avec le CV fictif d'une auditrice interne face Ă l'offre Auditeur â Service de l'audit interne :
56 % · "TrÚs bonne adéquation" · 8 compétences sur 15
MĂ©thodologie d'audit â "RĂ©alisation de missions d'audit selon les normes professionnelles"
Si une preuve est mauvaise, ça se voit tout de suite.
Deux enquĂȘteurs pour chaque compĂ©tence
Pour trouver ces preuves, deux modĂšles d'IA open source travaillent en duo :
-
le chercheur (
BAAI/bge-m3, licence MIT) passe le CV au peigne fin et ressort, pour chaque compétence, les 3 phrases qui lui ressemblent le plus ; -
le vérificateur (
BAAI/bge-reranker-v2-m3, licence Apache-2.0) relit ces phrases une par une et tranche : vraie preuve, ou simple ressemblance ?
Ensuite, on fait la moyenne, en donnant plus de poids aux compĂ©tences rares : savoir mener un audit compte plus que "rigueur". Les savoir-ĂȘtre sont mis Ă part, parce que ça, ça se vĂ©rifie en entretien. Le rĂ©fĂ©rentiel ROME 4.0 de France Travail fait aussi le lien entre les outils citĂ©s dans un CV (Excel, WordâŠ) et les compĂ©tences de l'offre.
Pour lancer une analyse, il faut trois choses : un CV au format JSON Resume (un CV "rangé dans des cases", lisible par une machine), les offres de l'OPT-NC et un clic.
Le nom, l'e-mail et le téléphone ne sont jamais lus : seul le parcours compte.
đ Ă tester : huggingface.co/spaces/Myz0/CV-Matching.
CÎté candidat, on dépose un CV et toutes les offres sont classées.
CÎté recruteur, on choisit une offre et les CV sont classés.
Uniquement des CV fictifs.
Le jour oĂč j'ai arrĂȘtĂ© de croire mes intuitions
Au dĂ©but, je rĂ©glais "au feeling". Mais mauvaise idĂ©e, car une modification qui "semblait" meilleure rendait parfois le classement pire...đ
Alors j'ai écrit mes propres examens : 23 CV fictifs dont je connaissais la bonne réponse et un script qui note le classement tout seul.
Ă partir de lĂ , une seule rĂšgle : mesurer, corriger, re-mesurer. Une idĂ©e qui ne fait pas mieux est abandonnĂ©e, mĂȘme si je l'aimais bien.
Résultat : le bon CV arrive premier dans 84 % des cas, contre 68 % au départ.
Sauf que quelqu'un qui rĂ©vise avec le sujet de l'examen a forcĂ©ment une bonne note đ€.
J'ai donc Ă©crit 18 autres CV, jamais utilisĂ©s pour rĂ©gler quoi que ce soit. LĂ , le poste visĂ© arrive premier dans 71 % des cas. Moins flatteur, mais plus honnĂȘte. Et sur les deux jeux, aucun profil hors sujet (cuisinier, infirmier, graphisteâŠ) ne passe devant un bon candidat.
Le test qui m'a le plus convaincu : réécrire les meilleurs CV avec d'autres mots, pour le mĂȘme parcours. Une recherche par mots-clĂ©s s'effondre (1 bon poste sur 7). CV-Matching garde le bon poste en tĂȘte 7 fois sur 7. Toute la diffĂ©rence entre comparer des mots et comparer du sens.
Il reste du travail (beaucoup mĂȘme)... le vĂ©rificateur est parfois trop sĂ©vĂšre avec les preuves partielles et le jeu de test qui est encore trop petit. Il faudra confirmer avec de vrais CV.
Une brique dans JobMatch NC
Je ne travaillais pas seul dans mon coin : notre promo a construit une chaßne de 7 briques, reliées par un hub commun, HACKAVPI.
Ma brique est le maillon matching, la fonction "score explicable" demandée par le hackathon.
Ce qui entre :
- les offres, lues directement dans le dataset open data de l'OPT-NC (
opt-nc/odata-avps), au format schema.orgJobPosting; - les CV, lus sur le hub, Ă la demande, avec le jeton du recruteur : c'est le hub qui gĂšre les droits et je ne stocke rien.
Ce qui sort : les scores, envoyés aux deux sites de la promo, AVPRO-NC pour les recruteurs et Adopte un Job pour les candidats, qui appellent mon API.
| Ăchange | Avec qui | Format |
|---|---|---|
| Offres â CV-Matching | dataset open data de l'OPT-NC | JSON-LD schema.org JobPosting
|
| CV â CV-Matching | hub HACKAVPI | API REST, jeton du recruteur |
| Scores â sites | AVPRO-NC, Adopte un Job | API REST JSON, OpenAPI, avec clĂ© |
| Scores â IA | agents conversationnels | MCP (matcher_cv, classer_candidats) |
Les routes principales : POST /v1/match (un CV â les offres classĂ©es), POST /v1/avps/{id_avp}/candidats (une offre â les candidats classĂ©s), POST /v1/score (une candidature) et POST /v1/hub/avps/{id_avp}/candidatures (les candidats qui ont postulĂ© sur le hub). Tout est documentĂ© sur /docs. Et la clĂ© commune entre toutes les briques reste la rĂ©fĂ©rence de l'offre, par exemple 3134-26-1419/SR.
Petite leçon d'humilité au passage : les premiers CV de test du hub étaient presque vides⊠et les scores, trÚs bas. Logique : le service ne note que ce qui est écrit. Un CV vide ne prouve rien.
Petit PC, grandes ambitions stonksđ
Pas besoin d'une machine de guerre.
J'ai tout développé sur mon PC portable, avec une RTX 3050 et ses 4 Go de mémoire : il a fallu faire tenir les deux modÚles dedans (bge-m3 en demi-précision). Résultat : environ 4,5 s pour comparer un CV à toutes les offres et 1,5 s en mode simplifié, sans carte graphique.
La démo de la vidéo a d'ailleurs été filmée sur cette machine.
Et c'est tout l'intĂ©rĂȘt : les CV ne partent nulle part.
- Aucune IA externe : pas de ChatGPT, pas d'API payante. Les deux modÚles sont open source, téléchargés une fois et tous les calculs se font sur la machine qui fait tourner le service.
- Rien n'est stocké : les CV sont lus à la demande, notés, puis oubliés.
- Des versions figées : les modÚles sont fixés sur une version précise, les scores ne changent pas sans qu'on le décide.
- Installable chez l'OPT-NC : tout tient dans une image Docker, modĂšles compris. Le mĂȘme code tourne sur mon PC, sur Hugging Face ou sur un serveur de l'OPT-NC.
Hugging Face, c'est la vitrine, pas une dépendance : l'OPT-NC peut tout rapatrier chez elle.
Le coût : environ 950 XPF par mois (9 $), l'abonnement Hugging Face PRO. ModÚles, données, IA : 0 XPF.
Cet abonnement n'est pas obligatoire : sans lui, CV-Matching tourne sur mon PC, sur n'importe quel serveur avec Docker, ou en mode simplifié sans carte graphique.
Il sert Ă deux choses :
- des scores plus rapides : le Space utilise ZeroGPU, une carte graphique puissante que Hugging Face prĂȘte le temps de chaque calcul. Le compte PRO permet de crĂ©er ce type de Space et donne 8 fois plus de temps GPU par jour ;
- lancer le projet n'importe oĂč : une adresse publique, toujours en ligne, que le jury, la promo et les deux sites peuvent appeler, sans attendre que mon PC soit allumĂ©.
PRO propose aussi d'autres options (Dev Mode pour se connecter en SSH Ă son Space, plus de stockage, des crĂ©dits d'infĂ©renceâŠ), mais pour CV-Matching, c'est surtout ZeroGPU qui compte.
Et ensuite ?
- Un vérificateur moins sévÚre : il rejette encore des preuves partielles. Je veux l'ajuster avec des exemples jugés à la main.
- Moins sensible aux mots : un mĂȘme parcours Ă©crit autrement peut perdre des points. Ătendre le ROME Ă toutes les compĂ©tences rendrait le score plus stable.
- Rapide sans carte graphique : une version allégée du vérificateur pour tourner vite sur n'importe quel serveur de l'OPT-NC.
- Tester avec de vrais CV : confirmer en conditions réelles les 71 % obtenus sur des CV fictifs.
Remerciements !!!
Un grand merci à Adrien Sales pour cette opportunité et qui, en tant que professeur, nous a accompagnés et guidés tout au long du projet.
Merci aussi à l'OPT-NC d'avoir ouvert ses données, à la Station N, à la commission Data & IA d'OPEN NC et à l'IAE de la Nouvelle-Calédonie.
Et merci Ă toute la promo de JobMatch NC : CVForge, HACKAVPI, Adopte un Job, CV Generator, AVPRO-NC, Insight Squad et Ă Maud pour la coordination.
Chaque brique a fait avancer les autres et c'est ça l'interopérabilité !!!
Liens
- đŹ VidĂ©o : CV-Matching
- đ§Ș DĂ©mo : huggingface.co/spaces/Myz0/CV-Matching
- đ API : myz0-cv-matching.hf.space/docs
- đŸ DonnĂ©es : opt-nc/odata-avps
CV-Matching : le bon profil, preuves Ă l'appui.

























