ooligo
claude-skill

Feedback de rejet personnalisé avec Claude

Difficulty
intermédiaire
Setup time
30min
For
recruiter · talent-acquisition · recruiting-ops
Recruiting & TA

Stack

Un Claude Skill qui prend les scorecards d’entretien d’un candidat refusé (et, quand disponibles, les transcripts BrightHire ou Metaview), rédige un email de rejet ancré dans les preuves ou des notes de talking-points pour l’appel du recruteur, et produit les notes côté recruteur pour l’appel. Remplace le rejet-formulaire qui nuit à l’expérience candidat par un feedback personnalisé que le candidat peut réellement utiliser — et refuse de rédiger quand le rubrique est absent, quand le process n’a pas convergé, ou quand le cas est signalé par la juridiction.

Quand l’utiliser

  • Le candidat a atteint au moins un onsite ou une boucle en phase finale, où selon les coûts du funnel de recrutement le candidat a investi suffisamment de temps pour mériter une vraie réponse.
  • L’équipe dispose d’au moins deux scorecards validés sur le candidat (Ashby submitted: true, Greenhouse status: complete, Lever state: completed). Un scorecard est la vue d’un seul intervieweur ; le skill refuse de synthétiser un feedback depuis une seule perspective parce que cela expose le cabinet à des prétentions de preuve sélective.
  • Un rubrique de poste existe dans rubrics/<role_id>.yaml avec des ancres comportementales par dimension (la même source que lit le skill de debrief d’entretien). Le skill score contre les ancres du rubrique, pas contre la prose libre des scorecards.
  • Le candidat a explicitement demandé du feedback (capturé par écrit dans l’ATS), OU la juridiction de résidence du candidat est l’une où des spécificités non sollicitées n’entraînent aucun risque documenté selon les conseils RH-légal de l’utilisateur.
  • Un recruteur revoit et édite chaque brouillon avant envoi. Le skill écrit les brouillons sur disque et s’arrête ; il ne définit aucune action send.

Quand NE PAS l’utiliser

  • Envoi automatique sans revue du recruteur. Le feedback de rejet rédigé par IA et envoyé automatiquement est la façon la plus sûre de produire un incident EEOC, ADA ou de droit du travail d’état. Le recruteur est le filtre. Si votre objectif est de retirer l’humain de la boucle, c’est le mauvais workflow.
  • Candidats qui n’ont pas demandé de feedback dans les juridictions de refus. France (risque Code du travail sur les motifs de rejet documentés), Allemagne (déplacement de la charge de la preuve §22 AGG), et toute juridiction que le conseil RH de l’utilisateur a marquée unsolicited_feedback: deny dans le fichier de politique. Le skill refuse les spécificités dans ces cas et écrit le template de refus générique à la place. N’éditez pas le fichier de politique pour faire passer un cas de juridiction de refus.
  • Cas signalés par le juridique. Litige actif, demande d’accommodation non traitée, ou une plainte au dossier. Le skill renvoie un brouillon de refus générique et fait remonter le flag au recruteur. Les spécificités dans un cas signalé deviennent des preuves dans le litige.
  • Rejets aux étapes antérieures (screen CV, screen recruteur). Le refus par template est le bon outil là ; le coût modèle par candidat et le temps de revue du recruteur ne se rentabilisent pas à l’échelle du haut du funnel. Le skill est pour les candidats ayant atteint au moins un onsite.
  • Classement comparatif (vous étiez notre deuxième choix, nous avions des candidats plus forts). Le skill refusera de rédiger cela — le mapping rubrique-vers-feedback ne contient pas ce libellé et la liste de phrases interdites le grep. Le classement comparatif est ce qui transforme un rejet constructif en post Glassdoor.
  • Demandes d’amélioration du process (demander au candidat son feedback sur l’entretien, une recommandation ou un témoignage). Les demandes inverses dans un email de rejet sont un risque de témoignage EEOC et un préjudice pour l’expérience candidat. La liste de blocage les attrape.

Setup

  1. Déposez le bundle. Placez apps/web/public/artifacts/rejection-feedback-claude-skill/SKILL.md dans votre répertoire de skills Claude Code (ou Skills personnalisés claude.ai, avec autorisation Tier-A pour les données candidats selon la politique IA).
  2. Configurez la source du rubrique. Le skill lit les rubriques de poste depuis rubrics/<role_id>.yaml — même chemin utilisé par le skill de debrief d’entretien. Si le rubrique n’existe pas, le skill refuse d’exécuter. Les entretiens structurés sont le prérequis, pas ce skill.
  3. Remplissez le mapping rubrique-vers-feedback. Copiez references/1-rubric-to-feedback-mapping.md et remplacez le libellé template par le langage orienté candidat approuvé par votre équipe par dimension de rubrique. Obtenez la validation du conseil RH une fois ; le journal d’audit capture le SHA-256 du mapping par run, donc les révisions sont visibles rétrospectivement.
  4. Rédigez le fichier de politique de juridiction. Un fichier YAML avec un bloc par juridiction dans laquelle votre cabinet recrute. Chaque bloc définit unsolicited_feedback: allow ou deny et référence le mémo de conseil RH pertinent. Le bundle inclut un template ; les refus par défaut sont la France, l’Allemagne et toute juridiction avec des conseils de droit du travail actifs contre les motifs de rejet documentés.
  5. Configurez l’API de l’ATS. Token API Ashby, Greenhouse ou Lever avec portée lecture sur les scorecards et les candidats. Le skill tire les scorecards par candidate_id ; il n’accepte pas de texte de scorecard collé parce que le texte collé ne peut pas être audité jusqu’à l’intervieweur source.
  6. Optionnel : configurez le bundle de transcript. Accès API BrightHire ou Metaview. Quand un transcript_id est fourni, le skill cross-référence les affirmations des scorecards contre les tours de transcript à l’étape 4.
  7. Testez sur un candidat clôturé. Exécutez sur un candidat déjà refusé le trimestre dernier. Comparez le brouillon du skill à ce que le recruteur a réellement envoyé. Ajustez le mapping rubrique-vers-feedback si le calibrage dérive — le mapping, pas le modèle, est généralement le levier.

Ce que le skill fait réellement

Six étapes, dans l’ordre. L’ordre compte : le filtrage par juridiction et la validation des scorecards se produisent avant que le LLM ne lise jamais le contenu du candidat, parce que lâcher le modèle sur le texte des scorecards dans un cas de juridiction de refus laisse une entrée de journal d’appel modèle avec des données identifiant le candidat que le cabinet n’avait pas besoin de retenir.

  1. Valider la politique de juridiction et le consentement. Rechercher la juridiction du candidat dans le fichier de politique. Si la politique est unsolicited_feedback: deny et que le candidat n’a pas demandé de feedback par écrit, arrêter les spécificités et basculer vers le template de refus générique. Le choix de filtrer sur le consentement avant de tirer les scorecards maintient la story de minimisation des données propre pour RGPD Art. 5(1)(c).
  2. Tirer les scorecards (et le transcript optionnel). Fetch via l’API ATS. Supprimer les brouillons. Si le process a moins de deux scorecards validés, arrêter — le feedback synthétisé depuis la vue d’un seul intervieweur est une opinion, pas un feedback, et expose le cabinet à des prétentions de preuve sélective.
  3. Identifier les dimensions et les preuves. Calculer la moyenne et l’écart-type inter-intervieweurs par dimension du rubrique. Faire remonter les dimensions où la moyenne ≥ 4 (force, ouverture chaleureuse) et moyenne ≤ 2 (gap candidat). Refuser de faire remonter toute dimension avec un écart-type inter-intervieweurs ≥ 1,5 — le process n’a pas convergé, et le feedback sur une dimension non convergée ne survivrait pas à un défi « mais l’intervieweur X m’a donné 5 ». Pour chaque dimension remontée, tirer des citations de preuves verbatim depuis les scorecards (ou le transcript, quand disponible). Pas de chaîne verbatim → la dimension n’est pas remontée.
  4. Rédiger contre le mapping rubrique-vers-feedback. Traduire au plus une force et un gap en langage orienté candidat en utilisant references/1-rubric-to-feedback-mapping.md. Plafonner à un chacun afin que le brouillon ne se lise pas comme une liste défensive. Les slots de substitution du mapping sont remplis depuis des champs structurés (scorecard, ancre de rubrique) ou la liste de sujets approuvés — le LLM ne saisit jamais librement une valeur de substitution, ce qui est le garde contre les spécificités fausses.
  5. Filtrage des biais et des fausses spécificités. Grep du brouillon contre references/2-banned-phrase-blocklist.md. Tout résultat arrête l’exécution avec la chaîne offensante remontée. Vérifier que chaque affirmation spécifique trace vers une chaîne de preuve verbatim de l’étape 3 — les affirmations sans source arrêtent. C’est une passe séparée de l’étape 4 par conception ; la passe de filtrage ne voit que le texte du brouillon, sans connaissance des scorecards sous-jacents, donc elle ne peut pas rationaliser une phrase interdite comme « mais l’intervieweur voulait dire X ».
  6. Écrire sur disque et journal d’audit. Écrire drafts/<candidate-id>.md et (pour route: call) drafts/<candidate-id>-call-notes.md selon le format dans references/3-output-format.md. Ajouter une ligne JSONL à audit/<YYYY-MM>.jsonl avec candidate_id_hash (SHA-256, pas l’ID brut), rubric_sha256, blocklist_sha256, mapping_sha256, dimensions remontées, résultats de la liste de blocage, ID modèle, horodatage. Pas de texte libre identifiant le candidat dans la ligne d’audit.

Le format email littéral, le fallback de refus générique et le template de notes d’appel se trouvent dans references/3-output-format.md. Le format est fixe parce que les consommateurs en aval — recruteur, candidat et tout futur réviseur d’audit — ont besoin d’un langage prévisible sans dérive propre au recruteur.

Coûts réels

Par brouillon de rejet, sur Claude Sonnet 4.5 :

  • Tokens LLM — typiquement 12-25 000 tokens d’input (YAML du rubrique + scorecards + instructions du skill + fichiers de référence) et 0,5-1 500 tokens d’output (le brouillon plus les notes d’appel). Sur Sonnet 4.5 c’est environ 5-10 centimes par brouillon. Une équipe recrutement exécutant 200 brouillons de rejet par mois dépense 10-20 $ en coût modèle.
  • Coût API ATS — zéro sur Ashby (API gratuite), Greenhouse (inclus dans le tier), Lever (inclus). Les fetchs de transcript contre BrightHire ou Metaview comptent contre le plan par siège ; les fetchs de feedback de rejet sont en lecture seule et ne consomment pas de nouveaux crédits de transcript.
  • Temps du recruteur — le gain est là. La rédaction manuelle d’un email de rejet structuré et ancré dans les preuves depuis les scorecards est de 20-30 minutes par candidat quand le recruteur le fait bien, ou 3 minutes quand il colle un formulaire (ce que la plupart des équipes finissent par faire à l’échelle). Le skill produit le brouillon de 20 minutes en moins de 30 secondes ; le recruteur revoit et édite en 4-7 minutes. Économie nette d’environ 15-20 minutes par rejet au niveau de qualité de brouillon réfléchi — disons 50-60 heures par mois sur une équipe exécutant 200 rejets.
  • Temps de setup — 30 minutes pour le mapping rubrique-vers-feedback et la politique de juridiction si votre équipe dispose déjà d’un libellé orienté candidat approuvé quelque part ; plus long si le conseil RH ne s’est pas encore penché sur le langage de feedback de rejet (auquel cas cette conversation est le prérequis, pas ce skill).
  • Le retour sur investissement compoundé de l’expérience candidat. Les candidats refusés avec un feedback spécifique et ancré dans les preuves sont plus susceptibles de re-candidater, de recommander d’autres, et substantiellement moins susceptibles de laisser des avis Glassdoor négatifs — des affirmations communément citées dans la littérature du recrutement dans la fourchette de 30-50 % d’intention de re-candidature, bien que nous n’ayons pas de source primaire pour ces chiffres et les traitons comme directionnels. Le retour compoundé se manifeste dans la densité du pipeline un an plus tard, pas dans le mois où le brouillon a été envoyé.

Métrique de succès

Suivez trois chiffres par mois, dans l’ATS :

  • Distance d’édition du recruteur par brouillon. Le nombre de caractères que le recruteur change entre le brouillon du skill et le message envoyé. Si la distance d’édition tend vers zéro, le recruteur approuve sans regard — faites remonter cela en rétro et revisitez le mapping rubrique-vers-feedback. Si la distance d’édition est constamment élevée, le mapping est mal calibré.
  • Taux de réponse des candidats au rejet. Les réponses à un email de rejet sont généralement des notes de remerciement-et-future-candidature (bon signal) ou des notes d’escalade (mauvais signal). Suivez le taux d’escalade comme pourcentage des rejets envoyés. Une équipe de référence exécutant des formulaires génériques voit typiquement moins de 1 % d’escalade ; l’objectif avec ce skill est de rester à ou en dessous de cette référence, pas au-dessus. Si le taux d’escalade monte, le mapping rubrique-vers-feedback produit un langage qui atterrit mal — réajustez.
  • Taux de re-candidature dans les 12 mois. Candidats refusés via ce skill versus candidats refusés via l’ancien formulaire générique, mesurés sur les 12 prochains mois. Le bénéfice compoundé se manifeste ici, pas dans la dépense modèle ni même dans le fil de rejet lui-même.

Comparaison avec les alternatives

  • Versus les templates de rejet intégrés d’Ashby. Ashby (et Greenhouse, Lever) proposent des templates de rejet avec des champs de fusion pour le nom du candidat et le poste. Ce sont des templates, pas du feedback — les champs de fusion ne tirent pas les preuves des scorecards et il n’y a pas de couche de langage ancrée dans le rubrique. Utilisez les templates Ashby pour les rejets en haut du funnel où le template est honnête. Utilisez ce skill pour les rejets en phase tardive où le template se lit comme un rejet de l’investissement de temps du candidat.
  • Versus les emails de refus génériques. Le refus générique est la bonne réponse dans les cas de juridiction de refus, quand le consentement n’a pas été donné, et quand le rubrique n’a pas fait remonter de spécificité défendable. Le skill écrit le template de refus générique octet-pour-octet dans ces cas. La différence est que le skill fait le choix déterministement selon la politique de juridiction et la sortie du rubrique, plutôt que le recruteur se repliant sur le générique par fatigue.
  • Versus notes rédigées manuellement par le recruteur. Les notes manuelles sont la référence pour les candidats seniors ou recommandés par VIP où le recruteur a le contexte relationnel et le temps. Le skill gagne sa place sur le volume — les 80 % de rejets en phase tardive où le recruteur collerait autrement un formulaire parce que la rédaction manuelle à l’échelle ne s’intègre pas à la journée. Pour le niveau senior, le fichier de notes d’appel donne au recruteur un point de départ structuré pour l’appel, et le recruteur improvise depuis là.
  • Versus un LLM sans fichier rubrique ni liste de blocage. C’est le mode d’échec contre lequel le skill est construit. Un LLM rédigeant depuis les scorecards seuls, sans ancrage au rubrique, sans liste de phrases interdites et sans journal d’audit, produit rapidement du texte de rejet confiant, plausible — et environ un brouillon sur vingt contiendra une citation hallucinnée, un classement comparatif ou un proxy de classe protégée. Les fichiers de checklist du bundle sont ce qui ramène le taux d’échec à quasi-zéro.

Points de vigilance

  • Langage impliquant l’EEOC. Gardé par la liste de phrases interdites dans references/2-banned-phrase-blocklist.md, qui s’exécute comme passe séparée à l’étape 5 sans connaissance des scorecards sous-jacents. Les résultats arrêtent l’exécution avec la chaîne offensante remontée. N’éditez pas la liste de blocage pour faire passer un brouillon — corrigez le rubrique ou le langage des scorecards à la place.
  • Fausses spécificités du LLM. Gardé par la règle « pas de synthèse sans citation verbatim » à l’étape 3. Chaque affirmation dans le brouillon doit tracer vers une chaîne verbatim d’un scorecard validé ou d’un transcript. Pas de chaîne verbatim → la dimension n’est pas remontée. C’est le garde contre le mode d’échec le plus courant du feedback rédigé par LLM — des citations plausibles qu’aucun intervieweur n’a réellement écrites, citées au candidat comme faits.
  • Langage de classement comparatif. Gardé par le mapping rubrique-vers-feedback dans references/1-rubric-to-feedback-mapping.md, qui ne contient pas de formulations comparatives, et par la liste de blocage à l’étape 5 qui le détecte s’il glisse. Le classement comparatif est ce qui transforme un rejet constructif en post Glassdoor.
  • Risque de preuve sélective. Gardé par l’étape 2 (arrêt si le process a moins de deux scorecards validés) et l’étape 3 (refus de faire remonter les dimensions avec un écart-type inter-intervieweurs à ou au-dessus de 1,5). Le désaccord des intervieweurs ne devient pas du feedback candidat.
  • Dérive vers l’envoi automatique. Gardé par l’absence de toute action send dans le skill. Les brouillons sont écrits dans drafts/<candidate-id>.md pour que le recruteur examine, édite et envoie depuis la boîte d’envoi ATS. Le recruteur est le filtre.
  • Préjudice du boilerplate générique. Gardé par le refus de l’étape 3 de faire remonter une dimension sans preuves verbatim — quand le rubrique ne fait rien remonter de sûr à partager, le skill écrit le template de refus générique plutôt que de synthétiser de faibles spécificités. Le refus générique est honnête ; les faibles spécificités sont pires qu’aucune spécificité.
  • PII dans le journal d’audit. Gardé par l’étape 6 n’écrivant que candidate_id_hash (SHA-256), jamais l’ID brut du candidat, le nom ou le texte du scorecard. Le journal d’audit est pour la reproductibilité des runs, pas pour la rétention des données candidats. Les brouillons orientés candidat vivent dans drafts/ sous la politique de rétention propre au recruteur.
  • Dérive de calibrage entre postes et seniorités. Gardé par des YAML de rubrique par poste et par le mapping rubrique-vers-feedback versionné par équipe. Les rejets de direction senior ont besoin d’un cadrage différent des rejets de débutant ; le fichier de mapping est là où cela vit, pas le code du skill.
  • Vie privée et résidence des données. Vérifiez que le skill opère dans le cadre de l’IA enterprise Tier A selon la politique IA. Le contenu des entretiens est sensible ; le candidat n’a pas consenti à ce qu’il soit traité par un modèle tiers sauf si votre politique IA et le langage de consentement de votre collecte de scorecards le couvrent explicitement.

Stack

Le bundle du skill se trouve dans apps/web/public/artifacts/rejection-feedback-claude-skill/ et contient :

  • SKILL.md — la définition du skill
  • references/1-rubric-to-feedback-mapping.md — à remplir par équipe, libellé approuvé par le conseil RH par dimension de rubrique
  • references/2-banned-phrase-blocklist.md — vérifications pré-vol sur le brouillon (ne pas éditer pour faire passer des brouillons biaisés)
  • references/3-output-format.md — les formats littéraux de l’email, du refus générique et des notes d’appel

Outils supposés que vous utilisez déjà : Claude (le modèle), Ashby ou Greenhouse ou Lever (l’ATS dans lequel vivent les scorecards), et optionnellement BrightHire ou Metaview (transcripts d’entretien pour un ancrage de preuves plus riche). Workflow frère qui partage la source du rubrique : le skill de debrief d’entretien.

Files in this artifact

Download all (.zip)