• Random Quote

    A real loser is someone so afraid of not winning that they don’t even try

    — Inconnu

CandidateFirst : un agent IA qui cherche du travail pour le candidat, sous son contrôle

(Temps de lecture : environ 4 min)

Projet personnel, conçu et construit en sept jours, du 3 au 9 novembre 2026. Mon rôle : vision produit, expérience, interface, design system, rédaction de l’interface, conception des consignes IA, et direction de Claude Code comme équipe de développement.

Pourquoi j’ai construit CandidateFirst

Je suis moi-même en recherche d’emploi. Postuler correctement prend du temps : surveiller plusieurs plateformes, lire chaque annonce, juger si elle correspond, adapter sa lettre, remplir des formulaires tous différents, puis attendre des réponses qui souvent n’arrivent jamais. Et postuler tôt compte : une offre reçoit l’essentiel de ses candidatures dans les premiers jours.

Les outils existants optimisent le volume, ou servent les recruteurs. J’ai voulu l’inverse : un agent qui travaille pour le candidat, sous son contrôle. Ni job board, ni ATS, ni outil de surveillance.

Ce que fait l’agent

CandidateFirst lit les alertes d’emploi reçues par email, cherche lui-même sur les sites d’offres, évalue chaque offre par rapport au profil et aux souhaits, prépare une lettre fondée sur l’annonce, postule après accord, puis suit les réponses et aide à préparer les entretiens. J’en suis le premier utilisateur : chaque décision a été testée sur ma propre recherche, sur de vraies offres, chaque jour.

Les principes de conception, et leurs arbitrages

  • Autonomie, mais points de contrôle explicites. L’envoi automatique est désactivé par défaut, puis passe par un mode répétition où le formulaire est rempli sans être envoyé. Une candidature n’est marquée « envoyée » que si le site affiche une confirmation.
  • Rendre la main proprement. CAPTCHA, compte à créer, code par email : la candidature revient au candidat, lettre prête. L’agent ne contourne jamais une protection.
  • Un rythme humain plutôt que du volume. Envois étalés, offres les mieux notées d’abord, plafonds par jour et par site. L’objectif est la fraîcheur, pas la masse.
  • Une interface calme. Pas de taux d’échec affiché ; l’accueil dit simplement « 1 candidature est prête ».
  • Expliquer chaque décision. Chaque offre a un score sur 100 et un « Pourquoi ce score » : critères remplis, écarts et inconnues. Un critère inconnu n’est pas un critère incompatible.
  • Le profil comme seule source de vérité. Rien n’est inventé dans une lettre ; ce qui manque est demandé au candidat.
  • Des règles d’abord, l’IA seulement quand elle apporte quelque chose. Le tri, les doublons et le lieu sont gérés par des règles gratuites et prévisibles ; l’IA lit finement l’annonce et rédige.
  • Des données locales par défaut, sur la machine du candidat, avec export et suppression en un clic.

Rendre visible le respect des candidats

CandidateFirst tient un registre de toutes les entreprises contactées et calcule une note de respect à partir des réponses, de leur caractère personnel et des délais. Mesurer a transformé une frustration en donnée : au 9 novembre, 73 % des employeurs évalués ne m’avaient pas répondu, un accusé de réception automatique ne comptant pas comme une réponse.

L’IA et ses coûts se conçoivent

Cache, mémoire des réponses déjà données, lettres soignées réservées aux meilleures offres : au 9 novembre, l’ensemble a coûté environ 10,59 $ pour 1 087 appels réussis. Une lettre coûte environ 3 centimes, l’évaluation d’une offre environ 0,2 centime. Les coûts sont affichés dans l’application, y compris les appels perdus.

Un design system en quatre couches

L’interface repose sur une architecture CSS en quatre couches (tokens, habillage, look, décor) : les composants ne consomment que des tokens, et chacun des 37 looks redéfinit toutes les couleurs en clair et en sombre sans toucher à la mise en page. Un « labo des looks » vérifie chaque apparence, en respectant la préférence « réduire les animations », de 375 à 1 920 px.

En chiffres, au 9 novembre 2026

  • 570 offres collectées et qualifiées, 485 écartées ou expirées automatiquement ;
  • 30 candidatures envoyées, 75 employeurs suivis ;
  • 60 commits en sept jours, environ 22 000 lignes de TypeScript et 177 tests automatisés.

Ce sont des indicateurs d’usage réel d’un outil personnel, pas des résultats commerciaux.

Ce que j’en retiens

  • Tester sur le réel, une plateforme à la fois : chaque site de candidature a ses pièges.
  • La sincérité du statut : un clic sur « Envoyer » ne prouve rien ; il faut distinguer « envoyée », « situation inconnue » et « vous revient ».
  • L’éthique comme contrainte de design : s’arrêter dès qu’une protection apparaît, quitte à rendre la main plus souvent.
  • La voix du candidat : mes consignes de lettre ont évolué jusqu’à la v9, pour répondre d’abord à l’annonce.

Tags:

  • Show Comments

You May Also Like

Refonte appli métier : Assurance immo

Les méthodes employées pour rendre simple d'utilisation un outil très complexe sont surprenantes de ...

Edit my book : Tester un concept avant de se lancer

S'engager sur des frais lourds avant de tester un concept augmente les risques d'échec. ...