Personnaliser son CV avec une IA privée : en local avec Ollama
Personnaliser votre CV avec un modèle local, en toute confidentialité : ce que reçoivent les fournisseurs cloud, comment choisir un modèle Ollama, et les compromis de vitesse, de qualité et de délais.
Chaque fois que vous demandez à un modèle d’IA de personnaliser votre CV, il lit le document en entier : votre nom, votre numéro de téléphone, votre e-mail, chaque employeur et chaque date, et tout ce que vous gardez d’autre dans le fichier. Avec un fournisseur cloud, ce texte quitte votre machine. Personnaliser son CV avec une IA privée, c’est faire tourner le modèle sur votre propre matériel, pour que le CV et la fiche de poste n’en sortent jamais. Cet article explique pourquoi vous pourriez le vouloir, ce que reçoit un fournisseur cloud quand vous ne le faites pas, comment choisir un modèle local avec Ollama, et les compromis de vitesse, de qualité et de délais.
Les étapes d’installation se trouvent dans la documentation. Consultez l’installation d’Ollama (en anglais) pour le parcours Docker et Utiliser votre propre clé d’IA pour la page Paramètres et les variables d’environnement. Cet article traite du pourquoi et du quoi.
Pourquoi garder votre CV en local
Un CV fait partie des documents les plus personnels que vous possédez. Il contient votre nom complet, un numéro de téléphone, un e-mail, votre ville et un récit daté des endroits où vous avez travaillé. Si vous tenez un CV principal, il peut aussi contenir des choses que vous ne mettriez jamais dans une version personnalisée : des notes sur les raisons d’un départ, un montant de salaire tiré d’une offre, le nom d’un manager. Collez cela dans une fenêtre de chat, et vous l’avez envoyé à une entreprise dont vous n’avez peut-être pas lu les conditions de traitement des données.
Trois groupes ont une raison concrète de s’en soucier.
Les personnes tenues à la confidentialité. Si le nom de votre employeur actuel, des noms de code de projets ou une liste de clients apparaissent dans vos puces, votre CV contient des informations qu’un contrat peut vous obliger à protéger.
Les personnes qui cherchent discrètement. Vous ne voulez pas qu’une trace de « personnaliser mon CV pour un poste chez un concurrent » existe ailleurs que sur votre propre disque.
Les personnes qui lisent les politiques des fournisseurs. Les conditions diffèrent selon le fournisseur et l’offre. La page d’Anthropic sur ses produits commerciaux, par exemple, indique que les entrées et sorties de son API et de ses produits professionnels ne servent pas à l’entraînement par défaut, sauf pour les retours que vous soumettez (Anthropic privacy centre, daté d’août 2026 ; ses offres grand public sont traitées sur une autre page). Les autres fournisseurs publient leurs propres conditions. Si vous préférez ne pas dépendre d’une lecture juste de ces textes, un modèle local supprime la question. Pour les lecteurs dans l’UE, un modèle local évite aussi toute question de transfert de données hors de l’Union.
Ce que reçoit un fournisseur cloud
Resume Matcher est un outil (un « harness ») : il envoie des prompts au modèle que vous connectez et applique des vérifications de code au résultat. Il n’anonymise rien avant l’envoi. Le tableau ci-dessous, tiré du code du projet, liste ce que chaque fonctionnalité envoie au fournisseur choisi.
| Fonctionnalité | Envoyé au fournisseur |
|---|---|
| Import du CV (analyse) | Le texte complet extrait du CV, y compris nom, e-mail, téléphone et liens |
| Analyse de la fiche de poste, titre du CV | La fiche de poste |
| Personnalisation (plan de compétences, modifications ciblées) | La fiche de poste et le CV complet en JSON structuré, informations personnelles comprises |
| Passe sur les mots-clés après personnalisation | Le JSON du CV personnalisé et du CV principal, plus les 2 000 premiers caractères de la fiche de poste |
| Notation des puces | Le texte des puces, la fiche de poste et les mots-clés extraits |
| Lettre de motivation, message de contact | Le JSON complet du CV et la fiche de poste |
| Préparation à l’entretien | Le JSON du CV (jusqu’à 30 000 caractères) et la fiche de poste (jusqu’à 12 000) |
| Enrichissement, régénération, Assistant CV | Le CV ou un élément, plus vos réponses et vos consignes |
| Tester la connexion | Le mot « Hi » |
Rien ne va aux auteurs de Resume Matcher ; l’application ne contient aucun code d’analyse. Vos clés d’API pour d’autres fournisseurs, la base de données, le tableau de suivi, les réglages et les PDF produits restent sur le disque. La seule autre requête sortante est celle de la bibliothèque d’IA (LiteLLM), qui récupère au démarrage une liste publique des prix des modèles ; elle ne contient aucune de vos données et se rabat sur une copie intégrée hors ligne.
Coller à la main dans ChatGPT ou Claude envoie la même chose, avec moins de structure. Tout flux dans lequel un modèle cloud lit votre CV envoie votre CV dans ce cloud.
À quoi ressemble la personnalisation de CV avec une IA privée
Pointez le même outil vers un modèle qui tourne sur votre machine, et chaque ligne de ce tableau reste locale. Le modèle lit le CV, propose des modifications, le code les vérifie, et aucune requête réseau n’emporte le texte ailleurs.
Dans Resume Matcher, cela veut dire choisir l’un de ces deux fournisseurs dans les Paramètres :
- Ollama, un outil gratuit qui télécharge des modèles ouverts et les sert sur
http://localhost:11434. - Tout serveur compatible OpenAI : llama.cpp, vLLM, LM Studio, ou tout autre serveur qui parle l’API Chat Completions d’OpenAI.
Quatre précisions nuancent le mot « privé ».
L’installation demande Internet ; l’usage, non. Vous téléchargez une fois l’application, ses dépendances, le navigateur qu’elle utilise pour l’export PDF, et les poids du modèle. Ensuite, la personnalisation fonctionne hors ligne. La récupération de la liste de prix de LiteLLM au démarrage se rabat sur une copie intégrée hors ligne.
Vos données tiennent dans un dossier. Les CV, fiches de poste, versions personnalisées et le tableau de suivi vivent dans un fichier SQLite du dossier de données de l’application, ou dans un volume Docker. Les réglages sont dans un petit fichier de configuration à côté. Les clés d’API, si vous en avez enregistré, sont chiffrées avec un fichier de clé lisible par votre seul compte utilisateur. Le contenu du CV lui-même est stocké en clair dans ce fichier SQLite : le dossier est donc aussi privé que le disque qui le contient ; un ordinateur portable avec chiffrement complet du disque couvre ce point.
Aucune analyse dans l’application. Le code ne contient aucun SDK de suivi. L’image Docker désactive aussi la télémétrie propre au framework Next.js ; si vous lancez le frontend depuis le code source avec npm run dev, ce réglage du framework est à votre charge.
Un serveur local ne reçoit jamais votre clé cloud. Si vous gardez la clé d’un fournisseur payant dans votre environnement et passez à Ollama, le backend ne transmet pas cette clé au serveur local : changer de fournisseur ne peut donc pas la faire fuiter.
Choisir un modèle local
Ollama est la voie la plus simple. Il récupère les modèles par leur nom et les sert sur un port local. La page Paramètres de Resume Matcher suggère gemma3:4b comme modèle Ollama par défaut, et le guide d’installation du projet cite llama3.2 et mistral comme autres options. N’importe quel modèle servi par Ollama peut être saisi dans le champ du modèle.
Commencez par le modèle par défaut. gemma3:4b est le point de départ suggéré par le projet, un téléchargement de 3,4 Go en octobre 2026 selon la page du modèle sur Ollama. C’est un petit modèle : lisez le paragraphe sur les modifications structurées ci-dessous pour savoir à quoi vous attendre.
Montez en taille si votre matériel le permet. La même page indique gemma3:12b à 8,2 Go et gemma3:27b à 17 Go. Ce sont des tailles de téléchargement, et la mémoire nécessaire à l’exécution est un autre chiffre, qui dépend de la quantification et de la longueur du contexte. La documentation de Resume Matcher n’indique pas de besoin en RAM, et je ne vais pas en inventer un. La FAQ d’Ollama explique comment vérifier si un modèle est chargé sur votre GPU, en mémoire système ou dans un mélange des deux, ce qui est le moyen le plus rapide de savoir si une taille donnée convient à votre machine.
Attendez-vous à ce que les petits modèles peinent avec les modifications structurées. C’est le problème connu. Resume Matcher ne demande pas au modèle un CV entièrement nouveau. Il lui demande une liste de modifications ciblées dans un format strict, chacune citant le texte d’origine pour que le code puisse la vérifier avant de l’appliquer. Les notes de conception du projet indiquent que les petits modèles ont du mal avec ce format : ils renvoient une sortie mal formée, citent un texte qui ne correspond pas, ou sautent la structure. Le code réessaie un nombre limité de fois ; si les essais échouent, vous obtenez une erreur, et vous pouvez régénérer ou passer à un modèle plus grand. Un modèle faible vous coûte du temps, et les garde-fous tiennent quel que soit le modèle : noms, employeurs, intitulés, dates et diplômes verrouillés, et nouveaux chiffres annulés.
Deux choses que fait l’outil pour aider les modèles locaux :
- Le mode JSON est toujours activé pour Ollama, avec un repli sur les seules consignes du prompt si le serveur le refuse, pour pousser le modèle vers une structure valide.
- Les traces de raisonnement sont supprimées. Certains modèles de raisonnement émettent un bloc
<think>avant leur réponse. Le code retire ces blocs avant l’analyse, pour qu’un modèle « qui réfléchit » ne casse pas le format des modifications.
Si le modèle par défaut vous donne des aperçus mal formés sur votre CV, essayez un modèle de taille moyenne avant d’accuser le prompt.
Les compromis : vitesse, qualité, délais
La vitesse. Un modèle cloud répond à une demande de personnalisation en quelques secondes. Un modèle local sur le processeur d’un ordinateur portable peut mettre plusieurs minutes pour le même prompt, et la personnalisation appelle le modèle plusieurs fois par exécution : extraction des mots-clés de l’offre, notation de la pertinence des puces, plan de compétences, liste des modifications, et une passe sur les mots-clés ensuite. Chaque appel attend le précédent. Un modèle cinq fois plus lent par appel rend toute l’exécution cinq fois plus lente.
La qualité. Les grands modèles reformulent avec plus d’aisance, restent plus près du vocabulaire de l’offre et produisent moins de modifications cassées. Les petits ont une formulation plus raide et davantage de modifications rejetées. Les vérifications du code garantissent le même plancher aux deux : un petit modèle ne peut pas plus inventer un chiffre ou changer vos dates qu’un grand, parce que ces modifications sont bloquées avant de vous parvenir. C’est le plafond qui diffère.
Les délais. Chaque requête d’IA de Resume Matcher s’exécute avec un délai unique, REQUEST_TIMEOUT_SECONDS, de 240 secondes par défaut, qui accepte des valeurs de 30 à 1 800. Ce délai couvre toute l’exécution de la personnalisation, tous ses appels au modèle compris. Les fournisseurs locaux bénéficient d’un facteur de délai doublé, mais un gros modèle sur du matériel modeste peut encore le dépasser. Si vous voyez des dépassements, augmentez REQUEST_TIMEOUT_SECONDS dans l’environnement du backend et, en cohérence, NEXT_PUBLIC_REQUEST_TIMEOUT_MS dans celui du frontend ; la page Utiliser votre propre clé d’IA liste les deux.
Le coût. Zéro par requête avec un modèle local, contre un tarif par appel chez un fournisseur cloud. Sur une recherche d’emploi de quarante candidatures, chacune avec un CV personnalisé, une lettre de motivation et une préparation à l’entretien, la différence représente une vraie somme pour certains et de la menue monnaie pour d’autres. L’argument de la confidentialité tient tout seul dans les deux cas.
Comment tout s’articule
Un paragraphe pour s’orienter ; la documentation a les commandes.
Ollama tourne sur votre machine et écoute sur le port 11434. Resume Matcher tourne à côté, depuis le code source ou dans Docker, et sert l’application sur le port 3000. Dans les Paramètres, vous choisissez Ollama comme fournisseur, vous saisissez le nom du modèle téléchargé et vous cliquez sur Tester la connexion, qui envoie le mot « Hi » et indique si le modèle a répondu. Depuis Docker, l’application joint Ollama via http://host.docker.internal:11434 plutôt que localhost, puisque le conteneur a son propre espace de noms réseau. Ensuite, chaque fonctionnalité de l’application (personnalisation, lettres de motivation, préparation à l’entretien, enrichissement) utilise le modèle local, et le navigateur imprime vos PDF sur la même machine.
La page installation d’Ollama (en anglais) contient le guide Docker, et Utiliser votre propre clé d’IA couvre les Paramètres, les variables d’environnement et le dépannage pour l’installation depuis le code source comme pour Docker.
Quand un modèle cloud est le meilleur choix
Le local est un compromis, et pour certains, le cloud l’emporte. Si votre ordinateur est peu puissant, le modèle que vous pouvez faire tourner est petit, et les petits modèles produisent plus souvent des modifications rejetées que des modifications utiles. Si vous postulez cette semaine et que chaque exécution prend quatre minutes, la vitesse compte plus que le trajet des données. Si votre CV ne contient rien que vous seriez gêné de voir lu par un fournisseur, et que vous avez lu ses conditions, l’argument de la confidentialité est théorique pour vous.
Une voie intermédiaire marche aussi. Faites tourner le modèle local pour l’essentiel de vos personnalisations, et changez de fournisseur dans les Paramètres pour la candidature où vous voulez la meilleure prose. L’application garde une clé par fournisseur : changer se fait d’un menu déroulant. Le code des garde-fous ne change pas : quel que soit le modèle connecté, votre nom, vos employeurs, vos intitulés, vos dates et vos diplômes restent verrouillés, et tout chiffre inventé par le modèle est annulé avant que vous ne le voyiez.
Resume Matcher est gratuit, open source sous licence Apache 2.0, et utilisé par plus de 200 000 candidats. Il ne fournit aucun modèle et n’héberge aucun site, et c’est tout le propos de cet article : le modèle est à vous, et les données aussi.
Si cet article vous a aidé
Si faire tourner le modèle sur votre propre machine est la version que vous cherchiez, une étoile sur Resume Matcher sur GitHub aide d’autres candidats à le trouver. Vous pouvez me suivre, Saurabh Rai, sur GitHub, X et LinkedIn.
[Cet article a été rédigé, traduit et mis en forme avec l'aide de l'IA. Les informations sur le produit ont été vérifiées dans le code source de Resume Matcher, et les sources externes sont citées en lien là où elles sont utilisées.]
Cet article vous a été utile ? Ajoutez une étoile à Resume Matcher sur GitHub et suivez le projet