<?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: Bastian</title>
    <description>The latest articles on DEV Community by Bastian (@c2b).</description>
    <link>https://dev.to/c2b</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%2F4193513%2Fdf36c2ad-f955-491b-a1e1-2f51e47c6438.png</url>
      <title>DEV Community: Bastian</title>
      <link>https://dev.to/c2b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/c2b"/>
    <language>en</language>
    <item>
      <title>#HackAVP Adopte un Job : swipe les postes de l'OPT-NC, vois pourquoi ils te correspondent</title>
      <dc:creator>Bastian</dc:creator>
      <pubDate>Tue, 20 Oct 2026 00:12:40 +0000</pubDate>
      <link>https://dev.to/c2b/adopte-un-job-on-swipe-les-vrais-postes-de-lopt-nc-et-on-voit-pourquoi-ils-nous-correspondent-48pc</link>
      <guid>https://dev.to/c2b/adopte-un-job-on-swipe-les-vrais-postes-de-lopt-nc-et-on-voit-pourquoi-ils-nous-correspondent-48pc</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Track&lt;/strong&gt; : SaaS no limit&lt;br&gt;
&lt;strong&gt;Application&lt;/strong&gt; : &lt;a href="https://zako.nc/avp/" rel="noopener noreferrer"&gt;https://zako.nc/avp/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Code&lt;/strong&gt; : &lt;a href="https://github.com/C2Bx/adopte-un-job" rel="noopener noreferrer"&gt;https://github.com/C2Bx/adopte-un-job&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🎯 Le contexte
&lt;/h2&gt;

&lt;p&gt;Le &lt;a href="https://dev.to/adriens/hackavp-premier-hackathon-dedie-a-lemploi-dans-la-fonction-publique-en-ncl-3oj0"&gt;#HackAVP&lt;/a&gt; est le premier hackathon dédié à l'emploi dans la fonction publique en Nouvelle-Calédonie. Son point de départ :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;« Une offre d'emploi publiée n'est pas une offre d'emploi trouvée. »&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;L'&lt;strong&gt;OPT-NC&lt;/strong&gt; (l'Office des postes et télécommunications de Nouvelle-Calédonie) publie ses offres d'emploi sous forme d'&lt;a href="https://office.opt.nc/fr/emploi-et-carriere/postuler-lopt-nc/avp" rel="noopener noreferrer"&gt;&lt;strong&gt;avis de vacance de poste&lt;/strong&gt;&lt;/a&gt;, les &lt;strong&gt;AVP&lt;/strong&gt;. Ces avis sont &lt;a href="https://opt-nc.github.io/odata-avps/" rel="noopener noreferrer"&gt;&lt;strong&gt;ouverts&lt;/strong&gt;&lt;/a&gt; : n'importe qui peut les lire, dans un format standard du web (&lt;a href="https://schema.org/JobPosting" rel="noopener noreferrer"&gt;&lt;code&gt;schema.org/JobPosting&lt;/code&gt;&lt;/a&gt;, celui que les moteurs de recherche comprennent), et un programme peut les récupérer automatiquement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La donnée est là.&lt;/strong&gt; Ce qui manque, c'est le chemin entre une Calédonienne ou un Calédonien et le poste qui lui correspond :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;un vocabulaire administratif qui n'est pas le sien ;&lt;/li&gt;
&lt;li&gt;des fiches qui ne disent pas à qui elles s'adressent ;&lt;/li&gt;
&lt;li&gt;et aucune réponse à la seule question qui compte : &lt;strong&gt;« est-ce que ce poste est pour moi ? »&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 La réponse : Adopte un Job
&lt;/h2&gt;

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

&lt;p&gt;Une application où l'on fait défiler les &lt;strong&gt;vrais postes ouverts&lt;/strong&gt; à l'OPT-NC, comme sur une appli de rencontre :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;à droite&lt;/strong&gt; pour candidater ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;à gauche&lt;/strong&gt; pour passer ;&lt;/li&gt;
&lt;li&gt;et pour chaque offre, une &lt;strong&gt;adéquation qui s'explique&lt;/strong&gt; : ce poste te correspond à tant de pour cent, et voici pourquoi, compétence par compétence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le geste est volontairement celui que tout le monde connaît déjà : l'application reprend des habitudes bien ancrées dans la culture web et mobile plutôt que d'en inventer de nouvelles. Un public jeune s'en sert sans mode d'emploi, et chercher un poste public ne demande plus d'apprendre une interface.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎬 La démo Adopte un Job
&lt;/h2&gt;

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




&lt;h2&gt;
  
  
  🧩 Un projet commun du Master MIAGE
&lt;/h2&gt;

&lt;p&gt;Adopte un Job n'est pas un projet isolé. Au hackathon, la promotion du &lt;a href="https://www.unc.nc/formations/master-methodes-informatiques-appliquees-a-la-gestion-des-entreprises/" rel="noopener noreferrer"&gt;&lt;strong&gt;Master MIAGE&lt;/strong&gt;&lt;/a&gt; de l'Université de la Nouvelle-Calédonie a construit ensemble une chaîne de &lt;strong&gt;sept modules&lt;/strong&gt;, chacun tenu par une ou deux personnes. Adopte un Job en est le &lt;strong&gt;MS3&lt;/strong&gt; : l'application que voit le candidat. Maud, qui pilote le projet, raconte &lt;a href="https://dev.to/maud_granger_nc/jobmatch-nc-quand-linteroperabilite-devient-plus-quun-defi-technique-1ma"&gt;comment les modules ont été rendus interopérables&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftaozmek6iaks895zwoyz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftaozmek6iaks895zwoyz.gif" alt="Les sept modules du projet commun et leurs échanges"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Qui fait quoi, avec l'article de chaque module :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MS1 &lt;a href="https://dev.to/florian_doudoute/hackavp-cv-forge-lusine-a-cv-boostee-par-ia-locale-4a64"&gt;CVForge&lt;/a&gt;&lt;/strong&gt; (Florian) lit les CV ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MS2 &lt;a href="https://dev.to/pastek/hackavpi-dp8"&gt;HACKAVPI&lt;/a&gt;&lt;/strong&gt; (Dan et Timothée), le serveur commun, porte les comptes, les offres et les candidatures ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MS3 Adopte un Job&lt;/strong&gt; (Bastian) est l'application du candidat ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MS4 &lt;a href="https://dev.to/spewq/hackavp-cv-generator-la-solution-de-preparation-de-candidature-1p30"&gt;CV Generator&lt;/a&gt;&lt;/strong&gt; (Anthony et Kim) produit les documents de candidature ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MS5 &lt;a href="https://dev.to/jocc0/cv-matching-le-bon-profil-preuves-a-lappui-hackavp-4oh8"&gt;CV-Matching&lt;/a&gt;&lt;/strong&gt; (Jo-Michel) calcule le score ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MS6 &lt;a href="https://dev.to/sh0ck3r/hackavp-avpro-lespace-recruteur-qui-remplace-la-boite-mail-par-un-swipe-et-explique-chaque-10ph"&gt;AVPRO-NC&lt;/a&gt;&lt;/strong&gt; (Damien et Lucas) est l'espace des recruteurs ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MS7 &lt;a href="https://dev.to/elodie_tran_data/et-si-les-donnees-du-recrutement-repondaient-a-nos-questions--1d5o"&gt;Insight Squad&lt;/a&gt;&lt;/strong&gt; (Élodie et Mathieu) suit les indicateurs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le profil du candidat circule entre eux dans un format ouvert de CV, le &lt;a href="https://jsonresume.org/" rel="noopener noreferrer"&gt;&lt;strong&gt;JSON Resume&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Le serveur commun explique pas à pas ce qu'est une API et comment elle relie tous les modules :&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/pastek/hackavpi-dp8" class="crayons-story__hidden-navigation-link"&gt;HACKAVPI&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="/pastek" 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%2F4195037%2Fdb464d71-b159-4a74-84ce-ee9e2e3c7b0c.png" alt="pastek profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/pastek" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Thimotée
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Thimotée
                
                
              
              &lt;div id="story-author-preview-content-4880260" 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="/pastek" 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%2F4195037%2Fdb464d71-b159-4a74-84ce-ee9e2e3c7b0c.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Thimotée&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/pastek/hackavpi-dp8" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 20&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/pastek/hackavpi-dp8" id="article-link-4880260"&gt;
          HACKAVPI
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/api"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;api&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/backend"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;backend&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&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/pastek/hackavpi-dp8" 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/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/pastek/hackavpi-dp8#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&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;
            8 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;





&lt;h2&gt;
  
  
  🧭 Le parcours, étape par étape
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣ Je crée mon profil
&lt;/h3&gt;

&lt;p&gt;Trois portes, côte à côte, et aucune n'est plus « officielle » que les autres :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;un formulaire guidé, à la main ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;neuf questions&lt;/strong&gt; courtes (métiers visés, zones, contrat, disponibilité…) ;&lt;/li&gt;
&lt;li&gt;ou mon CV déposé (PDF, PNG, JPEG), que &lt;strong&gt;&lt;a href="https://dev.to/florian_doudoute/hackavp-cv-forge-lusine-a-cv-boostee-par-ia-locale-4a64"&gt;CVForge&lt;/a&gt;&lt;/strong&gt; lit automatiquement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Florian explique comment CVForge transforme un CV en données structurées :&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/florian_doudoute/hackavp-cv-forge-lusine-a-cv-boostee-par-ia-locale-4a64" class="crayons-story__hidden-navigation-link"&gt;#HackAVP CV FORGE, L'USINE A CV BOOSTÉE PAR IA LOCALE&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="/florian_doudoute" 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%2F4178542%2F82f0d21d-c343-4b6f-9ba1-e1624c15d8a9.jpg" alt="florian_doudoute profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/florian_doudoute" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Florian DOUDOUTE
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Florian DOUDOUTE
                
                
              
              &lt;div id="story-author-preview-content-4871920" 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="/florian_doudoute" 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%2F4178542%2F82f0d21d-c343-4b6f-9ba1-e1624c15d8a9.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Florian DOUDOUTE&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/florian_doudoute/hackavp-cv-forge-lusine-a-cv-boostee-par-ia-locale-4a64" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 20&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/florian_doudoute/hackavp-cv-forge-lusine-a-cv-boostee-par-ia-locale-4a64" id="article-link-4871920"&gt;
          #HackAVP CV FORGE, L'USINE A CV BOOSTÉE PAR IA LOCALE
        &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/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&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/python"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;python&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/florian_doudoute/hackavp-cv-forge-lusine-a-cv-boostee-par-ia-locale-4a64" 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/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;7&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/florian_doudoute/hackavp-cv-forge-lusine-a-cv-boostee-par-ia-locale-4a64#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;
            10 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;La lecture automatique &lt;strong&gt;ne remplace jamais ce que la personne a saisi&lt;/strong&gt;. Elle n'est recopiée dans le profil que s'il est encore vide (aucune expérience, formation, compétence ni langue) ; sinon, elle reste à part et ne touche à rien. Le candidat relit et corrige : &lt;strong&gt;il reste le seul rédacteur de son profil.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ton profil t'appartient.&lt;/strong&gt; Il s'exporte et se réimporte en un clic au format &lt;a href="https://jsonresume.org/" rel="noopener noreferrer"&gt;JSON Resume&lt;/a&gt;, un standard ouvert de CV. Le même fichier sert ailleurs : CV Generator en tire une lettre et un CV recentré, n'importe quel thème JSON Resume le met en page comme un CV classique, une autre application peut l'importer tel quel. Tu le remplis une fois, et il n'est prisonnier d'aucune application, pas même de celle-ci.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣ Je fais défiler les offres
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwfcxudkzhznxclgqw04m.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwfcxudkzhznxclgqw04m.gif" alt="Le deck en action, extrait de la vidéo de démo : à droite pour candidater, à gauche pour passer, ou « plus tard »"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Une carte = un vrai avis. On la glisse du doigt ou de la souris, on clique sur les boutons, ou on utilise le clavier :&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Touche&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;➡️&lt;/td&gt;
&lt;td&gt;candidater&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⬅️&lt;/td&gt;
&lt;td&gt;passer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⬇️&lt;/td&gt;
&lt;td&gt;mettre à plus tard&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retour arrière&lt;/td&gt;
&lt;td&gt;revenir sur la dernière décision&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Le &lt;strong&gt;détail de l'offre&lt;/strong&gt; donne l'AVP en clair : description, missions, relations de travail, employeur, et un encadré &lt;em&gt;En bref&lt;/em&gt; (rattachement hiérarchique, place dans l'organigramme, métier, horaires, habilitations, condition de résidence quand l'avis en pose une).&lt;/p&gt;

&lt;h3&gt;
  
  
  3️⃣ Je vois pourquoi une offre me correspond
&lt;/h3&gt;

&lt;p&gt;Le score vient du &lt;strong&gt;système de scoring de &lt;a href="https://dev.to/jocc0/cv-matching-le-bon-profil-preuves-a-lappui-hackavp-4oh8"&gt;CV-Matching&lt;/a&gt;&lt;/strong&gt; (Jo-Michel), qui note chaque compétence attendue par le poste face au profil. Adopte un Job ne refait pas ce calcul : il le &lt;strong&gt;rend lisible&lt;/strong&gt;. Le détail du calcul est dans l'article de Jo-Michel :&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/jocc0/cv-matching-le-bon-profil-preuves-a-lappui-hackavp-4oh8" class="crayons-story__hidden-navigation-link"&gt;CV-Matching : le bon profil, preuves à l'appui (#HackAVP)&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="/jocc0" 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%2F4181199%2Fad7745ca-425b-4beb-b8a5-da99fb2bf014.jpg" alt="jocc0 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/jocc0" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Jo Biden
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Jo Biden
                
                
              
              &lt;div id="story-author-preview-content-4880425" 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="/jocc0" 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%2F4181199%2Fad7745ca-425b-4beb-b8a5-da99fb2bf014.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Jo Biden&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/jocc0/cv-matching-le-bon-profil-preuves-a-lappui-hackavp-4oh8" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 20&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/jocc0/cv-matching-le-bon-profil-preuves-a-lappui-hackavp-4oh8" id="article-link-4880425"&gt;
          CV-Matching : le bon profil, preuves à l'appui (#HackAVP)
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&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/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&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;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;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/jocc0/cv-matching-le-bon-profil-preuves-a-lappui-hackavp-4oh8" 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/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&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/jocc0/cv-matching-le-bon-profil-preuves-a-lappui-hackavp-4oh8#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&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;p&gt;Sur chaque carte, une pastille résume le score. Dans le détail de l'offre, un petit tableau de bord l'explique (ci-dessous sur une vraie offre, « Chef de cellule Radio - CERT », avec un profil de test qui ne parle pas de réseaux radio : &lt;em&gt;« Adéquation faible · 2 % »&lt;/em&gt;) :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgjs0jijq7n2il83ws04e.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgjs0jijq7n2il83ws04e.gif" alt="Le tableau de bord d'adéquation, sur la même offre et le même profil de test"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;une &lt;strong&gt;jauge&lt;/strong&gt; : la part des compétences du poste couvertes par le profil, pondérées par leur importance ;&lt;/li&gt;
&lt;li&gt;quatre indicateurs : &lt;strong&gt;compétences couvertes&lt;/strong&gt; (ici 0 sur 26), &lt;strong&gt;rang de cette offre&lt;/strong&gt; parmi toutes celles analysées (ici « 20e sur 25 »), &lt;strong&gt;savoir-être&lt;/strong&gt; à montrer en entretien, &lt;strong&gt;prérequis&lt;/strong&gt; à vérifier ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;une barre par compétence&lt;/strong&gt;, notée sur 100. Au survol ou au clavier, l'explication : pour une compétence couverte, sa note et la phrase du profil qui le montre ; pour une compétence à travailler, ce qu'elle pèse dans le score (ici &lt;em&gt;« Pèse 4,6 points dans le score »&lt;/em&gt;). Les compétences à travailler suivent, de celle qui pèse le plus dans le score à celle qui pèse le moins.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;C'est ce qui rend le score &lt;strong&gt;explicable&lt;/strong&gt; : on voit &lt;strong&gt;pourquoi&lt;/strong&gt; ce poste et ce profil se rencontrent, et &lt;strong&gt;où&lt;/strong&gt; ils ne se rencontrent pas.&lt;/p&gt;

&lt;p&gt;Les &lt;strong&gt;prérequis&lt;/strong&gt; (diplôme, permis…) sont montrés à part et &lt;strong&gt;ne sont jamais notés&lt;/strong&gt; : chacun porte un statut (&lt;em&gt;rempli&lt;/em&gt;, &lt;em&gt;à vérifier&lt;/em&gt;, &lt;em&gt;pas encore&lt;/em&gt;…), avec la raison donnée par CV-Matching.&lt;/p&gt;

&lt;p&gt;Et surtout, &lt;strong&gt;l'adéquation est une indication, pas un filtre&lt;/strong&gt; : toutes les offres restent dans la liste, une adéquation faible ne cache rien et n'empêche pas de candidater.&lt;/p&gt;

&lt;h3&gt;
  
  
  4️⃣ Je prépare ma candidature
&lt;/h3&gt;

&lt;p&gt;Le tableau de bord dit déjà quoi mettre en avant et quoi préparer pour l'entretien. Pour aller plus loin, la &lt;strong&gt;lettre de candidature&lt;/strong&gt;, le &lt;strong&gt;CV recentré&lt;/strong&gt; sur le poste et le &lt;strong&gt;guide d'entretien&lt;/strong&gt; sont produits par &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; (Anthony et Kim), à partir du profil du candidat et du numéro de l'AVP :&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"&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=""&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="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&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;h3&gt;
  
  
  5️⃣ Je candidate, et je suis la réponse
&lt;/h3&gt;

&lt;p&gt;Glisser une carte à droite crée une &lt;strong&gt;vraie candidature&lt;/strong&gt;. Elle arrive dans &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-NC&lt;/strong&gt;&lt;/a&gt;, l'espace des recruteurs, et le candidat suit la décision dans l'onglet &lt;em&gt;Candidatures&lt;/em&gt; : en attente, retenue, non retenue, ou entretien à programmer.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/sh0ck3r/hackavp-avpro-lespace-recruteur-qui-remplace-la-boite-mail-par-un-swipe-et-explique-chaque-10ph" class="crayons-story__hidden-navigation-link"&gt;#HackAVP AVPRO : l'espace recruteur qui remplace la boîte mail par un swipe (et explique chaque score)&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="/sh0ck3r" 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%2F4181217%2Fd093b3f9-ef06-45eb-a8cb-ff9a354cba21.jpg" alt="sh0ck3r profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/sh0ck3r" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Luca BEROULE
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Luca BEROULE
                
                
              
              &lt;div id="story-author-preview-content-4881259" 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="/sh0ck3r" 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%2F4181217%2Fd093b3f9-ef06-45eb-a8cb-ff9a354cba21.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Luca BEROULE&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/sh0ck3r/hackavp-avpro-lespace-recruteur-qui-remplace-la-boite-mail-par-un-swipe-et-explique-chaque-10ph" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 20&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/sh0ck3r/hackavp-avpro-lespace-recruteur-qui-remplace-la-boite-mail-par-un-swipe-et-explique-chaque-10ph" id="article-link-4881259"&gt;
          #HackAVP AVPRO : l'espace recruteur qui remplace la boîte mail par un swipe (et explique chaque score)
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&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/react"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;react&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/typescript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;typescript&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/sh0ck3r/hackavp-avpro-lespace-recruteur-qui-remplace-la-boite-mail-par-un-swipe-et-explique-chaque-10ph" 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/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/sh0ck3r/hackavp-avpro-lespace-recruteur-qui-remplace-la-boite-mail-par-un-swipe-et-explique-chaque-10ph#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&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;
            10 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;Et parce qu'un AVP dit à qui écrire, chaque offre propose aussi &lt;strong&gt;le contact de l'avis&lt;/strong&gt;, avec un mail prêt à partir : bon destinataire, objet &lt;em&gt;« Candidature — intitulé du poste (référence) »&lt;/em&gt;. La candidature peut sortir de l'application sans dépendre d'elle.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Sous le capot
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Pour les développeurs.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0oby4hzlx49y976y4xsf.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0oby4hzlx49y976y4xsf.gif" alt="Schéma : Adopte un Job, le relais, HACKAVPI et CV-Matching"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React 19 + TypeScript strict + Vite&lt;/strong&gt;. L'application est un simple dossier de fichiers, accompagné d'un petit relais PHP : on le dépose sur un hébergement PHP, rien d'autre à faire tourner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Elle ne garde rien&lt;/strong&gt; : ni base de données, ni serveur à elle, ni CV. Elle affiche ce que HACKAVPI et CV-Matching lui donnent, et leur transmet ce que la personne saisit. &lt;strong&gt;Une seule source de vérité&lt;/strong&gt;, aucune donnée personnelle dupliquée dans un coin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le relais&lt;/strong&gt; existe parce que le serveur commun n'autorise pas encore les appels directs depuis un navigateur (il n'envoie pas d'en-têtes CORS). Il est &lt;strong&gt;sans état&lt;/strong&gt; et ne laisse passer que les adresses dont l'application a besoin, chacune avec sa seule méthode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pour CV-Matching&lt;/strong&gt;, le relais ajoute la clé du service côté serveur : elle n'est &lt;strong&gt;ni dans le dépôt, ni dans le code envoyé au navigateur&lt;/strong&gt;, et le jeton de connexion du candidat n'est jamais transmis au service de matching.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Des standards ouverts plutôt que des formats maison&lt;/strong&gt; :

&lt;ul&gt;
&lt;li&gt;les AVP au format &lt;a href="https://schema.org/JobPosting" rel="noopener noreferrer"&gt;&lt;code&gt;schema.org/JobPosting&lt;/code&gt;&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;le &lt;a href="https://jsonresume.org/" rel="noopener noreferrer"&gt;&lt;strong&gt;JSON Resume&lt;/strong&gt;&lt;/a&gt; pour le profil ;&lt;/li&gt;
&lt;li&gt;le &lt;strong&gt;référentiel des métiers de l'OPT-NC&lt;/strong&gt; (84 métiers, 409 compétences), repris de &lt;a href="https://github.com/opt-nc/odata-referentiel-metiers" rel="noopener noreferrer"&gt;sa publication officielle&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;les &lt;strong&gt;codes ROME&lt;/strong&gt; (le répertoire national des métiers de France Travail), affichés dans le détail de chaque offre qui en porte un.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Un seul fichier parle aux serveurs&lt;/strong&gt; (&lt;code&gt;api.ts&lt;/code&gt;) : il traduit leurs réponses dans les formes que les écrans connaissent. Les écrans ne savent rien des serveurs.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ♿ Accessibilité
&lt;/h2&gt;

&lt;p&gt;Une offre d'emploi public doit pouvoir être lue par tout le monde, quels que soient l'écran, la vue ou la façon de naviguer. Concrètement :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tout le parcours de défilement se pilote &lt;strong&gt;au clavier&lt;/strong&gt;, et les boutons sont nommés pour les lecteurs d'écran ;&lt;/li&gt;
&lt;li&gt;les animations s'arrêtent quand le système demande moins de mouvement ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mobile d'abord&lt;/strong&gt; : tout se fait au pouce, recherche et filtres compris ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mode jour et mode nuit&lt;/strong&gt; au choix, mémorisés ;&lt;/li&gt;
&lt;li&gt;un &lt;strong&gt;langage clair&lt;/strong&gt;, qui &lt;strong&gt;tutoie&lt;/strong&gt; : « Ton adéquation avec ce poste », « rien ne t’empêche de candidater », et un écran vide qui dit clairement qu'aucune offre n'est ouverte, plutôt qu'un « aucun résultat » qui fait croire à une panne.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ♻️ Réutiliser Adopte un Job ailleurs
&lt;/h2&gt;

&lt;p&gt;Si Adopte un Job peut servir ailleurs, c'est grâce à l'OPT-NC : en publiant ses offres ouvertes, au format standard &lt;code&gt;schema.org/JobPosting&lt;/code&gt;, et son référentiel des métiers, il a rendu possible une application que d'autres peuvent reprendre.&lt;/p&gt;

&lt;p&gt;Une autre administration qui publie ses offres de la même façon peut donc s'en servir pour les siennes. Il lui faudra brancher l'application sur ses propres données :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;l'adresse de son serveur d'offres, dans le relais ;&lt;/li&gt;
&lt;li&gt;la lecture de ses offres, dans &lt;code&gt;api.ts&lt;/code&gt; ;&lt;/li&gt;
&lt;li&gt;son référentiel des métiers ;&lt;/li&gt;
&lt;li&gt;les quelques libellés qui nomment l'OPT-NC.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Le défilement, le profil, l'adéquation et les candidatures restent les mêmes.&lt;/p&gt;

&lt;p&gt;Le dépôt contient aussi &lt;strong&gt;la démo de départ&lt;/strong&gt; (&lt;code&gt;demo/&lt;/code&gt;), en HTML, CSS et JavaScript, sans framework ni étape de build, qui s'ouvre sans compte ni serveur sur des offres fictives.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔐 Données personnelles
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Les démonstrations, la vidéo et les visuels utilisent &lt;strong&gt;un profil fictif&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;L'application n'enregistre &lt;strong&gt;aucun CV&lt;/strong&gt; de son côté.&lt;/li&gt;
&lt;li&gt;Le &lt;strong&gt;nom, l'e-mail, le téléphone et l'adresse&lt;/strong&gt; du profil ne sont pas envoyés au calcul d'adéquation : seuls le titre, le résumé, les expériences (bénévoles comprises), la formation, les compétences, les projets, les certifications et les langues le sont. Ces textes partent tels quels : ce qu'on y a écrit soi-même part avec.&lt;/li&gt;
&lt;li&gt;Ce qui reste dans le navigateur se limite à la session (le jeton de connexion et l'adresse e-mail, effacés à la fermeture de l'onglet), aux offres mises à plus tard ou remises dans la liste, et au choix jour / nuit.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Et ensuite ?
&lt;/h2&gt;

&lt;p&gt;Ce que je ferais avec un peu plus de temps :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trier le deck par adéquation&lt;/strong&gt;, en option : les offres qui te correspondent le plus d'abord, sans en cacher aucune.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prévenir quand un nouvel avis arrive&lt;/strong&gt; dans tes métiers ou tes zones : les AVP de l'OPT-NC arrivent au fil de l'eau.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Une session qui se renouvelle&lt;/strong&gt; : aujourd'hui, la connexion dure une heure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supprimer le relais PHP&lt;/strong&gt; dès que le serveur commun autorisera les appels directs depuis le navigateur : l'application deviendrait 100 % statique.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ouvrir le dépôt de CV à d'autres formats&lt;/strong&gt; (Word notamment) : la lecture est déjà confiée à CVForge, il reste à laisser ces fichiers passer par le serveur commun.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Un audit d'accessibilité complet&lt;/strong&gt; (RGAA), avec des utilisateurs de lecteurs d'écran.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Brancher une deuxième administration&lt;/strong&gt; qui publie ses offres en &lt;code&gt;schema.org/JobPosting&lt;/code&gt;, pour prouver la réutilisation en vrai.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏁 Pour finir
&lt;/h2&gt;

&lt;p&gt;Une offre publiée n'est pas une offre trouvée : avec Adopte un Job, chaque avis de l'OPT-NC devient une carte qu'on comprend, avec une raison claire de candidater ou de passer, et une candidature dont on suit la réponse.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Et toi ?&lt;/strong&gt; Qu'est-ce qui t'a déjà fait renoncer à une offre d'emploi : le jargon, une fiche trop floue, ou l'impression que ce n'était pas pour toi ? Dis-le en commentaire, ça aidera à améliorer l'application.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Bastian — Adopte un Job (MS3), #HackAVP, Master MIAGE.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hackavp</category>
      <category>hackathon</category>
      <category>career</category>
      <category>opendata</category>
    </item>
  </channel>
</rss>
