Skip to content
View guilhermehrsilva's full-sized avatar
🎯
Focusing
🎯
Focusing

Block or report guilhermehrsilva

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
guilhermehrsilva/README.md

~/ guilherme risson

AI Engineer · dados · backend · negócio · LLM no produto

RAG and Retrieval Evaluation Harness Production ML

guilhermehrsilva.github.io

Aberto a vagas de AI Engineer · remoto ou Maringá/PR · falar comigo no LinkedIn


~/ whoami

AI Engineer é quem junta quatro coisas: entende de dado, entende de backend, entende do negócio, e usa isso para colocar LLM dentro do produto de forma eficiente. Modelo é a parte fácil. O que decide se o sistema serve para alguma coisa é o que existe em volta dele.

Abaixo está a evidência de cada um dos quatro, com número. Depois, os projetos.

Finalizando pós-graduação em Ciência de Dados (UniCesumar) e cursando a Formação AI Software Engineer 4.0 (Data Science Academy).

Maringá, Paraná · Brasil


~/ cat pilares/negocio.md

A decisão que muda, não a métrica que sobe. É a diferença entre um modelo que funciona e um sistema que vale dinheiro.

  • +24% de resultado na carteira de teste, com o mesmo modelo e a mesma AUC. Bastou trocar o corte de 0,50 pelo break-even econômico, que sai de duas constantes de negócio e não olha uma linha do dataset. O corte analítico ganhou do ótimo procurado por varredura, que pegou ruído da amostra.
  • 77% do valor fraudado barrado revisando 0,11% do tráfego. A mesa de análise revisa um número fixo de alertas por dia, então a pergunta não é qual o corte, é quais transações entram na fila. Ordenar por valor em risco pega menos fraudes e salva mais dinheiro. Um painel de recall registraria essa escolha como piora.
  • Erro abaixo de 2% na estimativa da base de alunos, 499 mil previstos contra 509 mil realizados. O número sustenta decisão de planejamento acadêmico na Vitru Educação.
  • Auditoria de paridade publicada inclusive onde ela reprova: o grupo até 25 anos ficou em 0,767, abaixo da regra dos 4/5. Atributos protegidos ficaram deliberadamente fora das features.
~/ cat pilares/dados.md

O dado que alimenta o sistema, e o contrato que impede ele de apodrecer.

  • 5M de linhas por 26 colunas em 4,8 s, com pico de 261 MB. A memória fica plana enquanto o dado cresce 50x. Três camadas de leitura sobre Parquet, com DuckDB e PyArrow.
  • 71 checks emitidos automaticamente de 26 colunas, com teste de duas proporções, correção de Bonferroni e piso de efeito prático contra alarme falso.
  • Defeitos ranqueados por impacto na decisão, não por prevalência. O defeito em por prevalência sobe para por impacto, e o inverte exatamente zero decisões.
  • Integração e rastreabilidade de múltiplos sistemas corporativos em SQL Server e Python, no dia a dia da Vitru Educação.
~/ cat pilares/backend.md

O sistema que serve, com teste, contrato de interface e resiliência.

  • FastAPI, React 19 e TypeScript num sistema de otimização em operação, com dois solvers isolados por design: a aba de cenários não consegue sobrescrever a rodada publicada.
  • pytest em cinco repositórios, CLI empacotada com pyproject, SBOM CycloneDX e inventário de licenças de terceiros.
  • Limitador de taxa próprio e backoff exponencial para 503 e 500, com medição de tokens, latência e custo por chamada. Rodada com erro é descartada, não reportada.
  • Docker e pipeline reprodutível de um clone limpo, sem artefato binário versionado.
~/ cat pilares/llm_no_produto.md

LLM aplicado, e medido, que é a metade que a maioria dos projetos pula.

  • Recuperação híbrida BM25 e E5 multilíngue, com fusão RRF sobre posição, levou o MRR de 0,361 do léxico puro para 0,644, e o recall@1 de 0,133 para 0,533.
  • Em 80% das perguntas o contexto entregue contém norma revogada, num corpus onde 44,6% dos normativos já não valem. Nenhuma métrica de similaridade acusa isso.
  • Saída estruturada com citação obrigatória por afirmação, em campos separados. É o que deixa a auditoria de vigência ser feita por programa, e não por leitura.
  • Chunking com propósito de avaliação: segmentar por artigo é o que permite cruzar a citação da resposta com o estado de vigência do dispositivo.
  • Tokens, latência e custo medidos por pergunta, com limitador de taxa próprio e backoff exponencial para 503 e 500. Erro transitório do provedor não vira número no relatório.
  • Contra alucinação, o conjunto dourado inclui pergunta que o corpus não responde, e a auditoria classifica citação inventada como inexistente, separada de norma revogada e de artigo revogado.
  • Gemini em produto self-service que explora dataset, recomenda KPIs e responde em linguagem natural, com fallback que mantém os gráficos de pé quando a API cai.

~/ ls projetos/ --featured

Num corpus de 294 normativos do BACEN sobre Pix, 44,6% estão revogados, e a recuperação entrega norma morta ao modelo em 80% das perguntas. Nenhuma métrica de similaridade acusa isso.

Não é um chatbot sobre regulação. É a medição de um. Recuperação híbrida com fusão RRF, resolução de dispositivos empilhados (o BACEN publica até sete versões do mesmo inciso coladas em sequência) e auditoria de vigência por citação. As duas camadas que sustentam o argumento não usam LLM nenhum.

sentence-transformers · rank-bm25 · RRF · Gemini · 47 testes

O verificador não usa LLM: campo extraído só é aceito se o trecho citado existir literalmente no PDF e o valor parseado bater com ele. É isso que transforma um resultado ruim em informação útil.

Triagem de editais do PNCP, com fila de leitura ordenada por valor esperado sob capacidade finita. No conjunto dourado de 7 editais rotulados à mão, prazo acertou 2: o modelo confunde "abertura da sessão" com "prazo da proposta" mesmo com o prompt proibindo, e a citação correta é justamente o que prova que o erro é de julgamento, não de parsing. Depois da correção de prompt, a resposta errada com confiança virou abstenção com justificativa.

300 editais ingeridos, 96,7% com texto extraível sem OCR, orçamento de custo e timeout aplicado no código, US$ 0,028 por edital e p50 de 12,1 s. O ciclo vermelho para verde foi demonstrado de verdade: reintroduzi uma regressão de propósito, o portão de CI barrou, o PR seguinte corrigiu.

FastAPI · Docker · Gemini · GitHub Actions · 61 testes

Ranqueia defeitos pelo quanto mudam a decisão, não por prevalência, e emite o contrato executável que impede o defeito de voltar. O defeito em lugar por prevalência sobe para por impacto. O inverte exatamente zero decisões.

25x mais rápido e 24x mais econômico em memória que o ydata-profiling, com precisão de 100% e zero falsos positivos em 100 colunas limpas. A margem até o limiar é apertada, e está publicada junto, registrada como limite conhecido.

DuckDB · PyArrow · CLI empacotada

Sistema full-stack de otimização com CP-SAT em operação: validação de entrada, dois solvers deliberadamente isolados (a aba de cenários não consegue sobrescrever a rodada publicada), auditoria por rodada e dashboard React.

Suíte de testes, SBOM CycloneDX e inventário de licenças de terceiros. É a prova de que entrego sistema, não notebook.

OR-Tools (CP-SAT) · FastAPI · React 19 · TypeScript · SBOM

Trocar o corte de 0,50 pelo break-even econômico rendeu +24,0% na carteira de teste, com o mesmo modelo e a mesma AUC. O corte ótimo sai de duas constantes de negócio e não olha uma linha do dataset. Ainda assim ganhou do ótimo procurado por varredura, que pegou ruído da amostra.

Reason codes por TreeSHAP exato, atributos protegidos fora das features e auditoria de paridade publicada inclusive onde ela reprova, com 0,767 no grupo até 25 anos, abaixo da regra dos 4/5.

LightGBM · TreeSHAP · PSI/CSI · 16 testes

Uma regra de duas linhas, sem modelo nenhum, pega 97,70% das fraudes do PaySim. Todo AUC de 0,99 publicado sobre esse dataset está reproduzindo essa regra com mais passos.

Audita o benchmark e reconstrói sem os atalhos: a PR-AUC honesta cai de 1,000 para 0,406 enquanto a ROC mal se move. A decisão vira triagem sob capacidade finita, onde ordenar por valor em risco pega menos fraudes e salva mais dinheiro.

LightGBM · métricas de evento raro · 18 testes

BI self-service em que o Gemini explora o dataset, recomenda KPIs, gera 30+ tipos de gráfico e responde perguntas de negócio em linguagem natural. Tem modo de fallback que mantém os gráficos de pé quando a API cai.

Gemini · Streamlit · Plotly


~/ cat principios.txt

O que se repete nos projetos acima não é o stack:

  • A geração do RAG não tem métrica publicada, porque a cota gratuita corrompeu a bateria. Métrica calculada sobre resposta que nunca chegou parece resultado, e é pior que métrica nenhuma.
  • O contrato de validação reprovava a base que o gerou. O bug virou invariante: emit agora se recusa a gravar contrato que não passa na própria referência.
  • O alarme de drift não disparou quando a aprovação caiu 7 pontos. Está publicado assim, com a conclusão de que PSI agregado sobre o escore é pouco sensível.
  • A hipótese da conta laranja que acumula vítimas não se confirmou. O sinal real apontava para o lado oposto.

Sistema que não sabe dizer quando está errado não está pronto, e é essa camada que eu construo.


~/ cat skills.txt

LLM no produto

Backend

Dados

Negócio e decisão


~/ contact --open

Busco vagas de AI Engineer.

~/ obrigado pela visita · Maringá, PR

Pinned Loading

  1. clv-segmentation-engine clv-segmentation-engine Public

    Pipeline de CLV com RFM + K-Means + XGBoost sobre 93k clientes Olist, servido por FastAPI. Dados brutos baixados sob demanda por script, fora do versionamento.

    Jupyter Notebook

  2. data-insight-ai data-insight-ai Public

    BI self-service com Gemini: explora o dataset, recomenda KPIs, gera 30+ tipos de gráfico e responde perguntas de negócio em linguagem natural, com fallback quando a API cai.

    Python

  3. lead-scoring-b2b-mlops lead-scoring-b2b-mlops Public

    Lead scoring B2B com LightGBM calibrado e corte escolhido por ROI, com retreino orquestrado por Prefect e API FastAPI. Artefatos de modelo regerados pelo pipeline, fora do versionamento.

    Jupyter Notebook

  4. retail-pricing-analytics retail-pricing-analytics Public

    Python

  5. rfm-customer-segmentation rfm-customer-segmentation Public