Um Claude Skill que pega as anotações de chamadas de referência do recruiter (transcrição bruta ou resumo gravado), o currículo do candidato e a rubrica do cargo, e produz um relatório de referência estruturado: avaliação por dimensão com citações verbatim, contradições entre referências, áreas que as referências não cobriram (para que o recruiter saiba o que perguntar à próxima referência) e uma faixa de confiança geral — nunca uma recomendação de contratar/não contratar. Substitui o relatório manual de 90 minutos do recruiter por um loop de revisão e edição de 15 minutos, preservando a auditabilidade dos dados de referência.
Quando usar
Você completou duas ou mais chamadas de referência e tem ou uma transcrição (gravações de chamadas do Fathom, Gong ou notas detalhadas) ou resumos das chamadas.
O cargo tem uma rubrica escrita (a mesma usada em entrevistas estruturadas) para que a síntese possa ser ciente das dimensões.
Você quer as alegações das referências auditáveis posteriormente — toda afirmação no relatório deve rastrear a uma citação verbatim das anotações da chamada, com o nome da referência e o timestamp da chamada.
Quando NÃO usar
Gerar uma recomendação de contratar/não contratar. O skill produz uma avaliação estruturada com confiança por dimensão. A decisão de contratação fica com o hiring manager e o debrief de entrevista. Conectar o output do skill a uma decisão dispara as mesmas preocupações de tomada de decisão automatizada que a rejeição automática no screening.
Substituir a própria chamada de referência. O skill processa anotações; não entrevista referências. Enviar email automático para referências com um formulário (“questionário de referência gerado por IA”) produz dados de baixa qualidade e erode a disposição da referência de falar candidamente em chamadas futuras.
Gravar chamadas sem consentimento. A maioria dos estados dos EUA é one-party consent para o recruiter gravar; alguns (CA, IL, FL, MD, MA, MI, MT, NH, PA, WA) são two-party. A UE segue o GDPR — chamadas gravadas precisam de uma base legal explícita. O skill processa anotações independentemente de como foram capturadas; não autoriza gravação.
Referências de bastidores que o candidato não aprovou. Postura de consentimento diferente, workflow diferente, exposição legal diferente.
Setup
Faça o drop do bundle. Coloque apps/web/public/artifacts/reference-check-summary-skill/SKILL.md no seu diretório de skills do Claude Code.
Reutilize a rubrica do cargo. O skill lê o mesmo arquivo de rubrica usado para triagem e entrevistas estruturadas. Se sua equipe não tem uma rubrica compartilhada, o pack de banco de perguntas de entrevista é o pré-requisito.
Configure o registro de consentimento. O skill escreve um campo consent_check por referência (a chamada foi gravada? o candidato autorizou a referência? a referência consentiu com o processamento das anotações?). Se alguma resposta for no ou unknown, o relatório é sinalizado com um cabeçalho de aviso de consentimento.
Execute em seco em uma contratação fechada. Processe as referências de um candidato contratado no trimestre passado. Compare o relatório do skill com o seu próprio relatório contemporâneo. Ajuste as âncoras da rubrica se o skill pondera dimensões de forma diferente da equipe.
O que o skill realmente faz
Cinco passos. A ordem importa: a fundamentação em consentimento e rubrica acontece antes da síntese, porque uma síntese sem fundamentação em consentimento ou rubrica é apenas uma re-narração das chamadas.
Valide o consentimento. Verifique consent_check por referência. Consentimento ausente ou unknown → emita um cabeçalho de aviso no relatório (“Consentimento não registrado para referência R2 — verifique antes de compartilhar o relatório”) e continue. Não bloqueie; o recruiter pode saber que o consentimento foi dado verbalmente e esqueceu de registrar.
Fundamente na rubrica. Leia a rubrica do cargo. As dimensões de síntese são as dimensões da rubrica, não genéricas (“comunicação”, “liderança”). Se a rubrica tem skill_match, level_fit, ownership_signal, team_collaboration, esses são os cabeçalhos do relatório.
Síntese por dimensão. Para cada dimensão da rubrica, extraia toda citação das anotações da chamada que incida sobre a dimensão. Agrupe por referência. Marque cada citação com força (strong-positive, weak-positive, neutral, weak-negative, strong-negative). As citações são verbatim das anotações; paráfrases não são permitidas porque retiram a auditabilidade que o skill existe para fornecer.
Surfaceie contradições e lacunas. Identifique dimensões onde duas referências divergem (uma strong-positive, outra weak-negative) e surfaceie a contradição explicitamente. Identifique dimensões que as referências não cobriram (nenhuma citação encontrada) e surfaceie-as como lacunas para que o recruiter saiba o que perguntar à próxima referência, ou em que a etapa de ranking da rubrica tem que se apoiar.
Faixa de confiança por dimensão, sem recomendação geral. Para cada dimensão, retorne uma faixa de confiança: high (múltiplas referências convergem com strong-positive ou strong-negative), medium (misto mas convergente), low (referência única ou contradição), not assessed. Não retorne um score geral de contratar/não contratar. A decisão fica com o hiring manager.
Realidade de custos
Por relatório de candidato (tipicamente 2-4 referências, 60-90 minutos de tempo total de chamada, 4-8K palavras de anotações), no Claude Sonnet 4.6:
Tokens de LLM — tipicamente 12-20k de input (anotações + rubrica + instruções do skill) e 2-4k de output (relatório estruturado). Ao preço de tabela do Sonnet 4.6, aproximadamente $0,10-0,18 por candidato. Uma equipe executando 20 ciclos de referência por mês gasta $2-4 em custo de modelo.
Tempo do recruiter — o ganho. Escrever manualmente um relatório de referência estruturado é 60-90 minutos por candidato. Revisar o relatório do skill e editar o tom ou adicionar contexto é 15-25 minutos. A maior economia de tempo fica na seção de contradições, que um recruiter muitas vezes perde numa primeira leitura das próprias anotações.
Tempo de setup — 30 minutos uma vez para a integração da rubrica e o formato de verificação de consentimento. A rubrica de cada cargo é reutilizada, então o setup marginal por cargo é zero.
Métrica de sucesso
Rastreie dois números:
Satisfação do hiring manager com o relatório — um score de 1-5 que o hiring manager dá após o debrief, sobre se o relatório surfaceou as dimensões certas e não enterrou as contradições. Deve ficar em 4+ numa rubrica calibrada.
Tempo do ciclo de referência — tempo real desde “última referência completada” até “hiring manager tem o relatório”. Deve cair de 1-2 dias para menos de 2 horas.
Versus as alternativas
Versus relatório escrito manualmente. Manual é a escolha certa para as contratações de maior risco (executivo, voltado ao board) onde a voz narrativa do recruiter é o entregável. O skill ganha seu custo de setup nos 80% das contratações onde o artefato estruturado é o que a equipe precisa.
Versus automação de referência nativa do ATS (Greenhouse Reference Check, Crosschq, SkillSurvey). Esses produtos são donos da coleta de referências (referências no estilo questionário via email). Escolha-os se sua empresa prefere referências assíncronas por questionário. Escolha este skill se sua equipe prefere chamadas ao vivo e o gargalo é a síntese depois. Os dois são complementares; o skill também funciona no output de questionário.
Versus ChatGPT no estilo “resuma essas anotações de referência”. O chat genérico retorna um parágrafo que lê bem e enterra as contradições. O Skill é estruturalmente diferente: força agrupamento por dimensão, exige citações verbatim, recusa autorizar uma recomendação geral.
Pontos de atenção
Viés de hindsight em referências de alta confiança.Guarda: a estrutura do relatório força agrupamento por dimensão em vez de narrativo liderado pela referência, o que dificulta que uma referência com opinião forte domine a leitura.
Citações alucinadas.Guarda: o skill é restrito à extração verbatim. Citações que não aparecem nas anotações da chamada verbatim são proibidas; o prompt explicitamente orienta o modelo a omitir uma dimensão se nenhuma citação puder ser citada em vez de parafrasear.
Peso excessivo de uma referência.Guarda: as contradições são surfaceadas explicitamente, com ambas as citações lado a lado. A lógica de faixa de confiança do relatório rebaixa para low nas dimensões onde as referências divergem, o que impede uma leitura confiante mas equivocada.
Recomendação implícita de contratação por ordenação.Guarda: o relatório ordena as dimensões pela rubrica, não pelo entusiasmo da referência. Citações strong-positive não sobem para o topo; ficam na dimensão a que pertencem.
Exposição de consentimento e gravação.Guarda: o campo de verificação de consentimento por referência é input obrigatório; consentimento ausente dispara um cabeçalho de aviso. O skill processa anotações independentemente do status de gravação, mas não absolve o recruiter da obrigação de consentimento subjacente.
Viés na rubrica subjacente carregando.Guarda: se a rubrica tem dimensões que não passam numa verificação de imparcialidade (“fit cultural” sem âncoras, pontuação por tier de escola), a síntese herda o viés. Execute a rubrica pelo enquadramento do auditor de slate diversificado para o pool do cargo primeiro.
Stack
O bundle do skill fica em apps/web/public/artifacts/reference-check-summary-skill/ e contém:
SKILL.md — a definição do skill
references/1-report-format.md — o template de output literal (cabeçalhos por dimensão, escala de faixa de confiança, seção de contradições)
references/2-consent-checklist.md — o esquema de verificação de consentimento e regras de cabeçalho de aviso
Ferramentas que o workflow assume que você usa: Claude (o modelo). Opcional: Fathom ou Gong para gravação de chamadas; Ashby para o registro do candidato. Para o workflow paralelo de debrief de entrevista, veja o skill de resumo de debrief de entrevista.
---
name: reference-check-summary
description: Take reference-call notes (transcript or summary) plus the role rubric, and produce a structured per-dimension reference report with verbatim quotes, contradictions surfaced, and per-dimension confidence bands. Never authors an overall hire/no-hire recommendation — the decision sits with the hiring manager.
---
# Reference-check synthesis
## When to invoke
Use this skill when a recruiter has completed two or more reference calls and has notes (transcript, recorded call summary, or detailed manual notes) plus the role rubric. Take the notes plus rubric as input and return a structured Markdown report.
Do NOT invoke this skill for:
- **Generating a hire/no-hire recommendation.** This skill produces structured assessment with confidence per dimension. The hire decision sits with the hiring manager and the interview debrief.
- **Replacing the reference call itself.** This skill processes notes; it does not interview references. AI-generated reference questionnaires erode the reference's willingness to speak candidly.
- **Recording calls without consent.** The skill processes notes regardless of recording status, but does not authorize recording. Two-party-consent jurisdictions and EU GDPR have explicit lawful-basis requirements.
- **Backchannel references the candidate did not approve.** Different consent posture, different workflow.
## Inputs
- Required: `notes_dir` — path to a directory of per-reference Markdown files. Each file: `R1.md`, `R2.md`, etc., with the reference's name, role, relationship, call date, and notes.
- Required: `rubric` — path to the role rubric file. The rubric's dimensions become the report's headings.
- Required: `consent_log` — path to a per-reference consent record (see `references/2-consent-checklist.md`).
- Optional: `candidate_resume` — path to the resume. Used to ground statements like "the reference confirmed the deal mentioned on the resume" rather than re-narrating the resume.
## Reference files
Always read these from `references/`:
- `references/1-report-format.md` — the literal output format. Per-dimension headings come from the rubric, not from this file.
- `references/2-consent-checklist.md` — the consent-check schema and the warning-header rules.
## Method
Five steps, in order.
### 1. Validate consent
Open `consent_log`. For each reference, check four fields: `candidate_authorized` (the candidate gave the recruiter permission to call this person), `recording_consent` (if the call was recorded), `notes_processing_consent` (the reference was told the notes might be processed by AI), `jurisdiction` (which state / country the reference was in during the call).
If any field is `unknown` or `no`, do NOT halt — emit a warning header at the top of the report and continue. The recruiter may have collected consent verbally and forgotten to log it; the warning surfaces the gap for them to verify before sharing the report.
If `recording_consent: no` and `jurisdiction` is in `[CA, IL, FL, MD, MA, MI, MT, NH, PA, WA]` or any EU country, the warning header upgrades to a halt: "Two-party consent jurisdiction; recording without consent is illegal. The skill will not process the notes from this reference. Verify consent and re-run with `consent_log` updated, or omit this reference."
### 2. Ground in the rubric
Read the rubric. The synthesis dimensions ARE the rubric dimensions, not generic ones. If the rubric has `skill_match`, `level_fit`, `ownership_signal`, `team_collaboration`, those are the report's section headings.
If the rubric has dimensions that fail a fairness check (school-tier scoring, "culture fit" without anchors, employment-gap penalties), surface them but proceed — the rubric is upstream of this skill, and the right fix is at the rubric layer, not by silently dropping dimensions here.
### 3. Per-dimension synthesis
For each rubric dimension, read every reference's notes and extract every quote that bears on the dimension. A quote is a verbatim string from the notes; paraphrasing is not allowed. If you cannot extract a verbatim quote for a reference's view on a dimension, the cell stays empty and the dimension's confidence band reflects the gap.
Tag each quote with strength on a 5-level scale:
- `strong-positive` — explicit named outcome, clear ownership, the reference stakes their credibility on it.
- `weak-positive` — observed positive behavior but no named outcome or scope.
- `neutral` — descriptive without judgment.
- `weak-negative` — observed gap or hesitation, qualified.
- `strong-negative` — explicit disqualifying behavior named, with scope.
### 4. Surface contradictions and gaps
For each dimension, compare the per-reference assessments. If two references diverge by ≥2 levels (e.g. one `strong-positive`, one `weak-negative`), surface the contradiction explicitly with both quotes side by side. Do NOT average or smooth — the contradiction IS the signal.
For each dimension, identify gaps: dimensions no reference covered. List them in a "Coverage gaps" section. The recruiter uses this to decide what to ask the next reference, or what the rubric ranking step has to lean on instead.
### 5. Confidence band per dimension
For each dimension, return a confidence band:
- `high` — multiple references converge with strong-positive or strong-negative quotes.
- `medium` — references mostly converge, weak-positive / weak-negative quotes, no contradictions.
- `low` — single reference, contradiction surfaced, or only weak-strength quotes.
- `not assessed` — no reference covered the dimension.
Do NOT return an overall hire/no-hire score. The report ends after the last dimension's confidence band.
## Output format
See `references/1-report-format.md` for the literal template. The shape is:
```
# Reference report — {Candidate name} — {Role}
[CONSENT WARNING HEADER if any reference's consent is missing]
## References
| ID | Name | Role | Relationship | Call date |
|---|---|---|---|---|
| R1 | ... | ... | ... | ... |
## Per-dimension synthesis
### {Dimension 1 from rubric}
**Confidence: {band}**
| Reference | Strength | Quote |
|---|---|---|
| R1 | strong-positive | "..." |
| R2 | weak-positive | "..." |
[CONTRADICTION block if R1 and R2 diverge ≥2 levels]
### {Dimension 2 from rubric} ...
## Coverage gaps
Dimensions no reference addressed:
- {dimension X} — recruiter to ask R3 or rely on rubric ranking step.
## Provenance
- Rubric: `{path}` — SHA `{short}`
- Notes: `{notes_dir}` — N references processed
- Generated: `{ISO timestamp}`
```
## Watch-outs
- **Hallucinated quotes.** *Guard:* the prompt forbids paraphrasing; quotes must appear verbatim in the input notes. If you cannot find a verbatim quote for a reference's view on a dimension, the cell is empty and the confidence band drops.
- **Hindsight bias.** *Guard:* the report is structured per-dimension, not per-reference. A strongly opinionated reference cannot dominate the narrative because the report doesn't have a narrative — it has a table per dimension.
- **Implicit recommendation via ordering.** *Guard:* dimensions are ordered by rubric, not by reference enthusiasm. Strong-positive quotes do not float to the top.
- **Consent gaps.** *Guard:* warning header on missing consent; halt on illegal recording in two-party jurisdictions.
- **Bias inheritance from rubric.** *Guard:* surfaced but not silently dropped — the right fix is at the rubric layer, upstream of this skill.
# Reference report format
This is the literal output template the skill writes. Every report follows this shape so downstream consumers (hiring manager, recruiting coordinator, audit reviewer) read predictable structure.
## Template
```markdown
# Reference report — {Candidate name} — {Role title}
Generated: {ISO timestamp} · Rubric SHA: {short hash} · Skill version: 1.0
{CONSENT WARNING HEADER — present only if any reference has missing consent — see consent-checklist.md}
## References
| ID | Name | Role | Relationship to candidate | Call date | Duration |
|---|---|---|---|---|---|
| R1 | Jamie Liu | VP Eng, Acme Fintech | Direct manager (2y) | 2026-04-28 | 45m |
| R2 | Sam Park | Senior IC peer, Acme Fintech | Cross-team collaborator (1y) | 2026-04-30 | 30m |
## Per-dimension synthesis
### Skill match — production Go and distributed-systems experience
**Confidence: high**
| Reference | Strength | Quote |
|---|---|---|
| R1 | strong-positive | "Owned the entire payments routing rewrite in Go — moved from synchronous to event-driven, took our P99 from 800ms to 180ms over Q3." |
| R2 | strong-positive | "When we needed someone to actually understand the consensus layer in our state machine, Jamie was the only person who could explain why the failover semantics were broken." |
### Level fit — Senior IC scope, cross-team influence
**Confidence: medium**
| Reference | Strength | Quote |
|---|---|---|
| R1 | strong-positive | "Was effectively the tech lead on the routing team — running the design reviews, mentoring two juniors." |
| R2 | weak-positive | "Came over to our team for the integration work — drove the meetings but it was a smaller scope, just three of us." |
*Note: confidence is medium because R2's scope was a single integration; R1's scope was a multi-quarter team-leadership signal. The strong-positive on team-lead scope only comes from R1.*
### Team collaboration — handles disagreement well
**Confidence: low**
| Reference | Strength | Quote |
|---|---|---|
| R1 | strong-positive | "Pushed back on a design I'd already approved, with data — turned out he was right and we caught a P0 before it shipped." |
| R2 | weak-negative | "Sometimes the pushback comes across as harsh in the moment — I had to mediate once between Jamie and one of our front-end folks." |
**⚠️ Contradiction surfaced.** R1 and R2 diverge by 2 levels on this dimension. R1's framing is that the pushback is principled and outcome-positive; R2's framing is that the delivery has interpersonal cost. Recruiter to surface this in the hiring-manager debrief.
### Ownership signal — sees work through to outcome
**Confidence: high**
| Reference | Strength | Quote |
|---|---|---|
| R1 | strong-positive | "Stayed on the routing project through the post-launch operational phase — wasn't the kind of engineer who hands off after launch." |
| R2 | strong-positive | "When the integration work hit a snag with our auth team, Jamie went and unblocked it himself rather than escalating." |
## Coverage gaps
Dimensions the references did not address (no verbatim quote found):
- **Response to ambiguity** — neither reference described a situation where the candidate had to act under unclear requirements. Recruiter to ask R3, or rely on the structured-interview step that probes this.
- **Customer-facing scope** — no quotes on the candidate's interaction with customers or with non-technical stakeholders. If the role requires customer-facing work, this gap matters.
## Provenance
- Rubric: `data/rubrics/senior-backend-engineer.json` — SHA `a3f2b1c4d5e6f7a8`
- Notes: `data/references/jamie-liu/` — 2 references processed
- Consent log: `data/references/jamie-liu/consent.json`
- Generated by: `reference-check-summary` skill v1.0 on Claude Sonnet 4.6
- Generated at: 2026-05-03T14:00:00Z
```
## Notes on the template
- **No overall hire/no-hire recommendation.** The report ends after the last per-dimension table and the coverage-gaps section. The decision sits with the hiring manager.
- **Dimension order matches the rubric.** The skill does NOT reorder by reference enthusiasm or by confidence band. The rubric's ordering reflects the team's prioritization; the report respects that.
- **Quotes are verbatim.** No paraphrasing, no smoothing. If a reference said "kinda harsh" the report says "kinda harsh," not "somewhat harsh."
- **Contradictions surface inline.** A separate "contradictions" section at the end is harder to read than inline notes per dimension.
# Consent checklist for reference processing
The reference-check-summary skill requires a per-reference consent log as input. This file documents the schema, the warning-header rules, and the halt conditions.
## Per-reference consent record
For each reference, the consent log contains:
```json
{
"reference_id": "R1",
"candidate_authorized": true,
"recording_consent": true,
"notes_processing_consent": true,
"jurisdiction": "US-NY",
"recorded": true,
"consent_collected_at": "2026-04-28T14:00:00Z",
"consent_collected_by": "recruiter-email@firm.com"
}
```
### Field definitions
- `candidate_authorized` — the candidate told the recruiter "you can call this person." Without this, the reference call should not have happened. Halt if any reference's value is `false`.
- `recording_consent` — if the call was recorded, the reference consented to recording. The skill needs this only if `recorded: true`.
- `notes_processing_consent` — the reference was told that the notes from the call may be processed by AI to generate a structured report. This is the explicit consent for the skill's processing path under GDPR Art. 6 lawful-basis requirements.
- `jurisdiction` — the state or country the reference was physically in during the call. This determines recording-consent law.
- `recorded` — whether the call was recorded.
## Warning-header rules
If any reference's consent record is missing or has `unknown`/`null` values, the report's top-of-page warning header reads:
```
⚠️ CONSENT WARNING
The following references have incomplete consent records:
- R2: notes_processing_consent is unknown.
- R3: candidate_authorized is unknown.
Verify consent before sharing this report. The skill processed the
notes regardless of the gap; the warning surfaces the gap for the
recruiter to confirm with the candidate and reference.
```
The warning is informational. The skill continues to the report. The recruiter is responsible for either confirming the missing consent (and updating the log for next time) or omitting the affected reference from the shared report.
## Halt conditions
Halt processing for a reference (skip it, do not include in the report) when:
1. **`candidate_authorized: false`** — the reference call should not have happened. Including the reference in the report would compound the underlying consent failure. Surface to the recruiter as a gap to address.
2. **`recorded: true` AND `recording_consent: false` AND `jurisdiction` is in a two-party-consent jurisdiction.** Two-party-consent jurisdictions (CA, IL, FL, MD, MA, MI, MT, NH, PA, WA in the US, plus all EU countries under GDPR) make recording without consent illegal. Processing the recorded notes compounds the violation. The skill refuses to process the reference and surfaces the issue to the recruiter.
```
HALT: R2 was recorded in CA without consent. Recording is illegal
in CA without two-party consent. The skill will not process this
reference's notes. Either delete the recording and re-interview the
reference (with consent this time), or omit the reference from the
report.
```
3. **`notes_processing_consent: false`** — the reference explicitly declined to have notes processed by AI. The skill respects that. The reference's notes can still inform the recruiter's own write-up, but they are not run through the skill.
## Why this matters
GDPR Art. 6 requires a lawful basis for processing personal data. A reference's notes ARE personal data (the reference's, and the candidate's). The lawful basis for AI processing is most commonly explicit consent or legitimate interest with a balancing test. In either case, the reference must have been informed.
NYC LL 144 and the EU AI Act focus on the candidate side, but reference data falls in the same processing pipeline. A defensible recruiting AI posture handles consent on both sides.
The skill cannot enforce that the recruiter actually collected consent. What it can enforce is that the consent is logged before processing, and that missing or contradictory consent surfaces to the recruiter rather than getting buried.
## What goes in the consent log when you didn't collect consent properly
The honest answer: omit the reference from this skill's processing. Use your own write-up. The skill's auditability comes from the consent record being trustworthy; populating it with `unknown` to make the skill run defeats the purpose.
Update your reference-call intake script to collect the four fields above as part of the call opening. The marginal time cost is 30 seconds per call.