O processo de triagem técnica em Recursos Humanos enfrenta um gargalo recorrente: comparar dezenas ou centenas de currículos não padronizados com requisitos detalhados de cargos corporativos. Fazer essa correspondência manualmente consome horas de engenharia e recrutamento, além de introduzir viés e falhas na identificação de lacunas de habilidades (skill gaps).
Para resolver esse desafio, a automação com Inteligência Artificial e Processamento de Linguagem Natural (NLP) oferece uma abordagem sistemática e escalável. Neste artigo, você entenderá a arquitetura e a implementação prática de um pipeline em Python para extrair competências de documentos e avaliar a aderência de candidatos aos requisitos de uma vaga.
Arquitetura do Pipeline de Análise de Habilidades
Um sistema robusto de correspondência semântica não deve se limitar a uma busca por palavras-chave exatas. Ele precisa compreender sinônimos, contexto de experiência e nível de proficiência. O fluxo técnico divide-se em quatro etapas:
- Ingestão e Extração de Texto: Leitura de arquivos PDF/DOCX e normalização textual.
- Extração de Entidades e Habilidades: Identificação estruturada de tecnologias, metodologias e tempo de experiência.
- Cálculo de Similaridade Semântica e Gaps: Comparação vetorial entre o perfil do candidato e a descrição do cargo (Job Description).
- Geração de Diagnóstico: Relatório de aderência destacando pontos atendidos, habilidades parciais e requisitos ausentes.
Implementação Técnica em Python
Para ilustrar a solução, utilizamos modelos de embeddings e processamento estruturado. Abaixo, implementamos um exemplo prático que extrai texto e realiza a correspondência semântica das competências.
python
import pypdf
from sentence_transformers import SentenceTransformer, util
1. Extração de texto de PDF
def extrairtextopdf(caminhopdf: str) -> str:
texto = “”
with open(caminhopdf, “rb”) as f:
leitor = pypdf.PdfReader(f)
for pagina in leitor.pages:
conteudo = pagina.extract_text()
if conteudo:
texto += conteudo + ” “
return texto.strip()
2. Avaliação de Similaridade Semântica com Embeddings
class AnalisadorDeHabilidades:
def init(self, modelonome: str = ‘all-MiniLM-L6-v2’):
self.modelo = SentenceTransformer(modelonome)
def calcular_aderencia(self, habilidades_candidato: list[str], requisitos_vaga: list[str]) -> dict:
vetores_cand = self.modelo.encode(habilidades_candidato, convert_to_tensor=True)
vetores_vaga = self.modelo.encode(requisitos_vaga, convert_to_tensor=True)
matriz_similaridade = util.cos_sim(vetores_vaga, vetores_cand)
relatorio = {}
for i, req in enumerate(requisitos_vaga):
pontuacao_maxima, indice_cand = matriz_similaridade[i].max(dim=0)
pontuacao = pontuacao_maxima.item()
relatorio[req] = {
"correspondencia_encontrada": habilidades_candidato[indice_cand.item()],
"score_similaridade": round(pontuacao, 2),
"status": "Atendido" if pontuacao >= 0.70 else ("Parcial" if pontuacao >= 0.50 else "Gap Identificado")
}
return relatorio
Exemplo de uso
if name == “main“:
analisador = AnalisadorDeHabilidades()
requisitos_cargo = [
"Experiência com Python e FastAPI para microsserviços",
"Conhecimento em Docker e deploy em Kubernetes",
"Modelagem de bancos de dados PostgreSQL"
]
habilidades_extraidas_curriculo = [
"Desenvolvimento backend em Python e Flask",
"Containerização de aplicações com Docker",
"Bancos relacionais MySQL e Oracle"
]
resultado = analisador.calcular_aderencia(habilidades_extraidas_curriculo, requisitos_cargo)
for requisito, status in resultado.items():
print(f"Requisito: {requisito}")
print(f"Status: {status['status']} (Score: {status['score_similaridade']})n")
Otimização e Extração Estruturada via LLMs
Como especialista em IA, costumo desenhar arquiteturas híbridas quando a precisão é mandatória. Enquanto modelos como o Sentence Transformers cuidam da etapa de ranqueamento rápido de alta volumetria, LLMs integrados a esquemas JSON estruturados (como Pydantic) extraem nuances mais complexas do currículo, como tempo de experiência por tecnologia e contexto de projetos.
Essa separação garante eficiência de custos e alta velocidade no processamento em lote, eliminando a dependência de análises manuais demoradas.
Próximos Passos para o seu Negócio
Automatizar o mapeamento de habilidades e a análise de currículos reduz o ciclo de contratação e assegura decisões técnicas mais precisas.
Se sua empresa precisa desenhar e implementar uma plataforma inteligente de análise de competências ou integrar soluções de IA diretamente aos seus fluxos de RH, entre em contato para uma consultoria técnica especializada e descubra como desenvolver essa arquitetura sob medida para as suas necessidades corporativas.


