All projects
In progress

Software Engineering | Personal | 9 min read

Kandid.

Un plugin pour Claude Code qui cherche les offres, écrit un CV et une lettre fidèles à ton profil, vérifie qu'ils passent les ATS et garde le suivi de chaque candidature, sur ta machine.


Kandid

Alternance, stage ou premier emploi : Claude prépare tes candidatures, tu les valides et tu les envoies.

CI
CI
 
Construit sur Claude Code
Construit sur Claude Code
 
Licence MIT
Licence MIT

Un plugin pour Claude Code qui cherche les offres, écrit un CV et une lettre fidèles à ton profil,
vérifie qu'ils passent les ATS et garde le suivi de chaque candidature, sur ta machine.

Kandid prépare un CV adapté à l'offre, le marque prêt, puis te laisse l'envoyer.
Kandid prépare un CV adapté à l'offre, le marque prêt, puis te laisse l'envoyer.

Démarrage rapide     Commandes     Une candidature, pas à pas     Tes données     Réglages     Contribuer

[!NOTE] Kandid est un projet open source indépendant. Il n'est ni affilié à Anthropic, ni soutenu ou maintenu par Anthropic. Claude et Claude Code sont cités pour décrire l'outil sur lequel Kandid s'appuie.

Pourquoi Kandid

Je suis étudiant et je cherche une alternance en data. Comme beaucoup, j'ai vite eu trois problèmes : adapter un CV et une lettre à chaque offre prend une soirée, les réponses des recruteurs se perdent entre les alertes d'offres et les newsletters, et au bout de trente candidatures plus personne ne sait laquelle en est où.

Kandid est né de cette recherche. Il reprend les scripts que j'utilisais pour mes propres CV et en fait un outil pour n'importe quel étudiant : Claude fait le travail de préparation, toi tu gardes la main sur ce qui part.

Les candidatures convergent vers une base de suivi locale.
Les candidatures convergent vers une base de suivi locale.

Trois règles ne bougent jamais :

  • Kandid prépare, tu envoies. Il ne remplit aucun formulaire à ta place, n'envoie aucun mail et ne se connecte à aucun compte.
  • Rien n'est inventé. Chaque compétence, chiffre ou expérience d'un CV ou d'une lettre doit venir de ton profil. Un contrôle automatique et un relecteur indépendant bloquent tout le reste.
  • Tes données restent chez toi. Profil, CV, lettres et suivi vivent dans un dossier de ton ordinateur, jamais sur un serveur Kandid (il n'y en a pas).

Ce que fait Kandid

Le parcours Kandid, de la création du profil au suivi des réponses, avec l'envoi sous ton contrôle.
Le parcours Kandid, de la création du profil au suivi des réponses, avec l'envoi sous ton contrôle.

Kandid se compose de trois briques :

  • le plugin Claude Code : les commandes /kandid:..., un agent relecteur et des garde-fous (hooks) qui protègent ton CV maître et demandent ton accord avant tout envoi par un connecteur ;
  • l'outil kandid : une ligne de commande Python qui fait tout ce qui doit être exact (recherche d'offres, rendu des PDF, score ATS, contrôle d'honnêteté, base de suivi), pour que Claude n'ait jamais à deviner ;
  • le suivi : une base SQLite locale, que Claude affiche sous forme de tableau de bord dans un artefact.

Les offres viennent de La bonne alternance, de France Travail, d'Adzuna et des pages carrières des entreprises (Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee). Le marché visé est la France ; le fonctionnement, lui, ne dépend ni du domaine ni du métier.

Démarrage rapide

Ce qu'il te faut

Claude CodeAvec un abonnement Claude (Pro ou Max) ou des crédits API.
uvLance l'outil kandid ; il installe lui-même la bonne version de Python.
Une distribution LaTeXAvec pdflatex : MiKTeX sous Windows, TeX Live ailleurs.
Popplerpdftotext et pdfinfo, pour lire les PDF comme un ATS.
Clés d'API des sources d'offres (facultatives)

La bonne alternance, France Travail et Adzuna demandent une clé gratuite. /kandid:setup te dit quelles variables d'environnement remplir et comment (setx NOM valeur sous Windows). Les clés ne passent jamais dans la conversation ni dans un fichier du dépôt. Sans clé, la source est simplement ignorée ; les pages carrières n'en demandent pas.

1. Installer le plugin

Dans Claude Code :

/plugin marketplace add sorooty/Kandid
/plugin install kandid@kandid

2. Régler Kandid

/kandid:setup

Kandid te demande où ranger tes données, importe ton CV actuel section par section (tu valides chacune), puis règle la recherche : contrats visés, ville et rayon, mots-clés, sources. Il propose enfin trois tâches planifiées (veille le matin, relances, résumé du soir), que tu peux couper.

3. Chercher des offres

/kandid:veille

Les nouvelles offres sont dédoublonnées, comparées à ton profil et classées.

4. Préparer une candidature

/kandid:postuler https://exemple.fr/offres/alternance-data

Un lien, le texte de l'offre ou le numéro d'une offre trouvée par la veille. Tu obtiens un CV et une lettre en PDF, le score ATS et les points à vérifier. L'envoi reste de ton côté.

[!WARNING] Une offre est un texte écrit par un inconnu : Kandid ne suit aucune instruction qu'elle contient. Relis quand même ce qui a été produit avant d'envoyer, c'est ton nom en bas de la lettre.

Commandes

CommandeÀ quoi elle sert
/kandid:setuprégler Kandid, importer ton CV, programmer les tâches
/kandid:veillechercher les nouvelles offres et les noter
/kandid:postulerpréparer une candidature complète, jusqu'au statut « Prêt »
/kandid:cv, /kandid:lmrefaire le CV ou la lettre d'une candidature
/kandid:atsscore ATS d'un CV, avec ou sans offre
/kandid:formulaireremplir un formulaire en ligne à deux, sans le soumettre
/kandid:suivioù en est chaque candidature et quoi faire ensuite
/kandid:courrierlire les réponses des recruteurs et proposer les statuts
/kandid:relancebrouillons de relance pour les candidatures sans réponse
/kandid:importerimporter les candidatures envoyées avant Kandid
/kandid:prep-entretienpréparer un entretien
/kandid:comparercomparer plusieurs offres
/kandid:bilanbilan de la semaine
/kandid:digestrésumé du jour et actions du lendemain
/kandid:tachesvoir, lancer ou couper les tâches planifiées
/kandid:aidela liste des commandes et les règles
Le détail des commandes de suivi
  • /kandid:courrier lit tes mails de recruteurs avec le connecteur Gmail ou Microsoft 365 que tu as déjà dans Claude. Il écarte les alertes d'offres et les newsletters, reconnaît les refus, les demandes d'entretien et les accusés de réception, puis propose un changement de statut par réponse, daté du jour du mail. Rien ne change sans ton accord, et il n'envoie, ne déplace ni ne supprime aucun mail.
  • /kandid:importer fait entrer les candidatures que tu as envoyées avant Kandid, avec leurs dates, depuis un fichier JSON. Le relancer ne crée pas de doublon.
  • /kandid:relance repère les candidatures restées sans réponse et écrit des brouillons courts, fondés sur ce que tu as réellement envoyé. Tu les envoies toi-même.
  • /kandid:bilan compte les envois, les réponses et les délais de la semaine, et pointe ce qui coince.

Comment se prépare une candidature

Étapes de préparation d'une candidature, avec retour à la rédaction si le relecteur trouve un point bloquant.
Étapes de préparation d'une candidature, avec retour à la rédaction si le relecteur trouve un point bloquant.

  1. L'offre est enregistrée (lien, texte collé ou numéro de veille), puis résumée dans une fiche avec l'adéquation à ton profil en cinq lignes. Si un prérequis manque, Kandid te demande s'il faut continuer.
  2. Le CV et la lettre sont rédigés à partir de ton profile.yaml uniquement, puis rendus en PDF avec LaTeX.
  3. Le contrôle d'honnêteté compare chaque compétence citée à ton profil. Une compétence absente bloque le rendu : on corrige le CV, jamais le profil.
  4. Le score ATS lit le PDF comme le ferait un logiciel de recrutement et mesure la couverture des mots-clés de l'offre. Un mot-clé que ton profil justifie est ajouté ; un mot-clé qu'il ne justifie pas reste manquant.
  5. Un relecteur indépendant, un second agent qui n'a pas écrit les documents, les relit comme un recruteur exigeant et vérifie chaque affirmation. Tant qu'il signale un point bloquant, on reprend.
  6. La candidature passe à « Prêt » avec ses deux PDF classés. /kandid:formulaire peut t'aider à remplir le formulaire en ligne, mais c'est toi qui cliques sur « Envoyer ».

Tes données

OùQuoi
Ton dossier de données (par défaut ~/.kandid)profil, réglages, base de suivi, rapports, journaux
Ton dossier de candidaturesles CV et lettres en PDF, un dossier par candidature
Ton dossier de CV maîtrelu, jamais modifié : un hook bloque toute écriture
Claudele strict nécessaire à la tâche en cours, jamais le contenu de ton CV dans un journal

Où vont les données : elles restent sur ton ordinateur, seul le strict nécessaire est transmis à Claude et au tableau de suivi.
Où vont les données : elles restent sur ton ordinateur, seul le strict nécessaire est transmis à Claude et au tableau de suivi.

Le tableau de bord du suivi est un artefact Claude : une page privée sur ton compte claude.ai, qui affiche une copie des champs du tableau (entreprise, poste, statut, dates, prochaine action). La base de ton ordinateur reste la seule référence ; ni CV, ni lettre, ni coordonnées n'y sont copiés.

Les tâches planifiées tournent sur ton ordinateur, avec un budget plafonné par exécution (0,50 USD et 30 tours par défaut). Elles préparent, elles n'envoient jamais rien.

Réglages

Tout se règle dans config.yaml, dans ton dossier de données. /kandid:setup le remplit ; tu peux ensuite le modifier à la main ou relancer /kandid:setup pour changer une seule partie.

SectionCe qu'elle règle
pathsdossiers de données, de candidatures et de CV maître
watchcontrats, zone, mots-clés et mots exclus, sources d'offres activées
tasksheures et activation des tâches planifiées
mailpériode lue par /kandid:courrier, alertes à ignorer, mots qui signalent un refus ou un entretien

Une alerte d'offres que Kandid ne reconnaît pas encore ? Ajoute son expéditeur à mail.ignore_senders : aucune modification de code n'est nécessaire.

Développer Kandid

Prérequis : Python 3.11 ou plus avec uv, Node.js 24 et pnpm.

pnpm install
uv sync
pnpm check                  # lint et tests
claude --plugin-dir .       # essayer le plugin depuis le dépôt

Les choix de conception sont expliqués dans docs/adr, à partir de l'ADR 0011, et chaque fonctionnalité a sa spec dans docs/specs. Le profil fictif de « Camille Martin » dans examples sert aux tests et aux démonstrations.

Contribuer

Les idées, les retours et les contributions sont les bienvenus. Pour proposer une fonctionnalité, commencez par ouvrir une discussion, puis préparez une pull request courte une fois le besoin clarifié. Consultez le guide de contribution pour connaître la charte et les vérifications à effectuer.

Sources et remerciements

La liste complète des sources consultées, avec ce que chacune a apporté, est dans SOURCES.md.

Licence

MIT

La plume de Kandid trace une signature.
La plume de Kandid trace une signature.