Cliente e contexto
Uma empresa sediada nos EUA estava a desenvolver um HR information system (HRIS) para centralizar dados de candidatos, vagas e candidaturas e utilizar LLMs para apoiar a avaliação de candidatos. Os seus dados estavam parcialmente num sistema Ruby legacy e parcialmente em currículos e documentos carregados, processados por um pipeline de Python/OCR.
Entrei como engenheiro de software multifuncional para ajudar a ligar estas peças e tornar os fluxos de trabalho com LLM fiáveis e utilizáveis em produção.
Desafios
- Dados legacy bloqueados num sistema Ruby e não facilmente disponíveis para o novo HRIS.
- Um pipeline de currículos/OCR/LLM baseado em Python que precisava de melhor tratamento de erros e robustez.
- Necessidade de configuração por vaga dos pedidos ao LLM (funções diferentes exigem prompts e limites de taxa diferentes).
- Ausência de um ciclo de feedback estruturado para melhorar as avaliações de candidatos ao longo do tempo.
- Requisitos relacionados com conformidade com o RGPD, tratamento de dados e documentação.
- O HRIS e os serviços de LLM tinham de funcionar de forma fiável em ambientes AWS de staging e produção.
O que fiz
1. Importação de dados a partir do sistema Ruby legacy
- Desenvolvi um comando Laravel para importar dados de candidatos, vagas e candidaturas do sistema Ruby legacy (fonte completa de dados) para o novo HRIS.
- Garanti que o modelo de dados em Laravel suportava funcionalidades futuras, como analytics e reporting.
2. Reforço do pipeline de OCR e LLM
- Corrigi e melhorei a lógica de processamento de currículos em Python, incluindo:
- Tratamento de erros mais robusto.
- Fallback para diferentes motores de OCR quando um falha.
- Melhoria de rate limiting e load balancing para chamadas a LLM/API.
- Reduzi os modos de falha e tornei o sistema mais previsível sob carga.
3. Atestação de LLM configurável por vaga
- Adicionei opções de configuração para permitir que a equipa de RH controlasse parâmetros de pedidos ao LLM por vaga:
- Prompts diferentes para diferentes famílias de funções.
- Limiares ajustáveis e critérios de pontuação.
- Permiti avaliações mais sensíveis ao contexto, em vez de um prompt único para todos.
4. Ciclo de feedback para avaliações de candidatos
- Implementei um mecanismo de feedback para que os utilizadores pudessem assinalar as avaliações do LLM como positivas ou negativas.
- O feedback foi armazenado e disponibilizado para:
- Melhorar prompts e configuração.
- Compreender onde os outputs do LLM precisavam de correção humana.
5. Reporting via Slack e suporte de ambientes
- Implementei uma integração com um bot do Slack para enviar relatórios diários aos utilizadores de cada tenant, disponibilizando:
- Resumos de novos candidatos e candidaturas.
- Estado dos jobs de processamento e quaisquer problemas.
- Participei na gestão de ambientes AWS de staging e produção, ajudando a:
- Diagnosticar e resolver problemas de infraestrutura.
- Manter os ambientes consistentes e documentados.
Resultados
- O HRIS passou a dispor de um pipeline fiável de importação de dados a partir do sistema Ruby legacy.
- O processamento de currículos com OCR + LLM tornou-se mais robusto e operacionalmente seguro.
- Recrutadores e hiring managers puderam beneficiar de avaliações de LLM específicas por vaga, com ciclos de feedback claros.
- O reporting no Slack melhorou a visibilidade sobre o que o sistema estava a fazer e onde era necessária atenção.
- A plataforma aproximou-se de um HRIS inteligente, pronto para produção, em vez de um protótipo experimental.
Tecnologias e responsabilidades
- Função: Engenheiro de software multifuncional para HRIS baseado em LLM
- Tecnologias: Laravel, Ruby, PostgreSQL, Python, motores de OCR, LLM APIs, Slack API, AWS (staging e produção)
- Âmbito: Importação de dados, reforço do pipeline, fluxos de LLM configuráveis, mecanismos de feedback, reporting no Slack e suporte de ambientes
Se está a desenvolver um HRIS ou um sistema semelhante e pretende utilizar LLMs de forma controlada e pronta para produção, posso ajudar a desenhar e implementar as integrações e salvaguardas necessárias.
Voltar a todos os estudos de caso