Um flow n8n que reconcilia o plano de headcount da empresa (as contratações aprovadas por trimestre, por equipe, por nível, com datas de início) com as requisições abertas no ATS e as contratações reais registradas no HRIS — e posta um relatório semanal de desvio no Slack com as variâncias linha a linha. Substitui a planilha de “qual é a lacuna?” da sexta-feira do líder recrutador por um digest estruturado que o financeiro consegue validar. Captura os modos de falha que silenciosamente custam um trimestre — reqs abertas contra equipes que já estavam no plano, contratações registradas sob a equipe errada, conversões de prestadores contadas como novas contratações.
Quando usar
- A empresa tem um plano de headcount escrito com granularidade de equipe / nível / data de início (não “vamos contratar 50 no Q3” — “12 em eng, dos quais 4 IC sênior, 2 IC pleno, com 6 começando até a semana 6”).
- Você tem pelo menos dois de: o plano de headcount em uma fonte estruturada (Carta, módulo de plano do BambooHR, planilha do financeiro), reqs abertas no Ashby ou outro ATS, e contratações registradas no HRIS.
- Você está fechando um trimestre e precisa ver a variância do forecast cedo o suficiente para fazer algo a respeito (não no dia anterior à reunião do conselho).
- O plano tem rótulos de equipe que correspondem aos rótulos de equipe do ATS, OU você tem uma tabela de mapeamento que consegue manter.
Quando NÃO usar
- Sem plano estruturado. Um plano que vive em um deck de slides ou em um documento de notas de reunião não é reconciliável. Coloque o plano em uma fonte estruturada primeiro; o flow não lê PowerPoint.
- O gestor de contratação é a fonte de verdade. Se as contratações são registradas em planilhas informais de gestor por gestor, a reconciliação não tem significado porque o “real” é o que cada gestor diz que é. O valor do flow depende do HRIS ser o real.
- Empresas pré-Series-B com menos de 30 contratações por ano. O overhead de reconciliação supera o valor em pequena escala; um líder recrutador e o CEO conseguem manter o plano na cabeça.
- O plano muda semanalmente. Se o plano está sendo constantemente revisado no meio do trimestre, o sinal de variância é dominado pelo ruído de revisão de plano. Estabilize primeiro a cadência de mudanças de plano.
Configuração
- Importe o flow. Importe
apps/web/public/artifacts/headcount-plan-reconciliation-n8n/headcount-plan-reconciliation-n8n.jsonpara sua instância n8n. Cada nó temnotesInFlow: truepara que as notas no canvas expliquem a lógica de reconciliação. - Configure as credenciais. Três obrigatórias:
PLACEHOLDER_PLAN_DB_CRED_ID(acesso de leitura para onde o plano está — Postgres, Snowflake ou um conector Sheets),PLACEHOLDER_ASHBY_CRED_ID(escopo de leitura do Ashby),PLACEHOLDER_HRIS_CRED_ID(escopo de leitura do HRIS; BambooHR / Workday / Rippling têm formato pré-definido, outros precisam de um conector). - Crie o mapeamento de equipe. Um arquivo YAML em
n8n/data/team_mapping.ymlmapeia rótulos de equipe do plano para rótulos de equipe do ATS e do HRIS. Sem isso, o flow não consegue reconciliar entre sistemas. A criação do mapeamento é o custo único; a manutenção contínua é baixa (apenas quando equipes são criadas ou fundidas). - Configure o destino no Slack. Relatórios de variância por equipe para canais por equipe, mais um relatório agregado para um canal de liderança de recrutamento. O nó
Compose Variance Reportdo flow cria o template da mensagem; ajuste conforme a preferência da sua equipe por concisão ou detalhe. - Agende. O padrão é segunda-feira às 8h no horário local. O nó Cron tem
timezonedefinido explicitamente — ajuste para o fuso horário do seu escritório. - Dry-run no último trimestre. Replay contra o plano e os reais do último trimestre. Confirme se os números de variância do flow correspondem ao que o seu parceiro de financeiro tinha no final do trimestre. Se não, o mapeamento de equipe ou a classificação de prestador-vs-CLT está errada.
O que o flow faz
Oito nós. A lógica de reconciliação é determinística; o LLM entra apenas no passo de narrativa de variância (5), e apenas para redigir um resumo legível por humanos dos resultados determinísticos.
- Cron Trigger — Segundas-feiras 8h no fuso horário do escritório (fuso configurado explicitamente nas configurações do nó).
- Fetch Plan — extrai o plano de headcount do trimestre atual da fonte do plano. Schema:
team,level,count,target_start_date,req_status(approved/pending). - Fetch Open Reqs (Ashby) — extrai todas as reqs abertas do Ashby. Schema:
req_id,team,level,opened_at,target_start_date. - Fetch Hires (HRIS) — extrai as contratações feitas neste trimestre do HRIS. Schema:
hire_id,team,level,start_date,employment_type(fte/contractor/intern). - Reconcile — Nó de código. Faz join do plano + reqs + contratações por equipe/nível. Para cada célula (equipe, nível):
- Aberto contra o plano — contagem de reqs abertas vs meta do plano.
- Contratado contra o plano — contagem de contratações CLT vs meta do plano. Prestadores e estagiários NÃO são contados (o bucket de conversão de prestadores do flow é separado).
- Variância —
(plano - contratações - reqs_abertas). Negativo = acima do plano. Positivo = lacuna. - Sinal de drift — sinaliza células onde a variância mudou >3 desde a última execução, sugerindo uma aprovação não planejada ou uma contratação perdida.
- Células de anomalia: reqs abertas sem entrada no plano (req rogue?), contratações registradas em equipes não presentes no plano (mal classificadas?), conversões de prestadores reportadas como novas contratações (contagem dupla?).
- Claude Compose Narrative — pega o output de reconciliação estruturado e escreve um resumo de variância de 200 palavras por canal de equipe + um resumo agregado de 400 palavras para a liderança. O LLM NÃO calcula variâncias; ele narra os resultados determinísticos. O prompt proíbe explicitamente o modelo de inferir causas (“a equipe está atrasada porque…”) porque esse é o trabalho do leitor.
- Post Per-Team — mensagem Slack por canal de equipe com a variância apenas daquela equipe. Postura de privacidade: cada equipe vê apenas seus próprios números.
- Post Aggregate — mensagem Slack para o canal de liderança de recrutamento com a tabela entre equipes. Inclui células de anomalia com um link de volta para os registros de origem.
Realidade de custos
Por execução semanal, com Claude Sonnet 4.6:
- Tokens LLM — a composição de narrativa é o único passo com LLM. Tipicamente 2-4k tokens de input (tabela de reconciliação estruturada + instruções de skill) e 1-2k de output (resumos por equipe + agregado). Cerca de US$0,02-0,04 por execução. Negligível na cadência semanal.
- Custos de API do plano / ATS / HRIS — chamadas de leitura apenas. Dentro das cotas gratuitas para Ashby e a maioria dos provedores de HRIS.
- Tempo do líder recrutador — a vitória. A reconstrução da planilha na sexta à tarde leva 60-120 minutos semanais quando feita com cuidado; ler o digest de segunda leva 5-10 minutos. O maior ganho de tempo é nas células de anomalia, que frequentemente passam despercebidas na reconciliação manual até o final do trimestre.
- Tempo de configuração — 90 minutos incluindo a criação do mapeamento de equipe. O mapeamento de equipe é o custo fixo de configuração.
Métrica de sucesso
Acompanhe três coisas, mensalmente:
- Acurácia do plano no final do trimestre — no final do trimestre, qual foi a diferença entre as contratações projetadas (semana 8 do trimestre) e as contratações reais (semana 13)? Deve cair do drift histórico da empresa para dentro de 5%. O alerta antecipado é o que torna a variância acionável.
- Tempo de resolução de anomalias — tempo de “célula de anomalia sinalizada” até “anomalia resolvida” (corretamente classificada, plano atualizado ou contratação re-atribuída). Deve cair de “descoberta no final do trimestre” para menos de 5 dias.
- Frequência de revisão do plano — com que frequência o plano muda no meio do trimestre. O flow surfacea isso; se as revisões são semanais, a estabilidade do plano em si é o problema e o sinal de variância é ruído.
vs alternativas
- vs dashboards nativos do ATS (Ashby Hiring Plan, Greenhouse Headcount Planning). Os dashboards nativos do ATS funcionam se o ATS é tanto a fonte do plano quanto a fonte do real. Escolha-os se conseguir consolidar. Escolha o flow se seu plano está no sistema do financeiro, suas reqs estão no ATS e suas contratações estão no HRIS — três sistemas que precisam de join e que nenhum dashboard único do ATS consegue ver.
- vs módulos de planejamento de headcount do Carta / Pave / Lattice. O mesmo que acima; se a plataforma é sua fonte única, use-a. O flow é para o caso multi-sistema.
- vs um dashboard construído pelo financeiro. Dashboards de BI construídos pelo financeiro (Looker, Mode, Hex) lidam bem com os joins. Escolha BI se tiver capacidade analítica. Escolha o flow se não tiver, ou se quiser a variância sendo empurrada via Slack em vez de puxada por dashboard.
- vs a planilha manual de sexta-feira. O padrão. Modo de falha previsível: o autor da planilha sai, a metodologia deriva e as variâncias no final do trimestre surpreendem o conselho. O flow é a correção leve.
Pontos de atenção
- Drift de mapeamento de equipe. Proteção: o primeiro passo de reconciliação do flow verifica que toda equipe do plano e toda equipe do ATS e toda equipe do HRIS aparecem no arquivo de mapeamento. Entidades sem mapeamento aparecem como células de anomalia; o relatório as sinaliza explicitamente em vez de descartá-las silenciosamente.
- Contagem dupla de conversão de prestador. Proteção: a consulta ao HRIS filtra por
employment_type = 'fte'. Conversões de prestadores existentes para CLT aparecem em uma seção separada de “conversões neste trimestre”, não na contagem de novas contratações. - Revisão de plano no meio do trimestre apagando a variância. Proteção: o relatório mostra os números do plano atual E os números do plano original do início do trimestre, com o delta surfaceado. O leitor vê ambos os sinais.
- Contratações fora de ciclo (equipes adquiridas, estagiário-para-CLT). Proteção: o flow sinaliza qualquer contratação com
start_dateanterior ao início do trimestre como “fora de ciclo” e a surfacea separadamente. Estes são comuns (acqui-hire, fechamento tardio) e precisam de leitura diferente das contratações regulares do plano. - Privacidade: canais por equipe vendo os números de outras equipes. Proteção: o template de post Slack por equipe referencia apenas a linha de variância dessa equipe. O post agregado (entre equipes) vai apenas para o canal de liderança de recrutamento, não para canais por equipe.
- Fonte do plano desatualizada. Proteção: o flow verifica o
last_updated_atda fonte do plano. Se tiver mais de 14 dias, emite um cabeçalho de aviso no relatório (“Plano atualizado há >14 dias — a variância pode refletir desatualização do plano, não lacuna real”).
Stack
O bundle de artefatos está em apps/web/public/artifacts/headcount-plan-reconciliation-n8n/ e contém:
headcount-plan-reconciliation-n8n.json— o export do flow n8n com todos os nós configurados_README.md— configuração de credenciais, formato de mapeamento de equipe, procedimento de dry-runteam-mapping-template.yml— o YAML de mapeamento de equipe para copiar e preencher
Ferramentas que o workflow assume que você usa: n8n (a orquestração), Ashby (o ATS — troque para Greenhouse substituindo o nó de busca de reqs), Claude (composição de narrativa), Slack (o destino do relatório). O conector HRIS é por empresa.
Conceitos relacionados: workforce planning, recruiting funnel metrics, cost per hire.