<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Florian DOUDOUTE</title>
    <description>The latest articles on DEV Community by Florian DOUDOUTE (@florian_doudoute).</description>
    <link>https://dev.to/florian_doudoute</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4178542%2F82f0d21d-c343-4b6f-9ba1-e1624c15d8a9.jpg</url>
      <title>DEV Community: Florian DOUDOUTE</title>
      <link>https://dev.to/florian_doudoute</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/florian_doudoute"/>
    <language>en</language>
    <item>
      <title>#HackAVP CV FORGE, L'USINE A CV BOOSTÉE PAR IA LOCALE</title>
      <dc:creator>Florian DOUDOUTE</dc:creator>
      <pubDate>Tue, 20 Oct 2026 05:27:32 +0000</pubDate>
      <link>https://dev.to/florian_doudoute/hackavp-cv-forge-lusine-a-cv-boostee-par-ia-locale-4a64</link>
      <guid>https://dev.to/florian_doudoute/hackavp-cv-forge-lusine-a-cv-boostee-par-ia-locale-4a64</guid>
      <description>&lt;h1&gt;
  
  
  HackAVP : CV Forge, l’usine à CV boostée par une IA locale
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Transformer des CV en profils réutilisables avec une RTX 4060, une intelligence artificielle locale et des applications capables de communiquer.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Comment est né CV Forge ?
&lt;/h2&gt;

&lt;p&gt;Dans le cadre de &lt;strong&gt;HackAVP 2026&lt;/strong&gt;, la promotion de &lt;strong&gt;Master MIAGE de l’Université de la Nouvelle-Calédonie&lt;/strong&gt; a participé à un challenge autour du recrutement et des &lt;strong&gt;avis de vacance de poste (AVP)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Plusieurs équipes ont développé des applications complémentaires pour couvrir le parcours de recrutement. Le défi : permettre à ces solutions d’échanger des données malgré leurs différences techniques.&lt;/p&gt;

&lt;p&gt;Voici leurs articles, dans l’ordre du parcours de traitement :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://dev.to/maud_granger_nc/jobmatch-nc-quand-linteroperabilite-devient-plus-quun-defi-technique-1ma"&gt;&lt;strong&gt;Jobmatch NC&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/florian_doudoute/hackavp-cv-forge-lusine-a-cv-boostee-par-ia-locale-4a64"&gt;&lt;strong&gt;CV Forge&lt;/strong&gt;&lt;/a&gt;, le projet présenté ici.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/pastek/hackavpi-dp8"&gt;&lt;strong&gt;HackAVPI&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/c2b/adopte-un-job-on-swipe-les-vrais-postes-de-lopt-nc-et-on-voit-pourquoi-ils-nous-correspondent-48pc"&gt;&lt;strong&gt;Adopte Un Job&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/jocc0/cv-matching-le-bon-profil-preuves-a-lappui-hackavp-4oh8"&gt;&lt;strong&gt;CV-Matching&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/spewq/hackavp-cv-generator-la-solution-de-preparation-de-candidature-1p30"&gt;&lt;strong&gt;CV Generator&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/sh0ck3r/hackavp-avpro-lespace-recruteur-qui-remplace-la-boite-mail-par-un-swipe-et-explique-chaque-10ph"&gt;&lt;strong&gt;AVPRO&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/elodie_tran_data/et-si-les-donnees-du-recrutement-repondaient-a-nos-questions--1d5o"&gt;&lt;strong&gt;Insight Squad&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;CV Forge répond à une question : comment exploiter les informations d’un candidat sans obliger chaque application à analyser son CV ?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;La solution transforme les documents en &lt;strong&gt;données structurées et réutilisables&lt;/strong&gt;, grâce à une intelligence artificielle exécutée sur un ordinateur personnel.&lt;/p&gt;

&lt;p&gt;Voici une démonstration, de l’importation du CV à la production du profil candidat :&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/hP2PnFdzvSw" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Un projet, plusieurs applications
&lt;/h2&gt;

&lt;p&gt;Chaque équipe intervient sur une fonction : extraction des informations, rapprochement avec les offres d’emploi, génération de documents ou analyse des données du recrutement.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8b1uu8j4h42pzvcj2ufk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8b1uu8j4h42pzvcj2ufk.png" alt="Les applications de l’écosystème HackAVP et leurs interactions" width="799" height="69"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CV Forge prépare les informations du candidat&lt;/strong&gt; pour les rendre exploitables par les autres services, dans un format commun.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3rzly8k6hskc61nlnlwz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3rzly8k6hskc61nlnlwz.png" alt="Principe général du traitement d’un CV avec CV Forge" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Le défi : un CV n’est pas une base de données
&lt;/h2&gt;

&lt;p&gt;Pour un humain, repérer le nom, les expériences et les formations dans un CV semble naturel. &lt;strong&gt;Pour une machine, la mise en page complique rapidement les choses&lt;/strong&gt; : colonnes, tableaux, images et blocs graphiques.&lt;/p&gt;

&lt;p&gt;CV Forge doit récupérer les informations et comprendre leur signification, &lt;strong&gt;sans inventer de données absentes du document&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Une mauvaise extraction ne devient pas correcte simplement parce qu’elle passe dans une intelligence artificielle !&lt;/p&gt;




&lt;h2&gt;
  
  
  Sous le capot : comment fonctionne CV Forge ?
&lt;/h2&gt;

&lt;p&gt;Le traitement repose sur plusieurs composants, chacun avec un rôle précis.&lt;/p&gt;

&lt;h3&gt;
  
  
  Les différentes étapes
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;n8n orchestre le traitement :&lt;/strong&gt; réception du CV et enchaînement des opérations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;L’OCR extrait le texte :&lt;/strong&gt; la reconnaissance optique de caractères récupère le texte des pages ou des éléments traités comme des images.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama exécute Qwen localement :&lt;/strong&gt; le modèle identifie les coordonnées, les expériences, les formations et les compétences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pydantic contrôle les données :&lt;/strong&gt; vérification de leur structure et application de règles métier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON Resume standardise le profil :&lt;/strong&gt; organisation des informations dans un format ouvert exploitable par les autres applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Europass complète les possibilités d’échange :&lt;/strong&gt; conversion des informations vers une structure compatible avec son modèle de données.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Le parcours détaillé
&lt;/h3&gt;

&lt;p&gt;Ce diagramme présente les échanges entre les composants et le parcours nécessitant une vérification lorsqu’une anomalie est détectée.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp2gaa2xbda71tjny71ov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp2gaa2xbda71tjny71ov.png" alt="Diagramme de séquence du pipeline CV Forge, avec validation et export Europass" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Pourquoi Qwen3-4B, et quelles sont ses limites ?
&lt;/h3&gt;

&lt;p&gt;Le choix de &lt;strong&gt;Qwen3-4B&lt;/strong&gt;, répond à une contrainte concrète : fonctionner localement sur une RTX 4060 avec &lt;strong&gt;8 Go de mémoire haute performance&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Ce modèle léger permet d’extraire et d’organiser les informations des CV avec le matériel disponible. Les essais ont toutefois révélé ses limites : certaines informations présentes dans le texte sont parfois oubliées, tandis que d’autres peuvent être inventées.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Le modèle constitue donc un compromis de départ.&lt;/strong&gt; Un modèle plus volumineux pourrait améliorer le traitement des cas difficiles, mais demanderait davantage de ressources et devrait être évalué sur les mêmes documents.&lt;/p&gt;

&lt;p&gt;En attendant, chaque composant conserve son rôle : &lt;strong&gt;l’OCR extrait le texte, Qwen l’interprète et Pydantic contrôle la structure du résultat&lt;/strong&gt;. Cette séparation permet de retrouver l’étape responsable lorsqu’une information manque ou semble incorrecte.&lt;/p&gt;

&lt;p&gt;La fiche du modèle est disponible sur Hugging Face :&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://huggingface.co/Qwen/Qwen3-4B" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-thumbnails.huggingface.co%2Fsocial-thumbnails%2Fmodels%2FQwen%2FQwen3-4B.png" height="432" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://huggingface.co/Qwen/Qwen3-4B" rel="noopener noreferrer" class="c-link"&gt;
            Qwen/Qwen3-4B · Hugging Face
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            We’re on a journey to advance and democratize artificial intelligence through open source and open science.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
          huggingface.co
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  Retour d’expérience : quand le nom du candidat disparaît
&lt;/h2&gt;

&lt;p&gt;Pendant les essais, le pipeline retrouvait parfois les expériences, les formations et les coordonnées, mais oubliait &lt;strong&gt;le nom et le prénom du candidat&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Une information évidente à la lecture pouvait ainsi disparaître pendant le traitement.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fev1aa98qtbeduihv1bk4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fev1aa98qtbeduihv1bk4.png" alt=" " width="535" height="647"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Stop aux rustines !
&lt;/h3&gt;

&lt;p&gt;Les premières tentatives de correction ont consisté à ajouter des conditions, des nœuds n8n et de nouvelles consignes au modèle. Mais à force de donner des coups de clé à molette, le workflow risquait de devenir une usine à gaz.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La comparaison des résultats intermédiaires a permis de localiser le problème : le nom était présent dans le texte extrait, mais disparaissait lors du passage dans le LLM.&lt;/strong&gt; Sur certains essais, le modèle omettait des informations et pouvait aussi en inventer.&lt;/p&gt;

&lt;p&gt;L’extraction du texte fonctionnait donc, mais sa transformation en profil structuré restait imparfaite. Ajouter des étapes autour du modèle ne suffisait pas à résoudre cette limite.&lt;/p&gt;

&lt;p&gt;Ce constat a montré l’importance de &lt;strong&gt;contrôler le contenu produit par l’IA&lt;/strong&gt;, au-delà de sa structure. Un nom absent doit conduire à une vérification, jamais à une identité devinée pour compléter le profil.&lt;/p&gt;




&lt;h2&gt;
  
  
  Qualité des données : quels résultats ?
&lt;/h2&gt;

&lt;p&gt;Les premiers essais ont permis d’observer trois aspects du fonctionnement de CV Forge.&lt;/p&gt;

&lt;h3&gt;
  
  
  Une structure contrôlée
&lt;/h3&gt;

&lt;p&gt;Pydantic vérifie que les données respectent les types et les règles définis. Les coordonnées, les expériences et les formations doivent être organisées dans les champs attendus avant leur utilisation par les autres applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ce contrôle ne garantit pas l’exactitude du contenu.&lt;/strong&gt; Une information peut être correctement placée dans le JSON tout en étant erronée.&lt;/p&gt;

&lt;h3&gt;
  
  
  Des informations à comparer au document original
&lt;/h3&gt;

&lt;p&gt;Les essais ont permis de récupérer des expériences, des formations et des coordonnées. Ils ont aussi révélé des omissions sur l’identité et des informations produites à tort par le modèle.&lt;/p&gt;

&lt;p&gt;La comparaison avec le CV source reste donc nécessaire pour vérifier la fidélité du résultat. Les résultats sont encourageants, mais les essais réalisés ne permettent pas encore d’annoncer un taux de fiabilité représentatif.&lt;/p&gt;

&lt;h3&gt;
  
  
  Un premier repère de performance
&lt;/h3&gt;

&lt;p&gt;Lors d’un essai, le traitement a pris environ &lt;strong&gt;24 secondes&lt;/strong&gt;. Ce résultat donne un premier ordre de grandeur pour la configuration utilisée, mais ne constitue pas une moyenne.&lt;/p&gt;

&lt;p&gt;Un jeu de tests plus varié permettra de mesurer les temps de traitement et les erreurs selon les documents.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Un JSON valide ne signifie pas nécessairement que l’IA a correctement compris le CV.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  L’interopérabilité : le véritable enjeu de HackAVP
&lt;/h2&gt;

&lt;p&gt;Le principal enseignement de ce challenge a été &lt;strong&gt;d’apprendre à faire travailler ensemble des applications développées indépendamment&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Les autres équipes n’ont pas besoin de connaître le moteur OCR ou les instructions transmises à Qwen. Elles ont besoin de données compréhensibles, organisées selon des règles communes.&lt;/p&gt;

&lt;h3&gt;
  
  
  JSON Resume : un langage commun
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;JSON Resume&lt;/strong&gt; est un format ouvert qui représente les informations d’un CV sous forme de données structurées.&lt;/p&gt;

&lt;p&gt;Voici un exemple fictif et simplifié :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"basics"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Anne Tivirus"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"anne@example.nc"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"work"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Entreprise Exemple"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"position"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Technicienne d’exploitation"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Chaque application peut alors intervenir à son niveau :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CV Forge&lt;/strong&gt; extrait et structure les informations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CV-Matching&lt;/strong&gt; recherche des correspondances avec les postes disponibles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CV Generator&lt;/strong&gt; prépare les documents de candidature.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ce &lt;strong&gt;contrat de données commun&lt;/strong&gt; définit l’organisation et le sens des informations échangées. Chaque équipe peut ainsi développer sa solution tout en participant au même parcours candidat.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;L’interopérabilité, c’est permettre aux applications d’échanger des informations qui conservent le même sens.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Europass : aller au-delà de HackAVP
&lt;/h2&gt;

&lt;p&gt;La réutilisation des profils peut également dépasser le cadre du challenge. CV Forge intègre pour cela une &lt;strong&gt;conversion des informations vers le modèle de données Europass&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Qu’est-ce qu’Europass ?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Europass est une plateforme officielle de l’Union européenne&lt;/strong&gt; qui permet de présenter ses compétences, ses qualifications et son expérience professionnelle dans un cadre commun.&lt;/p&gt;

&lt;p&gt;Elle propose notamment la création d’un &lt;strong&gt;CV au format standardisé&lt;/strong&gt;, pour faciliter la lecture des parcours et les candidatures dans différents pays.&lt;/p&gt;

&lt;p&gt;En avril 2026, Europass a atteint &lt;strong&gt;10 millions d’utilisateurs inscrits&lt;/strong&gt; : un écosystème qui dépasse largement le cadre de HackAVP.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://europass.europa.eu/fr/news/europass-has-officially-reached-10-million-registered-users" rel="noopener noreferrer"&gt;Source : Europass annonce 10 millions d’utilisateurs inscrits&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Quel intérêt pour CV Forge ?
&lt;/h3&gt;

&lt;p&gt;La conversion fait correspondre les informations du profil avec la structure Europass : identité, expériences, formations, langues et compétences.&lt;/p&gt;

&lt;p&gt;L’objectif est de &lt;strong&gt;réutiliser les informations du candidat dans un autre environnement, sans tout ressaisir&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;La validation exhaustive des exports reste à approfondir. Cette compatibilité technique ne constitue pas une certification officielle.&lt;/p&gt;


&lt;h2&gt;
  
  
  Un laboratoire IA hébergé à domicile
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;L’OCR et le modèle d’IA fonctionnent sur un ordinateur personnel.&lt;/strong&gt; Cette approche, dite &lt;strong&gt;on-premise&lt;/strong&gt;, consiste à exécuter les services sur sa propre infrastructure.&lt;/p&gt;

&lt;p&gt;Un CV contient des données personnelles. Le traitement local permet de les analyser &lt;strong&gt;sans les transmettre à une API d’IA cloud&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cette installation permet aussi de maîtriser l’environnement et d’éviter une facturation d’API à chaque requête. Elle implique en contrepartie de gérer la sécurité des accès, les données et la maintenance.&lt;/p&gt;
&lt;h3&gt;
  
  
  La configuration utilisée
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Composant&lt;/th&gt;
&lt;th&gt;Configuration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Carte graphique&lt;/td&gt;
&lt;td&gt;NVIDIA GeForce RTX 4060&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mémoire haute performance&lt;/td&gt;
&lt;td&gt;8 Go&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hébergement&lt;/td&gt;
&lt;td&gt;On-premise, à domicile&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exécution du modèle&lt;/td&gt;
&lt;td&gt;Ollama / Qwen3-4B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Services&lt;/td&gt;
&lt;td&gt;Python / FastAPI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Validation&lt;/td&gt;
&lt;td&gt;Pydantic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Orchestration&lt;/td&gt;
&lt;td&gt;n8n&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Format d’échange&lt;/td&gt;
&lt;td&gt;JSON Resume&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compatibilité supplémentaire&lt;/td&gt;
&lt;td&gt;Europass&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Avec &lt;strong&gt;8 Go de VRAM, la mémoire haute performance de la carte graphique&lt;/strong&gt;, le choix se porte sur un modèle léger pour l’extraction et la structuration des informations.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;L’objectif est de tirer le meilleur parti du matériel disponible.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  RTX 4060 ou RTX 5080 : deux configurations, deux usages
&lt;/h2&gt;

&lt;p&gt;L’équipe de &lt;strong&gt;CV Generator&lt;/strong&gt; utilise une &lt;strong&gt;RTX 5080 avec 16 Go de VRAM&lt;/strong&gt; et un modèle plus volumineux pour préparer les documents de candidature.&lt;/p&gt;

&lt;p&gt;Son article présente cette autre brique de l’écosystème :&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/spewq/hackavp-cv-generator-la-solution-de-preparation-de-candidature-1p30" class="crayons-story__hidden-navigation-link"&gt;📑 #HackAVP CV Generator, la solution de préparation de candidature&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/spewq" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3270270%2Fd26301cf-dc35-4817-a67d-5c55e9b14d79.png" alt="spewq profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/spewq" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Quoc-Kim BUI
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Quoc-Kim BUI
                
                
              
              &lt;div id="story-author-preview-content-4842131" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/spewq" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3270270%2Fd26301cf-dc35-4817-a67d-5c55e9b14d79.png" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Quoc-Kim BUI&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/spewq/hackavp-cv-generator-la-solution-de-preparation-de-candidature-1p30" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 17&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/spewq/hackavp-cv-generator-la-solution-de-preparation-de-candidature-1p30" id="article-link-4842131"&gt;
          📑 #HackAVP CV Generator, la solution de préparation de candidature
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hackavp"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hackavp&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hackathon"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hackathon&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/spewq/hackavp-cv-generator-la-solution-de-preparation-de-candidature-1p30" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;13&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/spewq/hackavp-cv-generator-la-solution-de-preparation-de-candidature-1p30#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  Deux configurations, deux approches
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Critère&lt;/th&gt;
&lt;th&gt;CV Forge&lt;/th&gt;
&lt;th&gt;CV Generator&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Carte graphique&lt;/td&gt;
&lt;td&gt;RTX 4060&lt;/td&gt;
&lt;td&gt;RTX 5080&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mémoire vidéo&lt;/td&gt;
&lt;td&gt;8 Go&lt;/td&gt;
&lt;td&gt;16 Go&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prix indicatif de la carte en NC&lt;/td&gt;
&lt;td&gt;Environ 60 000 F CFP&lt;/td&gt;
&lt;td&gt;Environ 300 000 F CFP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modèle LLM&lt;/td&gt;
&lt;td&gt;Qwen3-4B&lt;/td&gt;
&lt;td&gt;Qwen3-14B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Objectif&lt;/td&gt;
&lt;td&gt;Extraction et structuration&lt;/td&gt;
&lt;td&gt;Génération de candidatures&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hébergement&lt;/td&gt;
&lt;td&gt;On-premise&lt;/td&gt;
&lt;td&gt;On-premise&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Avec davantage de VRAM, l’équipe peut utiliser &lt;a href="https://huggingface.co/Qwen/Qwen3-14B" rel="noopener noreferrer"&gt;Qwen3-14B&lt;/a&gt;, un modèle plus volumineux, qui peut offrir de meilleurs résultats sur des tâches complexes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tout est une question de puissance adaptée au besoin : inutile de prendre un camion pour transporter un sac de courses.&lt;/strong&gt; Pour l’usage actuel de CV Forge, la RTX 4060 constitue un compromis entre &lt;strong&gt;budget, rapidité et qualité d’extraction&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cette comparaison présente les configurations. Un véritable benchmark nécessiterait de traiter les mêmes documents sur les mêmes tâches pour mesurer les différences de rapidité et de précision.&lt;/p&gt;

&lt;h3&gt;
  
  
  Une architecture qui peut évoluer
&lt;/h3&gt;

&lt;p&gt;L’ajout de fonctions plus exigeantes pourra nécessiter &lt;strong&gt;davantage de puissance de calcul et de mémoire vidéo&lt;/strong&gt;, notamment pour analyser des documents complexes avec des modèles multimodaux.&lt;/p&gt;

&lt;p&gt;La RTX 4060 constitue donc un point de départ. Une évolution matérielle permettrait de tester d’autres modèles tout en conservant le fonctionnement général du pipeline :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OCR → Ollama / Qwen → Pydantic → JSON Resume → Autres applications&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Les composants internes pourront évoluer, avec les ajustements et les tests nécessaires, tout en maintenant un format de sortie compatible avec les autres applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  Et après ? Les prochaines évolutions de CV Forge
&lt;/h2&gt;

&lt;p&gt;Plusieurs pistes restent à explorer :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Diversifier les CV testés&lt;/strong&gt;, notamment dans la restauration, le BTP, l’administration et le commerce.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expérimenter la reconnaissance de l’écriture manuscrite&lt;/strong&gt;, pour évaluer le traitement de CV manuscrits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comparer d’autres approches OCR et multimodales&lt;/strong&gt;, capables de traiter le texte et les images pour mieux prendre en compte la mise en page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tester des modèles plus volumineux&lt;/strong&gt;, si les ressources matérielles le permettent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mesurer la fiabilité&lt;/strong&gt;, avec un jeu de tests commun pour comparer les erreurs d’extraction et les temps de traitement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La priorité reste de &lt;strong&gt;mieux mesurer les limites actuelles&lt;/strong&gt; pour orienter les prochaines améliorations.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion : apprendre à construire ensemble
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CV Forge transforme des CV en profils structurés grâce à une chaîne de traitement locale&lt;/strong&gt;, en tenant compte des contraintes matérielles et des limites de l’IA.&lt;/p&gt;

&lt;p&gt;Les essais ont montré que l’extraction et la validation doivent être accompagnées d’un contrôle du contenu : une information peut disparaître ou être inventée, même lorsque le résultat respecte le format attendu.&lt;/p&gt;

&lt;p&gt;Le projet a aussi permis de travailler sur les besoins des autres équipes : quelles informations transmettre, comment les organiser et comment préserver leur sens d’une application à l’autre.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Une application prend encore plus de valeur lorsqu’elle est capable de fonctionner avec les autres.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Les acteurs derrière HackAVP
&lt;/h2&gt;

&lt;p&gt;Ce projet a bénéficié de l’accompagnement de plusieurs acteurs :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OPT-NC&lt;/strong&gt;, pour la problématique de recrutement et les données mises à disposition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Station N&lt;/strong&gt;, pour l’organisation de HackAVP et le cadre d’expérimentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IAE / Université de la Nouvelle-Calédonie&lt;/strong&gt;, pour cette expérience concrète intégrée au Master MIAGE.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commission Data &amp;amp; IA d’OPEN NC&lt;/strong&gt;, pour son implication et son soutien au projet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Barrau Business Systems (BBS)&lt;/strong&gt;, pour la formation et l’accompagnement professionnel ayant contribué à la réalisation de CV Forge.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Un remerciement particulier à &lt;strong&gt;M. Adrien SALES de l’OPT-NC&lt;/strong&gt;, pour son accompagnement et pour la place accordée à une notion centrale de ce challenge : &lt;strong&gt;l’interopérabilité&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Merci également à l’ensemble de la promotion pour les échanges et le travail réalisé entre les différentes applications.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Projet :&lt;/strong&gt; HackAVP 2026, CV Forge&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Développement :&lt;/strong&gt; Florian Jean-Baptiste Dit Doudoute&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Formation :&lt;/strong&gt; Master MIAGE, Université de la Nouvelle-Calédonie&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Infrastructure :&lt;/strong&gt; On-premise, Nouvelle-Calédonie&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Technologies :&lt;/strong&gt; Python, FastAPI, OCR, Ollama, Qwen, Pydantic, n8n, JSON Resume, Europass&lt;/p&gt;

</description>
      <category>ai</category>
      <category>showdev</category>
      <category>hackavp</category>
      <category>python</category>
    </item>
  </channel>
</rss>
