Documentation

Utiliser votre propre clé d'IA

Connectez Claude, ChatGPT, Gemini, DeepSeek, Groq ou Ollama en local à Resume Matcher avec votre propre clé d'API, ou utilisez votre forfait ChatGPT ou Claude.

Pourquoi apporter votre propre modèle

Resume Matcher n’inclut aucun modèle d’IA. C’est vous qui en connectez un : un fournisseur cloud dont vous avez déjà une clé, un modèle gratuit qui tourne sur votre propre matériel, ou un forfait ChatGPT ou Claude que vous payez déjà. Vous choisissez le fournisseur et le modèle, et avec eux le coût et la destination du texte de votre CV.

Fournisseurs pris en charge

Fournisseur Type Modèle par défaut dans les Paramètres
OpenAI Cloud gpt-5-nano-2025-08-07
Anthropic (Claude) Cloud claude-haiku-4-5-20251001
Google Gemini Cloud gemini-3-flash-preview
DeepSeek Cloud deepseek-chat
OpenRouter Cloud deepseek/deepseek-chat
Groq Cloud llama-3.3-70b-versatile
Azure AI Foundry Cloud mistral-large-latest
Ollama Local gemma3:4b
Serveur compatible OpenAI (llama.cpp, vLLM, LM Studio) Local Valeur provisoire custom-model sur http://localhost:8080/v1 ; remplacez les deux par les valeurs de votre serveur
Forfait ChatGPT (Sign in with ChatGPT) Votre forfait ChatGPT Choisi parmi les modèles de votre compte après connexion
Forfait Claude (via Claude Code) Votre forfait Claude Le modèle par défaut de Claude Code

Le modèle par défaut n’est qu’un point de départ. Le champ du modèle est libre : vous pouvez saisir n’importe quel nom de modèle proposé par votre fournisseur. Les deux options de forfait ne demandent pas de clé d’API et comportent des réserves ; voir l’option C.

Option A : la page Paramètres

  1. Ouvrez http://localhost:3000/settings.
  2. Choisissez votre fournisseur.
  3. Collez votre clé d’API. Pour Ollama ou un serveur compatible OpenAI, saisissez plutôt l’URL du serveur. Pour un forfait ChatGPT ou Claude, voir l’option C.
  4. Changez le nom du modèle si vous en voulez un autre.
  5. Pour passer par un proxy ou un point d’accès agrégateur, renseignez URL de base. Laissez-la vide pour utiliser celle du fournisseur.
  6. Cliquez sur Enregistrer, puis sur Tester la connexion.

Page Paramètres de Resume Matcher : un bandeau sponsors et Discord, des tuiles d’état du système, les onze boutons de fournisseurs avec OpenAI sélectionné (dont Claude Plan et ChatGPT Plan), et les champs modèle, clé d’API, URL de base et effort de raisonnement au-dessus des boutons Enregistrer et Tester la connexion

Tester la connexion envoie le seul mot « Hi » à votre fournisseur et indique s’il a répondu. Le panneau État du système, en haut de la page, montre si le LLM fonctionne et si la base de données est connectée. Les réglages enregistrés ici ont priorité sur les variables d’environnement.

Chaque fournisseur garde sa propre clé enregistrée : changer de fournisseur n’efface donc pas l’autre.

Effort de raisonnement. Ce réglage ne concerne que les modèles capables de raisonnement (famille gpt-5, Claude 3.7+, DeepSeek R1, OpenAI o1/o3). Automatique n’envoie rien et reste le choix le plus compatible.

Option B : les variables d’environnement

Quatre variables configurent le backend :

Variable Ce qu’elle définit
LLM_PROVIDER L’une des valeurs openai, anthropic, gemini, deepseek, openrouter, groq, azure_foundry, ollama, openai_compatible, chatgpt, claude_cli
LLM_MODEL Le nom du modèle
LLM_API_KEY Votre clé de fournisseur
LLM_API_BASE L’URL du serveur, pour Ollama et les serveurs compatibles OpenAI

Pour une installation locale, placez-les dans apps/backend/.env. Avec Docker, passez-les comme variables d’environnement du conteneur. L’image Docker lit aussi les secrets Docker : ajoutez _FILE à l’une des quatre variables pour charger sa valeur depuis un fichier, par exemple LLM_API_KEY_FILE=/run/secrets/llm_api_key.

Anthropic, installation locale (apps/backend/.env) :

LLM_PROVIDER=anthropic
LLM_MODEL=claude-haiku-4-5-20251001
LLM_API_KEY=your-api-key

OpenAI, installation locale (apps/backend/.env) :

LLM_PROVIDER=openai
LLM_MODEL=gpt-5-nano-2025-08-07
LLM_API_KEY=your-api-key

Ollama sur la machine hôte, Resume Matcher dans Docker :

docker run --name resume-matcher -p 3000:3000 \
  -v resume-data:/app/backend/data \
  -e LLM_PROVIDER=ollama \
  -e LLM_MODEL=gemma3:4b \
  -e LLM_API_BASE=http://host.docker.internal:11434 \
  ghcr.io/srbhr/resume-matcher:latest

Option C : votre forfait ChatGPT ou Claude

Si vous payez déjà ChatGPT ou Claude, Resume Matcher peut utiliser ce forfait à la place d’une clé d’API. Les deux options ont été développées par la communauté, et aucune n’offre d’accès garanti : pour un accès garanti, utilisez une clé d’API d’OpenAI ou d’Anthropic.

Forfait ChatGPT

Forfait ChatGPT sélectionné dans les Paramètres : non connecté, un bouton Continuer avec ChatGPT, le champ du modèle et un avertissement « Preview » sur Sign in with ChatGPT, les limites du forfait et le fait que l’option vient de la communauté, au-dessus d’un bouton Enregistrer désactivé

Cette option utilise Sign in with ChatGPT, le mécanisme officiel d’OpenAI pour les applications open source. Elle fonctionne avec ChatGPT Plus et Pro.

  1. Lancez Resume Matcher, puis ouvrez les Paramètres dans un navigateur sur la même machine, à l’adresse http://localhost:3000.
  2. Choisissez Forfait ChatGPT et cliquez sur Continuer avec ChatGPT.
  3. Connectez-vous chez OpenAI et autorisez Resume Matcher à utiliser votre forfait.
  4. De retour dans les Paramètres, choisissez l’un des modèles de votre compte et cliquez sur Enregistrer.

Avant de compter dessus :

  • C’est une préversion. Sign in with ChatGPT pour les applications open source est une préversion d’OpenAI et peut changer.
  • Les requêtes vont directement chez OpenAI. Elles partent de votre machine vers l’API d’OpenAI, et les jetons de connexion sont stockés chiffrés sur votre machine.
  • Cela compte dans les limites de votre forfait ChatGPT. Avec Plus, la limite sur cinq heures est partagée avec vos autres applications qui utilisent votre forfait. Pro n’a pas de limite sur cinq heures.
  • Connectez-vous sur la même machine. OpenAI ne renvoie le navigateur que vers 127.0.0.1 : la connexion doit donc se faire dans un navigateur de la machine qui fait tourner Resume Matcher. Cela fonctionne avec la configuration Docker par défaut, ouverte sur http://localhost:3000, mais pas depuis un autre ordinateur ni via le domaine d’un proxy inverse.

Déconnecter met fin à la session et supprime les jetons ; Gérer l’utilisation ouvre vos réglages d’utilisation ChatGPT. Avec les variables d’environnement, définissez LLM_PROVIDER=chatgpt et LLM_MODEL sur un modèle de votre compte ; la connexion se fait quand même depuis les Paramètres.

Forfait Claude (via Claude Code)

Forfait Claude sélectionné dans les Paramètres : une note indiquant qu’il exécute le CLI Claude Code connecté sur cette machine, et un avertissement « Not officially supported » sur la politique d’Anthropic, les identifiants et les limites d’utilisation

Cette option exécute votre propre CLI Claude Code, installé sur la même machine, auquel vous vous connectez vous-même :

claude auth login

Choisissez ensuite Forfait Claude dans les Paramètres et cliquez sur Enregistrer. Avec les variables d’environnement, définissez LLM_PROVIDER=claude_cli ; LLM_MODEL n’est pas utilisé.

Avant de compter dessus :

  • Ce n’est pas officiellement pris en charge. Anthropic ne prend pas officiellement en charge les applications tierces qui utilisent les abonnements Claude Pro ou Max : cela peut donc cesser de fonctionner si la politique d’Anthropic change.
  • Resume Matcher ne voit jamais vos identifiants Claude. Il exécute le CLI auquel vous êtes connecté et ne stocke rien de votre compte Claude.
  • Vos prompts partent quand même chez Anthropic. Claude Code les envoie via votre compte, avec son propre modèle par défaut.
  • Cela compte dans les limites d’utilisation de votre forfait Claude, et Anthropic peut aussi les décompter de vos crédits d’utilisation.
  • Il faut une installation locale. Le CLI Claude Code n’est pas dans l’image Docker : cette option ne fonctionne donc pas avec Docker.

Resume Matcher vit grâce aux dons.

Plus de 200 000 personnes en recherche d'emploi l'ont utilisé, gratuitement, sans publicité ni accès payant. S'il vous a fait gagner du temps ou aidé à décrocher un entretien, un parrainage ou un café offert permet que cela continue.

Modèles locaux

Ollama. Installez-le depuis ollama.com, téléchargez un modèle, puis choisissez Ollama dans les Paramètres :

ollama pull gemma3:4b

L’URL par défaut est http://localhost:11434. Depuis Docker, utilisez http://host.docker.internal:11434. Sous Linux, utilisez l’adresse IP de l’hôte ou lancez le conteneur avec --network=host.

Serveurs compatibles OpenAI. llama.cpp, vLLM, LM Studio et tout autre serveur qui parle l’API Chat Completions d’OpenAI fonctionnent via le fournisseur openai_compatible. Réglez LLM_API_BASE sur l’URL du serveur et LLM_MODEL sur le modèle qu’il sert.

Modèles lents. Chaque requête d’IA s’exécute avec un délai unique, REQUEST_TIMEOUT_SECONDS (240 par défaut, entre 30 et 1800). Un gros modèle sur du matériel modeste peut le dépasser. Augmentez REQUEST_TIMEOUT_SECONDS dans l’environnement du backend et NEXT_PUBLIC_REQUEST_TIMEOUT_MS dans celui du frontend (voir apps/frontend/.env.sample). Le frontend lit sa valeur au moment de la compilation : l’image Docker précompilée reste donc à 240 secondes. Pour l’augmenter, compilez l’image vous-même avec NEXT_PUBLIC_REQUEST_TIMEOUT_MS défini.

Clés et serveurs locaux. Le backend n’envoie jamais LLM_API_KEY à Ollama ni à un serveur compatible OpenAI : une clé cloud payante présente dans votre .env ne peut donc pas fuiter vers un serveur local.

Petits modèles. Les notes de conception du projet préviennent que les petits modèles ont du mal avec le format d’édition structuré qu’utilise l’étape de personnalisation.

Pour le guide complet avec Docker, consultez Docker + Ollama (en anglais).

Où est stockée votre clé

Les clés enregistrées dans les Paramètres vont dans la base SQLite locale, chiffrées avec Fernet. La clé de chiffrement se trouve dans .secret_key dans le dossier de données (apps/backend/data/ pour une installation locale, sinon le volume Docker), créé avec les droits 0600 pour que seul votre compte utilisateur puisse le lire. Le backend retire les clés avant d’écrire config.json dans le même dossier : le fichier de réglages n’en contient donc jamais.

Pour supprimer toutes les clés enregistrées, utilisez Effacer les clés API dans la zone dangereuse de la page Paramètres. C’est irréversible.

Les jetons de connexion du forfait ChatGPT sont chiffrés avec la même clé, dans chatgpt_credentials.enc dans le dossier de données. Le forfait Claude ne stocke rien : vos identifiants Claude restent chez Claude Code.

LOG_LLM=DEBUG écrit les clés en clair dans les journaux. Ne l’activez pas sur une machine partagée.

Ce qui est envoyé à votre fournisseur

L’application n’envoie rien aux auteurs de Resume Matcher et ne contient aucune télémétrie. Le texte de votre CV, y compris votre nom et vos coordonnées, et la fiche de poste vont au fournisseur que vous avez choisi et à personne d’autre : OpenAI pour le forfait ChatGPT, Anthropic via Claude Code pour le forfait Claude. Aucune étape d’anonymisation n’a lieu avant l’envoi. Avec un modèle local, rien ne quitte votre machine.

Fonctionnalité Envoyé au fournisseur
Import du CV (analyse) Le texte complet 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 JSON complet du CV
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
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 caractères)
Notation des puces Le texte des puces, la fiche de poste et les mots-clés extraits
Enrichissement, régénération, Assistant CV Le CV ou l’élément, plus vos réponses et vos consignes
Tester la connexion Le mot « Hi »

Vos autres clés d’API, le fichier de base de données, le tableau de suivi, les réglages et les PDF restent en local. Le seul autre appel réseau est celui de la bibliothèque d’IA (LiteLLM), qui récupère au démarrage une liste publique des prix des modèles ; il ne contient aucune de vos données et utilise une copie intégrée hors ligne.

Coût

Resume Matcher est gratuit et open source. Un fournisseur cloud facture votre propre compte, à ses propres tarifs, pour chaque requête de l’application. L’application ne suit pas ces dépenses : consultez le tableau de bord de votre fournisseur. Avec le forfait ChatGPT ou Claude, les requêtes comptent plutôt dans les limites de votre forfait. Un modèle local ne coûte rien par requête.

Dépannage

Tester la connexion échoue

Vérifiez la clé d’API, ou l’URL du serveur pour Ollama et les serveurs compatibles OpenAI. Enregistrez, puis testez à nouveau.

« Claude Code CLI not found »

Installez Claude Code sur la machine qui fait tourner le backend et lancez claude auth login. Il n’est pas disponible dans l’image Docker.

« Not signed in with ChatGPT » ou « isn’t available for this account »

Choisissez Forfait ChatGPT dans les Paramètres et cliquez sur Continuer avec ChatGPT dans un navigateur de la même machine. Cette option demande ChatGPT Plus ou Pro ; sinon, utilisez une clé d’API OpenAI.

Docker n’arrive pas à joindre Ollama

Utilisez http://host.docker.internal:11434 comme URL d’Ollama, et non localhost. Sous Linux, utilisez l’adresse IP de l’hôte ou lancez le conteneur avec --network=host.

Délais dépassés avec un modèle local

Augmentez REQUEST_TIMEOUT_SECONDS (jusqu’à 1800) dans le backend et NEXT_PUBLIC_REQUEST_TIMEOUT_MS dans le frontend. Avec l’image Docker précompilée, la valeur du frontend est fixée à la compilation ; voir Modèles lents plus haut.

Une modification du .env n’a aucun effet

Les réglages enregistrés dans l’interface ont priorité sur les variables d’environnement. Ouvrez les Paramètres et modifiez la valeur là.

Étapes suivantes