Résumé en une phrase : Vous codez déjà avec Claude Code, alors pourquoi ne pas l’utiliser pour décrocher un job ? Career-Ops transforme la CLI de programmation IA en véritable command center de recrutement — collez une URL de JD, il évalue automatiquement, génère des CV ATS, et suit l’avancement. L’auteur l’utilise pour filtrer 740+ offres, générer 100+ CV personnalisés, puis décrocher finalement une offre de Head of Applied AI.
Présentation du projet
Career-Ops (alias careerops) est un pipeline de recherche d’emploi piloté par l’IA, GitHub : santifer/career-ops, licence MIT. Son positionnement central est le suivant :
Transformer n’importe quelle CLI de programmation IA en un centre de commande complet pour l’emploi.
Ce n’est pas un énième outil « IA qui refait le CV », ni un robot d’« envoi massif ». La philosophie de design de Career-Ops, c’est le moins mais mieux : parmi des centaines d’offres, il vous aide à en extraire celles qui valent vraiment le coup, grâce à une note A-F + 6 dimensions d’évaluation + un PDF optimisé ATS + un suivi 100% automatisé.
Compétences clés (15 slash commands) :
| Cas d’usage | Commande | Description |
|---|---|---|
| Coller une URL de JD | /career-ops | Pipeline automatique (évaluation + rapport + PDF + tracker) |
| Évaluation d’une offre unique | /career-ops evaluate | Note A-F + analyse sur 6 dimensions |
| Comparaison multi-offres | /career-ops compare | Tri de plusieurs offres |
| Scanner des postes | /career-ops scan | 45+ entreprises préconfigurées, exécution via API Ashby/Greenhouse/Lever |
| Évaluation en lot | /career-ops batch | Workers en concurrence claude -p |
| Générer le PDF | /career-ops pdf | CV optimisé ATS (polices Space Grotesk + DM Sans) |
| Export LaTeX | /career-ops latex | .tex compatible Overleaf |
| Suivi des candidatures | /career-ops tracker | Vue d’ensemble des statuts |
| Remplissage de formulaires | /career-ops apply | Remplissage assisté par IA (sans cliquer « Submit ») |
| Recherche approfondie | /career-ops deep | Recherche sur l’entreprise |
| Préparation aux entretiens | /career-ops interview | Histoires STAR+R propres à l’entreprise |
| Ciblage LinkedIn | /career-ops contact | Trouver des personnes + rédiger un message |
| Mode « patterns » | /career-ops patterns | Analyse des refus, optimisation de la stratégie |
| Rythme de relance | /career-ops followup | Calendrier des relances |
| Évaluation cours/projets | /career-ops training / project | Parcours d’amélioration personnelle |
CLI de programmation IA supportées : Claude Code / OpenCode / Gemini CLI / Codex / Qwen / GitHub Copilot / Kimi — du moment que ça suit open agent skill standard.
Support multi-langues : par défaut en anglais, et aussi allemand (modes/de/) / français (modes/fr/) / japonais (modes/ja/) / turc (modes/tr/) / chinois simplifié (README.cn.md) / chinois traditionnel (README.zh-TW.md).
Palmarès : l’auteur santifer l’a utilisé pour évaluer 740+ offres, générer 100+ CV personnalisés, puis décrocher une offre de Head of Applied AI.
Difficulté / Durée / Ce que vous obtenez
- Difficulté : ⭐⭐ (moyenne, il faut savoir utiliser une CLI de programmation IA comme Claude Code)
- Durée : 30–60 minutes pour le premier onboarding (incluant la préparation de cv.md + configuration du profil)
- Ce que vous obtenez :
- Faire fonctionner un pipeline réel et utilisable de candidature IA
- Comprendre la conception d’architecture « User Layer vs System Layer » pour les agents
- Apprendre à faire une recherche d’emploi précise avec la notation A-F + des histoires STAR+R
- Voir comment monter un projet open source de niveau production déjà relayé par WIRED / Business Insider
- En bonus : mettre 15 slash commands dans votre poche, et les utiliser tous les jours pendant vos candidatures
Profil du public visé
- Développeurs en recherche d’emploi / en changement de poste / en veille d’opportunités
- Utilisateurs déjà à l’aise avec Claude Code / OpenCode / Gemini CLI
- Vouloir passer du « envoi massif » au « ciblage précis », sans perdre de temps sur des offres inutiles
- Vouloir savoir à quoi ressemble un projet d’agent IA de niveau production avec 7k+ stars
TIP
Le poste de dépense le plus coûteux pendant la recherche d’emploi, ce sont les tokens. Le mode batch de Career-Ops pour évaluer 10+ offres, c’est vraiment satisfaisant, mais pour évaluer 100 offres avec les API officielles Claude / Anthropic, la facture d’une nuit se situe souvent entre 20 et 40 dollars — et sur un mois, des coûts à quatre chiffres en tokens sont totalement normaux.
Ma manière de faire (partage, pas recommandation) : j’utilise Defapi, avec un protocole compatible Anthropic ; il suffit de changer une seule ligne d’URL Base :
# En supposant que vous utilisez Claude Code, modifiez dans ~/.claude/settings.json ou via une variable d’environnement
ANTHROPIC_BASE_URL=https://api.defapi.org
ANTHROPIC_API_KEY=sk-xxxxx # récupérez la clé dans le back-office defapi.org
Les modèles de Defapi sont globalement compatibles avec les trois protocoles majeurs — v1/chat/completions (OpenAI) / v1/messages (Anthropic) / v1beta/models (Gemini) — aucune modification côté agent, la chaîne reste identique : prompts d’évaluation, histoires STAR, schéma du tracker, tout suit comme avant. Le modèle reste le même, juste le coût d’achat est plus bas : pendant la recherche d’emploi, la facture de tokens coupe directement en deux (voire plus), ce n’est pas du marketing. Le FAQ Q5 reviendra là-dessus.
Dépendances clés et configuration
Configuration minimale :
| Projet | Exigences |
|---|---|
| Node.js | 20+ |
| CLI de programmation IA | au moins en installer une (Claude Code / OpenCode / Gemini CLI / Codex / Qwen / Copilot) |
| Playwright | navigateur Chromium (nécessaire pour générer les PDF) |
| Système d’exploitation | macOS / Linux / Windows (WSL recommandé) |
Optionnel / améliorations :
| Projet | Utilisation |
|---|---|
| Go 1.21+ | lancer un TUI Dashboard |
| Clé API Google AI Studio | exécuter le script indépendant gemini-eval.mjs (quota gratuit) |
| Navigateur Chromium | vérifier que les offres sont encore actives (Playwright l’installe automatiquement) |
| Différentes clés API LLM | compatible via les protocoles Claude / OpenAI / Anthropic |
TIP
Pas besoin d’être abonné à Claude Max. Career-Ops est une approche « pilotée par protocole LLM » : tant que vous avez une API compatible v1/messages ou v1/chat/completions, vous pouvez la brancher (voir la TIP juste après « Profil du public visé »).
Arborescence complète du projet
career-ops/
├── AGENTS.md # Instructions générales pour l’agent (multi-CLI)
├── CLAUDE.md # Spécifique à Claude Code (import AGENTS.md)
├── GEMINI.md # Spécifique à Gemini CLI
├── cv.md # Votre CV (créé par vous-même, fichier clé)
├── article-digest.md # Preuves de vos points forts (optionnel)
├── config/
│ └── profile.example.yml # Modèle de profil personnel
├── modes/ # 15 modes de skill
│ ├── _shared.md # Contexte partagé côté système
│ ├── _profile.template.md # Personnalisation côté utilisateur (mettez votre archetype)
│ ├── oferta.md # Évaluation d’une offre
│ ├── pdf.md # Génération PDF
│ ├── scan.md # Scan des postes
│ ├── batch.md # Traitement en lot
│ ├── auto-pipeline.md # URL → évaluation + PDF + tracker
│ ├── de/ # Mode allemand
│ ├── fr/ # Mode français
│ ├── ja/ # Mode japonais
│ └── tr/ # Mode turc
├── templates/
│ ├── cv-template.html # Modèle CV optimisé ATS
│ ├── cv-template.tex # Modèle LaTeX
│ ├── portals.example.yml # 45+ entreprises préconfigurées
│ └── states.yml # Dictionnaire des statuts
├── data/ # Données de candidatures (gitignored)
│ ├── applications.md # Table de suivi principale
│ ├── pipeline.md # Boîte de réception d’URL à traiter
│ ├── scan-history.tsv # Scan anti-doublons
│ └── follow-ups.md # Historique des relances
├── reports/ # Rapports d’évaluation (gitignored)
├── output/ # PDF générés (gitignored)
├── jds/ # Stockage du texte JD (optionnel)
├── interview-prep/ # Préparation aux entretiens
│ ├── story-bank.md # Banque d’histoires STAR+R accumulées
│ └── {company}-{role}.md # Renseignements propres à l’entreprise
├── batch/
│ ├── batch-prompt.md # Invite worker
│ ├── batch-runner.sh # Script d’orchestration
│ └── tracker-additions/ # À fusionner dans le tableau de suivi principal
├── dashboard/ # Go TUI (Bubble Tea)
│ ├── main.go
│ └── internal/
├── fonts/ # Space Grotesk + DM Sans
├── providers/ # Configuration du fournisseur LLM
├── docs/ # Documentation multi-langues + couverture média
├── examples/ # CV / rapports / exemples de points forts
└── *.mjs # Scripts pour scan / validation / fusion / health check
En tant qu’utilisateur, vous n’avez qu’à toucher 4 fichiers : cv.md / config/profile.yml / modes/_profile.md / portals.yml — c’est User Layer : les mises à jour du système ne changeront pas ça. Le reste est géré par l’agent.
Étapes pas à pas
Étape 1 : Cloner + installer
git clone https://github.com/santifer/career-ops.git
cd career-ops
npm install
npx playwright install chromium # Nécessaire pour générer les PDF
WARNING
Ne sautez pas npx playwright install chromium. Ensuite, /career-ops pdf utilise le rendu Playwright : sans Chromium, vous aurez l’erreur « browser not found ».
Étape 2 : Vérification santé
npm run doctor
Cela vérifie la version de Node.js, Playwright, les fichiers/permissions clés. En cas d’échec, le « médecin » vous indiquera ce qui manque ; corrigez, puis relancez.
Étape 3 : Créer votre cv.md
C’est la source du pipeline complet — sans lui, l’agent ne peut pas évaluer les offres.
Créez cv.md à la racine du projet :
# Your Name
**Email:** [email protected]
**Location:** Berlin, Germany (CET)
**LinkedIn:** linkedin.com/in/you
**GitHub:** github.com/you
## Summary
Senior backend engineer with 6 years building distributed systems...
(Objectif : 2-3 paragraphes, écrivez « ce que vous faites + votre(s) point(s) fort(s) principale(s) »)
## Experience
### Staff Engineer — Company A (2023 - Present)
- Led migration of X to Y, reducing Z by 40%
- (idéalement avec des chiffres : cette partie sera utilisée par l’agent pour matcher le JD)
### Senior Engineer — Company B (2020 - 2023)
- ...
## Education
...
## Skills
Backend: Go, Python, PostgreSQL, Kafka
AI/ML: PyTorch, LangChain, RAG
...
TIP
Vous ne voulez pas l’écrire vous-même ? Après avoir démarré Claude Code, dites-lui « je colle mon ancien CV » / « voici mon URL LinkedIn » / « je t’explique à l’oral, aide-moi à l’écrire ». L’agent le transformera en cv.md. Les trois parcours d’onboarding sont détaillés dans les prompts fournis dans le README.
Étape 4 : Configurer config/profile.yml
cp config/profile.example.yml config/profile.yml
Ouvrez config/profile.yml et renseignez :
personal:
name: "Your Name"
email: "[email protected]"
location: "Berlin, Germany"
timezone: "CET"
targeting:
roles:
- "Senior Backend Engineer"
- "Staff Engineer"
- "AI Platform Engineer"
comp_target:
base_min: 130000
base_target: 160000
currency: "EUR"
remote_preference: "remote-first"
deal_breakers:
- "no on-call"
- "no Java"
- "no < 20 person startups"
# Pour utiliser des modes en chinois / allemand / français / japonais / turc, ajoutez cette ligne
# language:
# modes_dir: modes/de
WARNING
Ne modifiez pas à la main modes/_shared.md. Une mise à jour du système va l’écraser. Pour tout ce qui touche à votre archetype / vos scripts de négociation / vos objectifs de salaire, écrivez-le dans modes/_profile.md ou config/profile.yml. C’est la règle de Data Contract insistée dans le README.
Étape 5 : Configurer portals.yml
cp templates/portals.example.yml portals.yml
Par défaut, inclus 45+ entreprises + 19 requêtes de recherche couvrant :
# AI Labs
- anthropic
- openai
- mistral
- cohere
# Voice AI
- elevenlabs
- vapi
- deepgram
# AI Platforms
- retool
- airtable
- vercel
- temporal
Pour ajouter des entreprises que vous ciblez, ajoutez-les dans portals.yml. La couverture des job boards inclut Ashby / Greenhouse / Lever / Wellfound / Workable / RemoteFront.
Étape 6 : Laisser l’agent vous faire un « Onboard »
# Choisissez une CLI IA que vous avez installée
claude # Claude Code
# ou
gemini # Gemini CLI
# ou
opencode # OpenCode
# ou
codex # Codex
Dans la CLI, dites :
Aide-moi à configurer career-ops. Je viens juste de cloner le projet, cv.md et config/profile.yml sont déjà remplis.
Peux-tu vérifier si mon onboarding est complet, et me dire ce que je dois encore ajouter ?
L’agent lance une série de vérifications au démarrage :
cv.mdest-il présent ? ✅config/profile.ymlest-il bien le vrai (pas « .example ») ? ✅modes/_profile.mdest-il bien une copie de_profile.template.md? ⚠️portals.ymlest-il bien le vrai (pas « .example ») ? ✅
N’importe quel ❌ fait entrer dans un mode d’assistance, avec un échange 1:1 pour compléter.
TIP
À la première exécution, l’agent vous demandera activement : « Quel est votre plus grand accomplissement professionnel dont vous êtes fier ? Quels sont vos deal-breakers ? Quel est votre superpouvoir ? ». Prenez 5 minutes pour répondre sérieusement : cette partie sera intégrée dans modes/_profile.md. Ensuite, la précision des scores d’évaluation dépendra surtout de cela. La première semaine, ça ressemble à l’onboarding d’un nouveau recruteur ; la deuxième semaine, il vous comprend mieux que la plupart des recruteurs humains.
Étape 7 : Première évaluation
Collez une URL de JD à l’agent :
/career-ops https://jobs.anthropic.com/staff-software-engineer-applied-ai
L’agent lance un pipeline entièrement automatique :
- Détection d’archetype — catégorisation en LLMOps / Agentic / PM / SA / FDE / Transformation
- Évaluation A-F — 6 dimensions (Role summary / CV match / Level strategy / Comp research / Personalization / Interview prep)
- Génération du rapport — écrire dans
reports/001-anthropic-2026-06-09.md - Génération du PDF — exécuter le rendu Playwright du CV ATS, sortie vers
output/001-anthropic-cv.pdf - Écriture dans le tracker — ajouter une ligne dans
data/applications.md - Mise à jour de l’intégrité du pipeline — exécuter
node verify-pipeline.mjspour vérifier
Vous devriez voir, après 30–60 secondes, un rapport d’évaluation complet + un PDF de CV ATS.
WARNING
Le score de la première évaluation ne sera pas fiable. Le système ne vous connaît pas encore, donc il peut donner trop haut ou trop bas. Ne vous inquiétez pas : faites 3 à 5 évaluations, puis dites à l’agent, d’après les résultats, « ce score est trop élevé » / « je n’ai jamais mentionné avoir telle expérience (XX) ». L’agent intégrera ce qu’il apprend dans modes/_profile.md : plus vous l’utilisez, plus ça devient précis.
Étape 8 : Première phase de scan
/career-ops scan
Ou équivalent :
node scan.mjs # zéro token, récupération via API
node scan.mjs --verify # API + validation Playwright secondaire, filtre les postes expirés
En une passe, avec 45+ entreprises préconfigurées + 19 requêtes, on obtient généralement 200 à 500 nouveaux postes, directement dans la boîte de réception data/pipeline.md. Ensuite, lancez les workers claude -p pour exécuter les évaluations en parallèle : traiter 100+ offres en une nuit, ce n’est pas un rêve.
Étape 9 : Lancer le TUI Dashboard (optionnel)
Si vous voulez visualiser l’avancement dans le terminal :
cd dashboard
go build -o career-dashboard .
./career-dashboard --path ..
6 onglets de filtres, 4 modes de tri, vue groupée/plate, aperçu chargé à la demande (lazy-loaded), et un changement de statut quand vous sélectionnez. Thème Catppuccin Mocha : ça claque.
Étape 10 : Mettre à jour le système (important !)
Career-Ops évolue vite : de nouveaux modes / nouvelles configurations arrivent toutes les quelques semaines.
# à la racine du projet, demandez à l’agent de vérifier
claude # dites-lui « check career-ops for new version »
L’agent lancera automatiquement node update-system.mjs check ; la sortie JSON ressemble à ceci :
{"status": "update-available", "local": "1.3.0", "remote": "1.4.0", "changelog": "..."}
Il vous dira : « v1.3.0 → v1.4.0 est disponible, vos données (CV / profile / tracker / reports) ne seront pas touchées ; souhaitez-vous mettre à jour ? ». Pour mettre à jour :
node update-system.mjs apply # mise à jour
node update-system.mjs rollback # si vous n’êtes pas satisfait, retour arrière
Dépannage des problèmes fréquents
Q1 : cv.md introuvable / l’agent bloque en onboarding
La cause la plus fréquente : cv.md n’est pas dans le répertoire racine du projet.
# vérifier que c’est bien à la racine
ls -la cv.md
# vous devriez voir -rw-r--r-- cv.md
# sinon, créez-le (dans la racine)
cd career-ops
touch cv.md
# puis remplissez
Q2 : échec de génération du PDF, « browser not found »
Playwright n’est pas installé ou Chromium ne l’est pas :
npx playwright install chromium
# si votre réseau est lent (en Chine), ajoutez un mirror
PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright npx playwright install chromium
Q3 : scores d’évaluation trop élevés / trop faibles
C’est normal la première semaine. Pour corriger :
- Lancez 3 à 5 évaluations supplémentaires, et à chaque fois donnez à l’agent un retour du type « je ne suis pas d’accord : parce que XX »
- L’agent écrira ce qu’il apprend dans
modes/_profile.md - Concentrez-vous sur ce qui est renseigné dans
modes/_profile.md: votre plancher salarial, vos préférences de remote, votre positionnement de rôle, et les cas « opposés » (reverse case)
Important : les contenus personnalisés doivent aller dans
modes/_profile.mdouconfig/profile.yml; ne modifiez pasmodes/_shared.md, car il sera écrasé par les mises à jour système.
Q4 : Validation via WebSearch / WebFetch pour savoir si l’offre est exacte
Ce n’est pas fiable. La règle interne de Career-Ops est d’utiliser Playwright pour vérifier que l’offre est encore active :
# en utilisant le slash command, Playwright sera exécuté en interne
/career-ops verify --url <JD_URL>
En mode batch (
claude -p), Playwright n’est pas disponible : il indiquera**Verification:** unconfirmed (batch mode), et vous devrez vérifier manuellement.
Q5 : Explosion de consommation de tokens en évaluation batch
En lançant 100+ offres à évaluer, la facture de tokens pour une nuit peut facilement dépasser 20 $. Les corrections sont en trois niveaux :
- Réduire le nombre de batch — lancez 10 à 20 à la fois, ne scannez pas 100+ d’un coup
- Solution par modèle local en secours — des tâches structurées comme
ofertas(comparaison) /tracker/pdfpeuvent être remplacées par un petit modèle local - Brancher l’API Defapi à moitié prix — protocole compatible à 100 %, modèle identique à l’officiel ; la facture mensuelle baisse directement (configuration exacte : voir la TIP après « Profil du public visé »)
Q6 : Changer vers les modes en allemand / français / japonais / turc
# 1. Modifier config/profile.yml
language:
modes_dir: modes/de # ou fr / ja / tr
Sinon, dites simplement à l’agent : « exécute en mode allemand ». Il passera sur la logique d’évaluation de modes/de/ (avec des termes localisés du marché DACH : 13. Monatsgehalt / Probezeit / AGG / Tarifvertrag, etc.).
WARNING
Après avoir basculé vers modes/de/, l’évaluation en allemand sera aussi appliquée aux offres en anglais. Sauf si vous ne candidatez qu’en allemand, gardez le mode anglais par défaut, et changez uniquement manuellement quand vous postulez en allemand.
Q7 : Des données sales avec mise en forme (comme **Applied**) apparaissent dans les champs
Le statut du tracker a été mis en gras manuellement. Pour corriger :
node normalize-statuses.mjs # normalisation des statuts
node dedup-tracker.mjs # suppression des doublons
node verify-pipeline.mjs # health check
Ensuite, modifiez templates/states.yml pour ajouter le statut canonical.
Lecture complémentaire / pistes avancées
- User Layer vs System Layer : c’est la partie d’ingénierie la plus intéressante de Career-Ops —
modes/_profile.md(côté utilisateur) n’est jamais écrasé parmodes/_shared.md(côté système). Tout ce qui personnalise votre onboarding ne disparaît pas même après 100 mises à jour. Recommandé : lireDATA_CONTRACT.mdpour avoir la vue d’ensemble - Changer l’archetype : dites à l’agent « change the archetypes to data engineering roles » ; il mettra à jour
modes/_profile.mdet nonmodes/_shared.md - Changement de langue : pour candidater en allemand / français / japonais / turc, basculez sur
modes/{de,fr,ja,tr}/; la logique d’évaluation se localise automatiquement (termes locaux comme CDI / 賞与 / allocations de transport, etc.) - TUI Dashboard (niveau avancé) : dashboard écrit en Go + Bubble Tea + Lipgloss, avec le thème Catppuccin Mocha. Le code source est dans
dashboard/internal/; pour ajouter des filtres/tri personnalisés, modifiez directement - Banque d’histoires STAR+R :
interview-prep/story-bank.mdaccumule vos histoires « Situation + Task + Action + Result + Reflection » au fil des évaluations. Après 3 à 5 évaluations, vous aurez 5 à 10 histoires capables de répondre à quasiment n’importe quel questionnement comportemental en entretien - Portfolio en complément (fork) : le portfolio de l’auteur est aussi open source — santifer/cv-santiago — avec un chatbot IA + un board LLMOps + des études de cas. Forkez-le et transformez-le en votre propre version
Dépôt GitHub : santifer/career-ops, documentation multi-langues dans README.{cn,es,ja,ko-KR,pt-BR,ru,ua,zh-TW}.md, philosophie de design dans DATA_CONTRACT.md, presse dans docs/press/, roadmap dans ROADMAP.md (si vous ne le trouvez pas dans le projet, demandez à l’agent « show me your roadmap »).