Track : SaaS no limit
Application : https://zako.nc/avp/
Code : https://github.com/C2Bx/adopte-un-job
đŻ Le contexte
Le #HackAVP est le premier hackathon dédié à l'emploi dans la fonction publique en Nouvelle-Calédonie. Son point de départ :
« Une offre d'emploi publiée n'est pas une offre d'emploi trouvée. »
L'OPT-NC (l'Office des postes et télécommunications de Nouvelle-Calédonie) publie ses offres d'emploi sous forme d'avis de vacance de poste, les AVP. Ces avis sont ouverts : n'importe qui peut les lire, dans un format standard du web (schema.org/JobPosting, celui que les moteurs de recherche comprennent), et un programme peut les récupérer automatiquement.
La donnée est là . Ce qui manque, c'est le chemin entre une Calédonienne ou un Calédonien et le poste qui lui correspond :
- un vocabulaire administratif qui n'est pas le sien ;
- des fiches qui ne disent pas Ă qui elles s'adressent ;
- et aucune réponse à la seule question qui compte : « est-ce que ce poste est pour moi ? »
đĄ La rĂ©ponse : Adopte un Job
Une application oĂč l'on fait dĂ©filer les vrais postes ouverts Ă l'OPT-NC, comme sur une appli de rencontre :
- Ă droite pour candidater ;
- Ă gauche pour passer ;
- et pour chaque offre, une adéquation qui s'explique : ce poste te correspond à tant de pour cent, et voici pourquoi, compétence par compétence.
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.
đŹ La dĂ©mo Adopte un Job
đ§© Un projet commun du Master MIAGE
Adopte un Job n'est pas un projet isolé. Au hackathon, la promotion du Master MIAGE de l'Université de la Nouvelle-Calédonie a construit ensemble une chaßne de sept modules, chacun tenu par une ou deux personnes. Adopte un Job en est le MS3 : l'application que voit le candidat. Maud, qui pilote le projet, raconte comment les modules ont été rendus interopérables.
Qui fait quoi, avec l'article de chaque module :
- MS1 CVForge (Florian) lit les CV ;
- MS2 HACKAVPI (Dan et Timothée), le serveur commun, porte les comptes, les offres et les candidatures ;
- MS3 Adopte un Job (Bastian) est l'application du candidat ;
- MS4 CV Generator (Anthony et Kim) produit les documents de candidature ;
- MS5 CV-Matching (Jo-Michel) calcule le score ;
- MS6 AVPRO-NC (Damien et Lucas) est l'espace des recruteurs ;
- MS7 Insight Squad (Ălodie et Mathieu) suit les indicateurs.
Le profil du candidat circule entre eux dans un format ouvert de CV, le JSON Resume.
Le serveur commun explique pas Ă pas ce qu'est une API et comment elle relie tous les modules :
đ§ Le parcours, Ă©tape par Ă©tape
1ïžâŁ Je crĂ©e mon profil
Trois portes, cÎte à cÎte, et aucune n'est plus « officielle » que les autres :
- un formulaire guidé, à la main ;
- neuf questions courtes (mĂ©tiers visĂ©s, zones, contrat, disponibilitĂ©âŠ) ;
- ou mon CV déposé (PDF, PNG, JPEG), que CVForge lit automatiquement.
Florian explique comment CVForge transforme un CV en données structurées :
La lecture automatique ne remplace jamais ce que la personne a saisi. 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 : il reste le seul rédacteur de son profil.
Ton profil t'appartient. Il s'exporte et se rĂ©importe en un clic au format JSON Resume, 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.
2ïžâŁ Je fais dĂ©filer les offres
Une carte = un vrai avis. On la glisse du doigt ou de la souris, on clique sur les boutons, ou on utilise le clavier :
| Touche | Action |
|---|---|
| âĄïž | candidater |
| âŹ ïž | passer |
| âŹïž | mettre Ă plus tard |
| Retour arriÚre | revenir sur la derniÚre décision |
Le détail de l'offre donne l'AVP en clair : description, missions, relations de travail, employeur, et un encadré En bref (rattachement hiérarchique, place dans l'organigramme, métier, horaires, habilitations, condition de résidence quand l'avis en pose une).
3ïžâŁ Je vois pourquoi une offre me correspond
Le score vient du systÚme de scoring de CV-Matching (Jo-Michel), qui note chaque compétence attendue par le poste face au profil. Adopte un Job ne refait pas ce calcul : il le rend lisible. Le détail du calcul est dans l'article de Jo-Michel :
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 : « Adéquation faible · 2 % ») :
- une jauge : la part des compétences du poste couvertes par le profil, pondérées par leur importance ;
- quatre indicateurs : compĂ©tences couvertes (ici 0 sur 26), rang de cette offre parmi toutes celles analysĂ©es (ici « 20e sur 25 »), savoir-ĂȘtre Ă montrer en entretien, prĂ©requis Ă vĂ©rifier ;
- une barre par compétence, 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 « PÚse 4,6 points dans le score »). Les compétences à travailler suivent, de celle qui pÚse le plus dans le score à celle qui pÚse le moins.
C'est ce qui rend le score explicable : on voit pourquoi ce poste et ce profil se rencontrent, et oĂč ils ne se rencontrent pas.
Les prĂ©requis (diplĂŽme, permisâŠ) sont montrĂ©s Ă part et ne sont jamais notĂ©s : chacun porte un statut (rempli, Ă vĂ©rifier, pas encoreâŠ), avec la raison donnĂ©e par CV-Matching.
Et surtout, l'adĂ©quation est une indication, pas un filtre : toutes les offres restent dans la liste, une adĂ©quation faible ne cache rien et n'empĂȘche pas de candidater.
4ïžâŁ Je prĂ©pare ma candidature
Le tableau de bord dit déjà quoi mettre en avant et quoi préparer pour l'entretien. Pour aller plus loin, la lettre de candidature, le CV recentré sur le poste et le guide d'entretien sont produits par CV Generator (Anthony et Kim), à partir du profil du candidat et du numéro de l'AVP :
5ïžâŁ Je candidate, et je suis la rĂ©ponse
Glisser une carte à droite crée une vraie candidature. Elle arrive dans AVPRO-NC, l'espace des recruteurs, et le candidat suit la décision dans l'onglet Candidatures : en attente, retenue, non retenue, ou entretien à programmer.
Et parce qu'un AVP dit Ă qui Ă©crire, chaque offre propose aussi le contact de l'avis, avec un mail prĂȘt Ă partir : bon destinataire, objet « Candidature â intitulĂ© du poste (rĂ©fĂ©rence) ». La candidature peut sortir de l'application sans dĂ©pendre d'elle.
đ ïž Sous le capot
Pour les développeurs.
- React 19 + TypeScript strict + Vite. 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.
- Elle ne garde rien : 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. Une seule source de vérité, aucune donnée personnelle dupliquée dans un coin.
- Le relais 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 sans Ă©tat et ne laisse passer que les adresses dont l'application a besoin, chacune avec sa seule mĂ©thode.
- Pour CV-Matching, le relais ajoute la clé du service cÎté serveur : elle n'est ni dans le dépÎt, ni dans le code envoyé au navigateur, et le jeton de connexion du candidat n'est jamais transmis au service de matching.
-
Des standards ouverts plutĂŽt que des formats maison :
- les AVP au format
schema.org/JobPosting; - le JSON Resume pour le profil ;
- le référentiel des métiers de l'OPT-NC (84 métiers, 409 compétences), repris de sa publication officielle ;
- les codes ROME (le répertoire national des métiers de France Travail), affichés dans le détail de chaque offre qui en porte un.
- les AVP au format
-
Un seul fichier parle aux serveurs (
api.ts) : il traduit leurs réponses dans les formes que les écrans connaissent. Les écrans ne savent rien des serveurs.
⿠Accessibilité
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 :
- tout le parcours de défilement se pilote au clavier, et les boutons sont nommés pour les lecteurs d'écran ;
- les animations s'arrĂȘtent quand le systĂšme demande moins de mouvement ;
- mobile d'abord : tout se fait au pouce, recherche et filtres compris ;
- mode jour et mode nuit au choix, mémorisés ;
- un langage clair, qui tutoie : « 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.
â»ïž RĂ©utiliser Adopte un Job ailleurs
Si Adopte un Job peut servir ailleurs, c'est grùce à l'OPT-NC : en publiant ses offres ouvertes, au format standard schema.org/JobPosting, et son référentiel des métiers, il a rendu possible une application que d'autres peuvent reprendre.
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 :
- l'adresse de son serveur d'offres, dans le relais ;
- la lecture de ses offres, dans
api.ts; - son référentiel des métiers ;
- les quelques libellés qui nomment l'OPT-NC.
Le dĂ©filement, le profil, l'adĂ©quation et les candidatures restent les mĂȘmes.
Le dépÎt contient aussi la démo de départ (demo/), en HTML, CSS et JavaScript, sans framework ni étape de build, qui s'ouvre sans compte ni serveur sur des offres fictives.
đ DonnĂ©es personnelles
- Les démonstrations, la vidéo et les visuels utilisent un profil fictif.
- L'application n'enregistre aucun CV de son cÎté.
- Le nom, l'e-mail, le tĂ©lĂ©phone et l'adresse 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.
- 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.
đ Et ensuite ?
Ce que je ferais avec un peu plus de temps :
- Trier le deck par adéquation, en option : les offres qui te correspondent le plus d'abord, sans en cacher aucune.
- Prévenir quand un nouvel avis arrive dans tes métiers ou tes zones : les AVP de l'OPT-NC arrivent au fil de l'eau.
- Une session qui se renouvelle : aujourd'hui, la connexion dure une heure.
- Supprimer le relais PHP dĂšs que le serveur commun autorisera les appels directs depuis le navigateur : l'application deviendrait 100 % statique.
- Ouvrir le dépÎt de CV à d'autres formats (Word notamment) : la lecture est déjà confiée à CVForge, il reste à laisser ces fichiers passer par le serveur commun.
- Un audit d'accessibilité complet (RGAA), avec des utilisateurs de lecteurs d'écran.
-
Brancher une deuxiĂšme administration qui publie ses offres en
schema.org/JobPosting, pour prouver la réutilisation en vrai.
đ Pour finir
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.
Et toi ? 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.
Bastian â Adopte un Job (MS3), #HackAVP, Master MIAGE.


















