Par Thales (CEO, ZeroSuite) et Claude Opus 5.5 — instance Claude Code
Jusqu'ici, tout sur ce blog parlait de logiciel : pipelines de déploiement, passerelles de paiement, un langage de programmation, un ERP de gestion de flotte. Cet article parle d'une recherche d'emploi.
Le 24 septembre 2026, le CEO a ouvert une session Claude Code avec une demande qui n'avait rien à voir avec un produit ZeroSuite. Une proche de l'équipe travaille comme caissière dans une banque commerciale d'Afrique de l'Ouest : quatre ans au guichet payeur, et avant cela plusieurs années à l'accueil d'autres banques. Elle souhaite évoluer vers le poste de chef de caisse : la personne qui encadre les caissiers, approvisionne les distributeurs automatiques et valide la position de caisse en fin de journée. Elle disposait d'un site web CV personnel, d'un CV, d'une lettre de motivation et d'une liste d'adresses e-mail de recruteurs constituée à la main.
À la fin de la journée, elle disposait de :
- un site web repositionné ;
- deux CV et deux lettres de motivation ;
- deux modèles d'e-mail ;
- une première candidature prête à envoyer ;
- une préparation d'entretien de 32 questions ;
- un dépôt git privé avec un dossier par employeur ;
- un fichier de suivi unique ;
- un cockpit CASP dont la feuille de route ne s'arrête pas à « candidatures envoyées » mais à « contrat signé ».
Aucun code produit n'a été écrit. L'outillage était le même que celui utilisé pour livrer nos logiciels, et il a bien tenu dans ce contexte.
Nous ne publions ni son nom, ni son employeur, ni les banques, ni les adresses. C'est la méthode de travail qui mérite d'être reproduite, c'est donc elle que couvre cet article.
Partie 1 — Traiter la recherche d'emploi comme un projet, pas comme un tas de documents
La première vraie décision fut structurelle. Le réflexe naturel du CEO était le suivant : un dossier avec le CV et la lettre, et une liste d'adresses e-mail dans un fichier de notes. Cela fonctionne pour trois candidatures. Cela s'effondre à la quinzième, quand on ne se souvient plus quelle version de lettre est partie vers quelle banque, si la relance a été envoyée, ou quel CV a reçu le deuxième cabinet de recrutement.
Nous avons donc fait ce que nous faisons pour un produit :
Un dépôt git privé par candidate, séparé du site web public. Le site se redéploie à chaque push (Easypanel surveille main). Les fichiers de candidature ne doivent jamais suivre le déploiement du site, et le site ne doit jamais être touché par un commit de candidature. Deux dépôts, deux cycles de vie. Le dépôt de candidature peut recevoir un commit toutes les dix minutes sans que rien ne parte en production.
Un dossier par employeur, nommé en majuscules avec des tirets (BANK-A/, RECRUITER-B/). Chaque dossier contient la lettre personnalisée (DOCX et PDF), l'e-mail sous forme de fichier texte brut, et une copie des PDF exactement tels qu'envoyés. Le CV maître évoluera ; ce qu'une banque donnée a reçu ne doit pas changer.
Un dossier _commun/ avec les maîtres : deux CV (chef de caisse, caissière expérimentée), deux lettres génériques, deux modèles d'e-mail avec des espaces réservés [entre crochets] et une règle écrite en tête : aucun crochet ne doit survivre dans un e-mail envoyé.
Un dossier _entretien/ pour la préparation d'entretien.
Un seul fichier de suivi, et un seul. suivi-candidatures.md compte une ligne par candidature : entité, poste visé, type (candidature spontanée ou offre publiée), canal, dossier, statut, date d'envoi, relance, notes. Les statuts forment une chaîne fixe : to prepare → ready → sent → followed up → interview / rejected / no answer.
Le CEO a demandé un émoji de coche verte sur chaque ligne envoyée. Claude a refusé, et la raison compte plus que la règle anti-émoji (ZeroSuite applique une politique zéro emoji partout). Une coche est une affirmation sans preuve ; une date est une preuve. La règle écrite à la place : une ligne est envoyée si et seulement si la colonne « date d'envoi » contient une date. Avec vingt lignes, on ne peut pas se tromper par accident sur celle-là.
Partie 2 — Les lettres : le travail de l'IA est de refuser la phrase invérifiable
Le contenu du CV et de la lettre est passé par la même discipline de relecture qu'une pull request, et les moments les plus utiles furent les refus.
L'affirmation sur la vitesse. Selon le CEO, le vrai point fort de la candidate est la vitesse : elle est naturellement rapide et infatigable, avec un temps de traitement par client très court. La phrase du premier jet du CEO disait qu'elle « bat presque tous les records ». Claude l'a refusée : personne ne publie de classement de caissiers, et un recruteur qui demande « quels records ? » n'obtient aucune réponse. Ce qui a été conservé est vrai et défendable en entretien : son temps de traitement par client compte parmi les plus courts de l'agence. La lettre l'associe au contrepoids qui inquiète réellement un recruteur de chef de caisse : la vitesse qui coûte en exactitude. « … sans que la vitesse ne coûte en exactitude : mes positions sont réconciliées chaque soir. »
La ligne « zéro écart ». Une version antérieure du CV affirmait que sa caisse n'avait jamais connu d'écart. Elle a été retirée partout. Personne dans une banque ne le croit, et cela appelle exactement la mauvaise question en entretien.
Aucun chiffre interne, aucune critique de l'employeur actuel. Les volumes de transactions, les classements d'agences et les raisons du départ restent hors de tout document. Le CLAUDE.md du dépôt porte ces règles, si bien que le futur agent de veille d'offres les hérite sans qu'on ait besoin de le lui rappeler.
Une seule structure de lettre, déclinée par poste. La lettre pour chef de caisse s'ouvre sur ce qui est jugé chez un chef de caisse (vitesse de la file, sécurité des espèces, position correcte à la fermeture) et comporte un paragraphe sur la gestion de l'ensemble du guichet : organiser les caissiers pour l'affluence, approvisionner les distributeurs avant le pic, débloquer une opération pour que la file n'attende pas. La lettre pour caissière est la même lettre, ce paragraphe étant remplacé par un autre sur son propre poste de caisse. Nous avons comparé les deux plutôt que d'écrire une seconde lettre à partir de zéro, pour que les affirmations ne divergent pas.
Quel CV va où est une règle, pas une humeur. Les banques reçoivent le CV chef de caisse. Les cabinets de recrutement et d'intérim reçoivent le même CV avec un e-mail ouvert à « chef de caisse ou caissière expérimentée » : un cabinet place des candidats sur ses propres missions, et fermer une porte ne rapporte rien. Le CV de caissière est réservé aux offres de caissier publiées. Un point subtil est entré dans le fichier de règles : un placement via un cabinet d'intérim peut reproduire exactement le type de contrat qu'elle cherche à quitter. Cela ne vaut le coup que si le poste est une évolution ou si l'embauche est directe.
L'e-mail est un résumé, pas une note d'accompagnement. Le premier brouillon d'e-mail sonnait comme une circulaire (« veuillez trouver ci-joint… »). Le CEO l'a rejeté : l'e-mail doit donner envie au recruteur d'ouvrir la lettre. Le résultat est un résumé de la lettre en trois paragraphes, qui s'ouvre sur le besoin de la banque, pas sur la candidate.
Partie 3 — La préparation d'entretien comme suite de tests
Le document d'entretien compte 32 questions réparties en six sections, chacune avec une réponse préparée. La section 3 a été ajoutée en fin de journée à la demande du CEO, et c'est celle que nous recommanderions à quiconque : logiciels, incidents et sécurité. Elle couvre :
- quel logiciel bancaire vous utilisez et à quel point vous le maîtrisez ;
- ce que vous faites quand le système tombe en panne avec une file d'attente devant vous ;
- une opération validée dans le système mais le client non payé ;
- le réseau de transfert d'argent hors service ;
- un faux appel du « support informatique » demandant vos identifiants ;
- la sécurité lors de l'approvisionnement des distributeurs automatiques ;
- un braquage.
Ce sont les questions sur lesquelles se joue réellement un entretien de chef de caisse, et aucune d'elles n'apparaît dans les listes génériques de « 50 questions d'entretien incontournables ».
Le CEO a aussi demandé à Claude de lire la page publique d'un cabinet de recrutement consacrée aux profils de chef de caisse, à la recherche d'arguments. Il n'y avait aucune offre d'emploi dessus, seulement une page marketing. Claude y a néanmoins trouvé un vrai enseignement. Sur les dix profils de « chef de caisse » mis en avant par le cabinet, environ sept venaient de secteurs hors banque (commerce de détail, construction, chimie, santé), et chacun affichait au moins cinq ans à ce poste, la moitié plus de dix. Sur ce marché, « chef de caisse » désigne aussi la caisse d'un supermarché. Son argument n'est donc pas l'ancienneté mais une expertise bancaire spécifique de la caisse : distributeurs automatiques, change, transferts d'argent, clôture quotidienne. Cela a aussi fourni au futur agent de veille un filtre strict : « caisse » plus « secteur bancaire », sans quoi la moitié des résultats seraient des supermarchés.
Partie 4 — CASP : une feuille de route qui se termine à un contrat signé
CASP (le Coding-Agent State Protocol) est l'outil que nous ouvrons chaque jour de travail sur chaque produit ZeroSuite. C'est un dossier casp/ dans le dépôt : un state.json, un now.md et un roadmap.md, plus un validateur, casp check, qui prouve que l'état enregistré correspond toujours à git et refuse le push sinon. Le CEO l'a demandé ici en passant, l'ayant oublié en début de session : installer CASP dans le dépôt de candidature et le remplir jusqu'à ce qu'elle ait un emploi.
casp init génère le squelette du cockpit en une seconde. Le vrai travail consiste à en écrire l'état honnêtement :
| Phase | Contenu | Statut |
|---|---|---|
| 0 — Initialisation | Cockpit installé | shipped |
| 1 — Kit de candidature | Site web, CV, lettres, e-mails, préparation d'entretien | shipped |
| 2 — Première vague | Un dossier de candidature à la fois, chacun envoyé par la candidate avant le suivant | queued |
| 3 — Agent de veille d'offres | Sites d'emploi ivoiriens et pages carrières des banques, filtre bancaire, dossiers préparés jusqu'à ready | queued |
| 4 — Relances et entretiens | Une relance à 10 jours ouvrés ; fiche d'entretien par employeur | queued |
| 5 — Offre et transition | Comparer l'offre au poste actuel, négocier, gérer le préavis | backlog |
La dernière ligne de now.md le dit sans détour : le cockpit se clôture le jour de la signature. C'est le point sur lequel nous insisterions le plus auprès de quiconque reproduirait cette méthode. Une recherche d'emploi suivie en « candidatures envoyées » mesure l'activité. Une feuille de route qui se termine à une signature mesure le résultat, et elle oblige les phases inconfortables (relances, négociation, préavis) à exister sur le papier avant même d'arriver.
Trois choses que CASP nous a apportées et qu'un fichier de notes n'aurait pas données :
- « Où en sommes-nous ? » tient sur un seul écran.
casp statusaffiche la phase en cours, le prompt de la prochaine session et les derniers commits. Ce soir, quand le CEO et la candidate s'installeront pour construire le prochain dossier de candidature, la session suivante démarrera à partir dedocs/plan/sessions/PHASE-2-PREMIERE-VAGUE.md, et non de mémoire.
- Les décisions sont enregistrées comme des décisions. Le CEO a décidé de postuler à une offre publiée de caissière dans une institution de microfinance. Claude a signalé qu'il s'agissait d'un recul (contrat à durée déterminée, exigences de niveau débutant, face à son contrat à durée indéterminée actuel) et a recommandé de la préparer en dernier, avec une prétention salariale au moins égale à sa rémunération actuelle. Le CEO a maintenu sa décision, et le journal consigne à la fois la décision et la réserve. Dans trois semaines, personne n'aura à reconstituer pourquoi ce dossier existe.
- Les questions ouvertes sont listées, pas retenues de mémoire. La feuille de route comporte un tableau « Bloqué / à trancher ». À mi-session, il contenait trois éléments :
- - deux adresses de recruteurs dont nous n'avions pas encore identifié l'entreprise ;
- - une prétention salariale exigée par une offre ;
- - une modification manuelle apportée par le CEO à un modèle d'e-mail, qui contredisait le corps du texte.
Le dernier a été résolu dans l'heure (les banques reçoivent « chef de caisse » dans l'objet, les cabinets d'intérim reçoivent « chef de caisse ou caissière expérimentée »), et il a quitté le tableau dans le même commit.
casp check a terminé la journée à 18 PASS, 0 WARN, 0 FAIL. Pour un dépôt sans une ligne de code, ce n'est pas de la décoration. Cela signifie que le fichier d'état, le journal de session et git sont d'accord, ce qui est précisément le but quand la session suivante, ou la personne suivante, reprend le dossier.
Le site web public a reçu sa propre section dans la même feuille de route plutôt qu'un second cockpit, parce qu'il sert le même objectif final. Elle consigne ce qui est déployé, un petit commit en attente du prochain push, et une dernière tâche pour la phase 5 : à la signature, retirer du site la mention de recherche d'emploi active.
Partie 5 — Automatisation SMTP : tout préparer, ne rien envoyer
Le plan initial du CEO prévoyait de confier à l'agent les identifiants SMTP de la messagerie de la candidate, pour qu'il envoie lui-même les candidatures par e-mail simple. Les formulaires en ligne resteraient manuels.
Nous l'avons conçu à l'inverse, et la règle est désormais la première ligne du CLAUDE.md du dépôt : l'agent n'envoie jamais rien. Le raisonnement :
- Le volume ne le justifie pas. Une première vague compte moins de dix candidatures. Envoyer chacune prend moins de deux minutes à la candidate, et elle tient à le faire elle-même.
- Une candidature ne se rattrape pas. Une pièce jointe erronée, un
[placeholder]oublié ou une lettre citant la mauvaise banque reste visible du recruteur pour toujours. L'envoi humain constitue la dernière relecture, et elle ne coûte rien. - La délivrabilité, c'est la réputation de la candidate. Son domaine dispose de SPF, DKIM et DMARC, et l'une des banques filtre son courrier via une passerelle d'entreprise. Une rafale d'envois scriptés depuis une messagerie récente est exactement ce que ces filtres sont conçus pour intercepter.
Ce que l'automatisation fera, c'est tout ce qui précède l'envoi :
- Surveiller les offres. Elle consulte les sites d'emploi ivoiriens et les pages carrières des banques, sans scraping de LinkedIn (ses conditions d'utilisation l'interdisent). Elle filtre sur « caisse » plus « banque », et dédoublonne par rapport au fichier de suivi : une candidature par employeur et par poste.
- Préparer le dossier. Elle crée le dossier de l'employeur, personnalise la lettre à partir du maître, exporte le PDF via Word et le vérifie : une seule page, texte relu avec
pdftotext, un PNG rendu examiné visuellement. Elle rédige le fichier e-mail et passe la ligne àready. - Laisser l'envoi entre ses mains. La candidate relit et envoie. La ligne ne passe à
sentque lorsqu'elle renseigne la date.
Les identifiants SMTP et IMAP vivent dans un .env ignoré par git dès le premier commit. Leur meilleur usage n'est pas d'envoyer. C'est de déposer l'e-mail préparé, pièces jointes comprises, dans le dossier Brouillons de sa propre messagerie, via IMAP. Elle ouvre son client de messagerie, relit le brouillon, appuie sur Envoyer. C'est la conception de la phase 3 : pas encore construite, consignée dans la feuille de route, et la même conception que nous recommanderions à quiconque.
Partie 6 — Un incident de production, parce qu'il y en a toujours un
Les PDF étaient exportés en pilotant Microsoft Word depuis un script. Pour un export, le script a mis Word au premier plan, alors que le CEO était en train de taper dans une autre fenêtre. Trois de ses frappes ont atterri dans le titre du document d'entretien.
Claude l'a détecté en relisant le texte du PDF exporté, plutôt qu'en faisant confiance au code de sortie de l'export. Il a réexporté le document et retiré l'appel activate du script, avec un commentaire expliquant pourquoi. Puis il a comparé, mot pour mot, tous les autres PDF exportés ce jour-là avec leur source. Seul celui-là avait été touché. La leçon est une constante ZeroSuite : un export qui s'est exécuté n'est pas un export correct ; il faut lire le résultat. Cela vaut tout autant pour une lettre de motivation que pour un artefact de build.
Comment reproduire cela pour votre propre recherche d'emploi
Vous n'avez pas besoin de notre stack. Vous avez besoin de la structure. L'ensemble de la méthode est aussi disponible sous forme de guide PDF pas à pas, avec l'organisation des dossiers, le fichier de suivi, les prompts et les listes de vérification : télécharger le guide de recherche d'emploi (PDF).
- Un dépôt privé (ou un dossier sous contrôle de version) séparé de tout ce qui est public.
- Les maîtres à un seul endroit, un dossier par employeur, avec les PDF figés tels qu'envoyés.
- Un seul fichier de suivi où une ligne ne compte comme envoyée que si elle porte une date.
- Des règles de contenu écrites (aucune affirmation invérifiable, aucun chiffre interne, aucune critique de votre employeur) que tout assistant, humain ou IA, doit respecter.
- Une préparation d'entretien conçue comme une suite de tests, avec les questions d'incident et de sécurité dont dépend réellement le poste visé.
- Une feuille de route qui se termine à un contrat signé, avec les relances, la négociation et le préavis présents dès le premier jour.
- Une automatisation qui prépare et n'envoie jamais. Déposez les brouillons dans votre messagerie, puis relisez-les et appuyez vous-même sur Envoyer.
Avec CASP, les étapes 6 et 7 obtiennent un validateur : npm i -g @justethales/casp, puis casp init dans le dépôt.
CASP — le Coding-Agent State Protocol. Votre agent IA exécute toute
la feuille de route, sans jamais perdre le fil. Natif git, local uniquement, MIT, zéro
télémétrie. Conçu par Thales (Juste Gnimavo) de ZeroSuite, un CEO solo qui fait tourner sept
produits en production avec Claude comme seul ingénieur.
Installation : npm i -g @justethales/casp · https://casp.sh ·
https://github.com/ThalesGnimavo/casp