Aller au contenu
Mathis Beauville

Tous les travaux-

Fitex

Adapter un CV à chaque offre, sans jamais lui faire mentir

Contexte
Produit personnel
Rôle
Tout : conception, développement, infrastructure, produit
Période
Hiver 2025 à juillet 2026
Stack
Next.js, NestJS, PostgreSQL, Stripe, WXT, OpenAI
En ligne
fitex.obstinate.fr
Page d’accueil de Fitex : « Décrochez plus d’entretiens. Arrêtez d’être ignoré. »

D’un outil pour moi…

Fin 2025, je cherchais une mission. Adapter son CV à chaque offre, c’est la bonne pratique, et c’est long. J’ai écrit un outil qui le faisait pour moi.

En deux semaines environ : une quinzaine de candidatures, quatre ou cinq entretiens, et la mission sur laquelle je suis aujourd’hui.

…à un produit pour les autres

En mars 2026, j’ai commencé à en faire un produit : une extension qui récupère l’offre sur la page où on la lit, une plateforme web, des crédits payants.

Un outil qui marche pour moi et un produit à qui des inconnus confient leur CV et leur carte bancaire, ce n’est pas le même travail.

Ce qui rendait le sujet délicat

  • Une IA qui adapte un CV a tendance à l’embellir. Sur les offres pleines de détails techniques, elle reprenait des technologies de l’annonce et les glissait dans le CV. Un CV qui ment est pire qu’un CV générique.
  • Un CV doit tenir sur une page, quoi que l’IA ait réécrit.
  • Le CV reste le document LaTeX de l’utilisateur, compilé sur mon serveur. Compiler le code de quelqu’un d’autre, c’est lui ouvrir une porte.
  • Des paiements : un crédit ne doit pas disparaître quand une génération échoue.

Décisions

  1. Offre sélectionnée
    dans l’extension
  2. Crédits réservés
  3. Adaptation par le modèle
    tests anti-invention
  4. Compilation LaTeX
    isolée
  5. Mesure de la page
    raccourcir ou étoffer
  6. PDF d’une page
Une génération, de l’offre au PDF. La progression de chaque étape s’affiche en direct dans l’extension.

Mesurer l’invention plutôt que l’espérer

J’ai monté un banc d’évaluation : vingt CV, dont huit pièges, des vérifications automatiques et un modèle qui juge le résultat. Le prompt impose des tests explicites à chaque modification, par exemple un terme absent du CV d’origine, ou un rôle dont le périmètre grossit.

Chaque changement important du prompt passe par le banc avant d’aller en production.

Une page, vérifiée à la compilation

Le modèle tenait mal la consigne « une page ». Plutôt que d’insister, le serveur mesure le remplissage réel à la compilation.

Trop long : le CV est raccourci de façon déterministe, jusqu’à ce qu’il tienne. Rempli à moins de 40 % : il est étoffé.

Compiler le LaTeX des autres sans leur ouvrir le serveur

Chaque compilation tourne sans accès au shell, limitée à 1 Go de mémoire et 60 secondes, trois à la fois au maximum. Les commandes LaTeX dangereuses sont refusées avant même de compiler.

Des crédits réservés, pas débités

Les crédits sont réservés au lancement d’une génération, en une seule opération sur la base, et rendus si elle échoue ou si l’utilisateur annule.

Trois modèles branchés, un seul en production

Anthropic, OpenAI et Gemini sont appelés directement, sans SDK, avec le coût de chaque appel enregistré. Ça m’a permis de les comparer sur le banc d’évaluation. En production, c’est GPT.

Une extension qui ne dépend d’aucun site

Pas de script par site d’emploi : chacun casserait au premier changement de page, et il faudrait tous les maintenir. On clique sur le texte de l’offre pour le sélectionner, n’importe où, ou on le colle. La génération affiche sa progression étape par étape.

Démonstration de l’extension Fitex : deux blocs de l’offre sélectionnés dans la page, et le panneau de l’extension qui affiche la génération en cours, étape par étape.
La démonstration de l’extension sur le site de Fitex : l’offre se sélectionne dans la page, la génération avance étape par étape.

Résultat

score « aucune invention » sur le banc d’évaluation, sur 10
2,7 → 10
score « aucune invention » sur le banc d’évaluation, sur 10
note globale sur le même banc, sur 10
5,6 → 8,4
note globale sur le même banc, sur 10
une quinzaine de candidatures, quatre ou cinq entretiens, une mission
2 semaines
une quinzaine de candidatures, quatre ou cinq entretiens, une mission

En ligne, en français et en anglais, avec export et suppression des données (RGPD). L’extension n’est pas encore publiée sur le Chrome Web Store.

Accueilg h
E.Leclerc (SIPLEC)
EssilorLuxottica
Fitex
Salon
Contactg c
Voir le CV
Copier l’adresse e-mail[email protected]y
Réserver un appel de 30 minutes
Changer de thèmet
Read this page in English
Afficher les raccourcis?
GitHubObstinateM
LinkedIn
Vesper++VS Code Marketplace

Raccourcis clavier

Se déplacer

jk
Élément suivant, précédent
Entrée
Ouvrir l’élément sélectionné
hl
Projet précédent, suivant
-
Remonter d’un niveau
g gG
Haut, bas de la page
g h
Accueil
g c
Contact

Agir

⌘ K/
Palette de commandes
y
Copier l’adresse e-mail
t
Changer de thème
?
Afficher cette aide