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

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
- Offre sélectionnéedans l’extension
- Crédits réservés
- Adaptation par le modèletests anti-invention
- Compilation LaTeXisolée
- Mesure de la pageraccourcir ou étoffer
- PDF d’une page
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.

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.
Fitex