Avaliador de Ofertas de Emprego

Avalia uma oferta de emprego ou mensagem de recrutador (LinkedIn, e-mail, headhunter) para o usuário. Entrevista sobre o pacote atual, estima o salário líquido efetivo, verifica a adequação ao currículo, pontua condições, sugere perguntas ao recrutador e rascunha a resposta.

O que é Avaliador de Ofertas de Emprego?

Esta skill realiza uma triagem completa de ofertas de emprego e mensagens de recrutadores. Ela primeiro carrega o contexto do usuário (currículo, perfil, ofertas passadas) e realiza uma entrevista para obter dados financeiros e contratuais atuais e da oferta. O núcleo da skill é a comparação do salário líquido efetivo, calculando impostos, seguridade social e custos de autônomo para diferentes países (Espanha e EUA com módulos dedicados, outros com estimativas manuais). Em seguida, avalia a adequação do candidato à vaga com base no currículo, pontua as condições (remoto, benefícios, carreira) e sinaliza práticas comuns de recrutadores. Por fim, a skill fornece um veredito, até três perguntas-chave para o recrutador e um rascunho de resposta, registrando a oferta em um arquivo de log. É útil sempre que o usuário colar uma mensagem de recrutador, uma descrição de vaga ou perguntar 'esta vaga vale a pena'.

Funciona com✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/MartinezAgullo/agent-skills-toolbox/tree/HEAD/skills/job-offer-evaluator

Installed? Explore more Produtividade e Colaboração skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Avaliador de Ofertas de Emprego faz?

O usuário recebe mensagens de recrutadores regularmente e deseja a mesma triagem a cada vez: a vaga é adequada, as condições reais (líquidas) são melhores do que as atuais, o que perguntar e como responder. Valores brutos em diferentes tipos de contrato e países enganam, portanto o núcleo desta skill é uma comparação do salário líquido efetivo construída a partir de fatos fornecidos pelo usuário, nunca de fatos que você lembra ou assume.

Etapa 0: Carregar contexto

Os dados pessoais residem fora da skill, portanto atualizar, copiar ou publicar a skill nunca os expõe ou sobrescreve. Resolva a pasta de dados <data_dir> uma vez, nesta ordem:

  1. $JOB_SEARCH_DIR, se definido.
  2. job-search/ dentro da pasta de configuração do agente que você está executando: ~/.claude/job-search/ para Claude Code, ~/.codex/job-search/ para Codex CLI, ~/.gemini/job-search/ para Gemini CLI. Para qualquer outro agente, use a pasta de nível de usuário equivalente.

Nunca use uma pasta dentro da skill ou dentro de um repositório de projeto. Se <data_dir> não existir, crie-a, copie templates/profile.md e templates/offers_log.md desta skill para ela e informe ao usuário qual caminho você usou.

  1. Currículo. Leia cv_path de <data_dir>/profile.md. Se for ?, estiver faltando ou o arquivo não for encontrado, peça ao usuário um currículo (caminho ou texto colado) e armazene o caminho no perfil; não avalie a adequação sem um. O currículo é a fonte da verdade para habilidades e senioridade; não invente experiência.
  2. LinkedIn (opcional, melhor esforço). O LinkedIn geralmente bloqueia leituras automatizadas atrás de uma tela de login, então tente a URL do linkedin do perfil uma vez, se houver, e se estiver bloqueada, ignore-a silenciosamente. Só peça ao usuário um perfil colado ou exportação em PDF quando algo na oferta depender disso (por exemplo, alegações do recrutador sobre o perfil dele, ou o currículo não tiver algo que a vaga precisa). O currículo continua sendo o principal; o LinkedIn é apenas uma verificação cruzada do que o recrutador viu.
  3. Perfil. Leia <data_dir>/profile.md (consulte a Etapa 1).
  4. Ofertas passadas. Folheie <data_dir>/offers_log.md. Mencione se a mesma empresa ou recrutador aparecer novamente, ou se a remuneração se compara utilmente com ofertas anteriores.

Etapa 1: Confirmar ou entrevistar (pergunte, não assuma)

Os valores salariais e as condições mudam, e uma suposição errada arruina silenciosamente a comparação.

  • Perfil tem valores e last_verified existe: mostre um resumo compacto dos detalhes armazenados e peça ao usuário para confirmá-los ou dizer o que mudou. Faça uma pergunta apenas para campos marcados com ? ou que eles corrijam. Se last_verified for mais antigo que 6 meses, diga isso e analise os campos com mais cuidado.
  • Perfil está vazio ou ausente (primeira execução): execute a entrevista completa abaixo, depois escreva as respostas em <data_dir>/profile.md e defina last_verified como hoje.
  • Após qualquer alteração, atualize profile.md (mantenha o layout existente) para que a próxima execução seja uma confirmação rápida.

Envie as perguntas como uma mensagem agrupada (use sua ferramenta de perguntas estruturadas se o agente tiver uma), juntamente com quaisquer detalhes da oferta que estiverem faltando.

1. Base financeira e estrutura contratual

  • Salário base bruto atual e bônus/variável anual alvo (e com que confiabilidade ele é pago).
  • Tipo de contrato: indefinido/temporário espanhol, EOR, autônomo/freelancer, W2 vs 1099 dos EUA, outro.
  • Parcelas de pagamento (12 ou 14). Isso altera o fluxo de caixa mensal, não o líquido anual, mas é importante ao comparar valores mensais.

2. Localização e contexto fiscal

  • País e cidade/região onde são tributados agora, e onde seriam tributados na oferta (as taxas diferem por comunidade autônoma espanhola, cantão suíço, estado dos EUA etc.).
  • Qualquer regime ou dedução especial (regime Beckham/impatriado, deficiência, dependentes, hipoteca, deduções regionais).

3. Benefícios e custos do próprio bolso

  • Benefícios não monetários atuais: seguro de saúde privado, contrapartida de pensão, vale-refeição, auxílio-transporte, ações, orçamento de treinamento, cada um com um valor anual aproximado em EUR.
  • Custos relacionados ao trabalho que eles mesmos pagam: deslocamento não compensado, equipamento, coworking.

4. Estilo de trabalho e impacto nos custos

  • Modelo de trabalho atual (100% remoto, híbrido com dias por semana, presencial) e seu modelo preferido com quanto escritório tolerariam.
  • Se híbrido ou presencial: custo mensal de deslocamento e tempo semanal de deslocamento.

5. Limiar de decisão

  • O aumento líquido mínimo que tornaria a mudança válida, por exemplo, "+15% líquido efetivo" (sugira cerca de +15-20% para uma mudança de emprego, maior para B2B ou ofertas menos estáveis, e deixe-os substituir). Pergunte sobre impeditivos definitivos (presencial, somente contratante, setor específico).

Por oferta (nunca armazenada no perfil): para B2B/por hora, horas faturáveis realistas por ano e lacunas esperadas entre contratos; para pagamento não-EUR, a taxa de câmbio (a Etapa 2 a obtém).

Etapa 2: Comparação de salário líquido efetivo

Compare o líquido, não o bruto, para o emprego atual e a oferta. Líquido significa após seguridade social, imposto de renda e, para freelancers, os custos de trabalho autônomo (cuota de autónomos, gestor, seguro). Em seguida, adicione o valor anual dos benefícios não monetários e subtraia os custos de trabalho do próprio bolso para obter um líquido efetivo.

  • Câmbio: para ofertas não-EUR, execute python3 scripts/fetch_fx.py USD (taxa do BCE via frankfurter.dev) e use essa taxa, citando a data. Se a consulta falhar, peça uma taxa ao usuário.
  • Execute o script: python3 scripts/net_compare.py (veja --help). O emprego atual é tributado em --country, a oferta em --offer-country (padrão: o mesmo). Ele recebe o tipo de contrato atual, bruto (incluindo variável esperada), benefícios, custos extras, ajuste regional e detalhes da oferta, e imprime o líquido, líquido efetivo (em EUR), delta e, com --threshold, se o aumento ultrapassa a barreira. --irpf-shift (alias --region-adjust) é o ajuste regional para o país atual e --offer-region-adjust para o país da oferta; diga o que você passou.
    • Espanha (ES): o ajuste é uma mudança de pontos percentuais do IRPF (aproximadamente -0,01 a -0,015 para regiões com impostos baixos como Madrid, +0,01 para regiões com impostos mais altos, 0 se não tiver certeza).
    • Estados Unidos (US): apenas federal, contribuinte único, dedução padrão, sem 401(k)/HSA, sem dedução QBI. O ajuste é a taxa média de imposto de renda estadual do usuário (0 para TX/FL/WA, pergunte o estado caso contrário). Para trabalho 1099, inclua seguro de saúde pago por conta própria em --expenses; para ofertas W-2, coloque a cobertura de saúde do empregador e a contrapartida 401(k) em --offer-benefits.
    • Moedas: os valores da oferta estão na moeda do país da oferta. --fx converte a moeda do pagamento para essa moeda (pagamento em USD tributado na Espanha: --fx 0.89), e --to-eur converte a moeda do país da oferta para EUR (pagamento em USD tributado nos EUA: --fx 1 --to-eur 0.89). Benefícios e custos extras são sempre em EUR.
  • Módulos fiscais: as regras do país residem em scripts/tax/<cc>.py com seus números em data/tax_<cc>.json; Espanha (ES) e Estados Unidos (US) existem. Para outros países (Suíça, Reino Unido etc.) estime o líquido manualmente a partir das faixas de imposto atuais e regras de seguridade social (pesquisa na web para valores do ano atual), mostre as principais etapas e classifique como uma estimativa aproximada. Se ofertas desse país continuarem aparecendo, sugira construir um módulo (references/adding-a-country.md).
  • Verificação de desatualização: net_compare.py imprime um WARNING quando os dados fiscais estão desatualizados ou não verificados. Quando você o vir, informe o usuário e ofereça o procedimento de atualização abaixo antes de confiar nos números.
  • Declare sempre as premissas usadas: taxa de câmbio, horas faturáveis, despesas, região, ano fiscal. Diga que o resultado é uma estimativa e que um gestor/consultor fiscal deve confirmá-lo para uma decisão real.
  • Para B2B, o líquido ainda ignora o que um funcionário recebe de graça: férias remuneradas, licença médica remunerada, proteção contra desemprego, acúmulo de pensão, contribuições do empregador. Forneça o "equivalente a salário bruto de funcionário" e sinalize riscos contratuais (cliente único, termos de aviso prévio, risco de falso autônomo, exclusividade).

Etapa 3: Adequação e condições

Adequação (CV vs. vaga). Pontue de 0 a 10 com uma linha explicativa. Liste correspondências (com evidência do CV), lacunas (reais vs. meramente não listadas) e o provável dia a dia real e senioridade em comparação com a função atual. Os títulos de cargo dos recrutadores geralmente escondem trabalho mais restrito do que anunciam, portanto, diga qual é provavelmente a função.

Condições (prioridade: salário líquido > remoto > trajetória). Use references/benefits-checklist.md para a lista de benefícios e marque cada item como declarado / padrão legal / desconhecido:

  • Remuneração e benefícios (saúde, contrapartida de aposentadoria, tempo livre remunerado, licença médica, licença parental), especialmente para funções fora da Espanha, onde os padrões legais diferem.
  • Modalidade de trabalho em relação à preferência declarada, além de sobreposição de fuso horário e viagens.
  • Trajetória de carreira: caminho de crescimento, propriedade, reputação da empresa e do cliente, se o trabalho constrói em direção aos target_roles_and_topics no perfil ou se afasta deles, estabilidade do vínculo.

Sinais do lado do recrutador. Leia a mensagem em si usando references/recruiter-signals.md (cliente final oculto, abordagem modelada, salários "até", forma de contrato vs. função, escopo vs. título) e liste as bandeiras e bons sinais encontrados. Opcionalmente, pesquise na web a reputação da empresa e do cliente final.

Etapa 4: Veredito, perguntas, resposta

  • Veredito: Perseguir, Perguntar primeiro ou Recusar, com os 2-3 motivos que o decidiram, explicitamente verificados em relação ao limiar e impeditivos do usuário.
  • Perguntas para o recrutador: apenas as 2-3 cujas respostas poderiam inverter a decisão (geralmente estrutura salarial real e condições de tempo livre remunerado, escopo e equipe reais, duração do contrato e condições de rescisão). Sem preenchimento genérico.
  • Rascunho de resposta, assim que a decisão estiver clara ou o usuário a declarar, no idioma do recrutador, curto, na voz do usuário. Recusar: agradeça, opcionalmente uma linha de motivo. Pedir detalhes: interesse condicional mais as perguntas; não revele o salário atual (ofereça uma faixa alvo, se útil). Se ainda indeciso, ofereça ambos os rascunhos brevemente. Um parágrafo é uma linha (sem quebras forçadas) e use travessões com moderação.

Etapa 5: Registrar a oferta

Após o veredito, acrescente uma linha a <data_dir>/offers_log.md (Data, Empresa e cliente final, Função, Contrato, Remuneração oferecida, Delta líquido efetivo, Adequação, Veredito, Resultado/comentários). Pergunte antes de escrever se o usuário não disse para registrá-la. Mais tarde, quando ele lhe disser o que aconteceu (respondeu, recusou, entrevistou), atualize o Resultado dessa linha.

Atualização anual de dados fiscais

Cada data/tax_<cc>.json contém a escala de imposto de renda desse país, taxas e limites de seguridade social ou folha de pagamento e deduções (a Espanha também inclui a tabela de cuota de autónomos), com tax_year, verified_on e verified_by. Os números ficam desatualizados todo mês de janeiro, portanto atualize quando o script avisar, quando o ano calendário exceder tax_year ou quando o usuário solicitar. Procedimento:

  1. Pesquise as fontes oficiais listadas no sources do arquivo. Espanha: AEAT para a escala do IRPF e mínimo pessoal, Seguridad Social para a tabela de cuotas do RETA, a base máxima de contribuição e as taxas do empregado, incluindo MEI. EUA: Rev. Proc. de ajuste por inflação do IRS para as faixas e dedução padrão, SSA para o limite salarial da Seguridade Social; releia as regras do Additional Medicare Tax e do imposto sobre trabalho autônomo, que a primeira versão tirou do conhecimento geral.
  2. Mostre ao usuário um diff antes/depois de cada valor alterado com seu link de fonte. Não sobrescreva silenciosamente: um número fiscal errado corrompe silenciosamente todas as comparações futuras, portanto eles confirmam primeiro.
  3. Após a aprovação, edite o JSON, defina tax_year, verified_on como hoje e verified_by como as fontes realmente lidas (remova a redação "NOT checked" somente se você realmente verificou em páginas oficiais).
  4. Execute uma comparação de amostra novamente para verificar se nada quebrou.

Um lembrete agendado é opcional: se o usuário quiser um lembrete real em janeiro, ofereça-se para configurar um com o mecanismo de agendamento que o agente ou o sistema operacional fornecer (cron, uma tarefa de agente agendada, um evento de calendário) que abra uma sessão executando esta atualização.

Formato de saída

Mantenha escaneável, não um ensaio. Use exatamente estas seções, nesta ordem:

  1. TL;DR (2 linhas): veredito, pontuação de adequação, delta líquido efetivo vs. limiar.
  2. Comparação líquida: uma tabela com linhas Bruto, Seguridade social / cuota, Imposto de renda, Líquido, Benefícios, Custos do próprio bolso, Líquido efetivo, e colunas Atual / Oferta / Delta; abaixo dela a lista de premissas.
  3. Adequação: pontuação, correspondências, lacunas, provável escopo real.
  4. Condições: tabela curta para remoto, benefícios, trajetória, riscos.
  5. Sinais do recrutador (uma linha curta cada) e Perguntas para o recrutador: 2-3 itens numerados.
  6. Rascunho de resposta.
  7. Assumido ou não verificado: lista com marcadores.

Não produza parágrafos em prosa onde uma tabela ou marcadores servirem.

Habilidades Relacionadas