Em produção

Engenheiro de IA construindo sistemas de agentes em produção.

Engenharia full-stack por baixo — coloco no ar agentes dos quais as pessoas dependem todo dia: voz, suporte e plataformas com contexto estruturado.

2,000+
conversas por dia no pico
55–60%
dos contatos resolvidos de ponta a ponta
~3%
de conversão em leads frios, por voz Outbound totalmente autônomo — nenhum humano discando.

Trabalhos selecionados

01

Projeto principal

Plataforma de agentes com contexto estruturado para wealth management

Mavericks.AI — gestores de patrimônio e assessores de investimento

Problema

Assessores perdem horas toda semana redigindo atas de reunião e remontando o contexto do cliente, espalhado entre áudios de WhatsApp, transcrições e feeds financeiros.

O que construí

Uma plataforma ponta a ponta que ingere dados não estruturados, roda pipelines analíticos automatizados e serve agentes com contexto estruturado para apoio ao assessor em tempo real. Agentes integrados à agenda entram sozinhos nas reuniões marcadas via Recall.ai, gravam e disparam processamento assíncrono por webhook. O núcleo de engenharia: o agente é integrado a todas as rotas do backend por um monorepo com gerador automático de integração, mais uma camada de estruturação das consultas por cima. Paginação, sumarização e tools estruturadas entregam inputs e outputs limpos para o modelo. Não é um dump do sistema dentro do contexto — é uma digestão estruturada e em tempo real dos dados do sistema.

Como a plataforma digere o contexto

// entra não estruturado, sai estruturado

  1. Fontes

    Áudios de WhatsApp

    Transcrições de reuniões

    Feeds financeiros

    espalhado · não lido · sem rótulo

  2. Ingestão

    disparado pela agenda

    Os agentes entram sozinhos na reunião marcada via Recall.ai e gravam.

    webhook → fila assíncrona

    processamento fora do caminho da requisição

  3. Camada estruturada

    monorepo

    gerador automático de integração

    todas as rotas do backend

    • GET tool
    • GET tool
    • GET tool
    • POST tool

    gerado, não ligado à mão

    camada de estruturação das consultas

    • paginação
    • sumarização
    • tools estruturadas

    inputs e outputs limpos para o modelo

  4. Agentes no produto

    • Análise de reuniões

      Os agentes entram sozinhos na reunião marcada, gravam e transformam a transcrição em insights de cliente e itens de ação no CRM.

    • Análise de conversas no WhatsApp

      Áudios e conversas com clientes são ingeridos e digeridos em contexto estruturado, em vez de ficarem perdidos no histórico do chat.

    • Apoio ao assessor dentro do produto

      Os agentes respondem dentro da plataforma com acesso estruturado e em tempo real a todas as rotas do backend — consultas, paginação e tools, não um dump de contexto.

    • Briefings de relacionamento

      Antes de cada reunião, um briefing do cliente e do relacionamento: o que mudou, o que foi dito e o que segue em aberto desde a última interação.

  5. Assessor

    3–4 insights e itens de CRM por reunião

    ~6–7 h de redação poupados por semana

    o contexto chega digerido, não despejado

Stack

LangGraph · LangChain · Python · FastAPI · TypeScript · Next.js · PostgreSQL · MongoDB · Recall.ai · Docker · GCP · LangSmith · LangFuse

Resultado

3–4 insights de cliente e itens de ação no CRM gerados por reunião, devolvendo a um assessor ativo cerca de um dia inteiro de trabalho por semana (~6–7 h) antes gasto em redação manual. O notetaker construído sobre o mesmo pipeline é usado diariamente por 20+ pessoas.

02

Agente de voz autônomo para cold outreach

Mavericks.AI — produtos financeiros

Problema

Outbound manual não escala e converte mal. Cada hora que um closer passa discando para números não qualificados é uma hora que ele não passa fechando.

O que construí

Um agente VoIP que liga sozinho para leads frios, qualifica em conversa e encaminha os contatos aprovados para closers humanos, sustentando 100+ chamadas simultâneas. Rastreamento completo do pipeline com métricas de conversão, para o funil ser medido em vez de chutado.

Da lista fria à agenda de um closer

// 100+ chamadas simultâneas, sem operador

Chamada ao vivo

linha 47 de 112 · 00:42 · qualificando

agente de voz
o agente fala o prospect responde
prospect

// chamada de exemplo, não é uma captura

  1. Lista fria

    8,000+

    leads processados

    não qualificados até alguém ligar

    Agendamento

    O agendamento em nuvem dosa a lista e reabastece as linhas conforme as chamadas terminam.

  2. Discador

    100+ simultâneas

    cada célula é uma linha ativa 200+ discados / dia

    chamadas feitas sem ninguém na linha

  3. Qualificar na conversa

    • pessoa certa alcançada
    • aderência ao produto declarada
    • orçamento e prazo
    • interesse confirmado

    leads desqualificados nunca chegam a um closer

  4. Closers humanos

    Só contatos aprovados são encaminhados, então o tempo de fechamento vai para quem se qualificou.

    o repasse carrega

    transcrição · respostas · motivo da qualificação

  5. Medido

    ~3% de conversão em leads frios

    200+ prospects chamados por dia

    Rastreamento do funil

    • discado
    • alcançado
    • aprovado
    • fechado

    // só as duas pontas são publicadas; as etapas entre elas são medidas, não divulgadas

Stack

Vapi · Python · FastAPI · agendamento em cloud · camada de analytics

Resultado

~3% de conversão em leads frios, com 200+ prospects chamados por dia e 8,000+ leads processados.

03

Agente de atendimento em escala

Mavericks.AI — saúde

Problema

Volume alto de tickets repetitivos consumindo horas do time de suporte todos os dias.

O que construí

Um agente de suporte autônomo com recuperação de contexto, integrado aos backends do cliente para consultas na base de usuários e operações de conta. A base de conhecimento se aprimora sozinha: toda conversa transferida para um humano era analisada para fechar a lacuna de cobertura que causou a transferência, então a resolução subiu ao longo do tempo.

Stack

Python · FastAPI · LangChain · LangGraph

Resultado

2,000+ conversas por dia no pico, 55–60% resolvidas de ponta a ponta.

Em produção

// operado, não apenas entregue

Cada execução escreve o próprio registro — etapa por etapa, chamada por chamada, token por token. Esses registros se somam em uma única visão onde o custo é atribuído à etapa que o causou, então uma otimização pode ser escolhida em vez de adivinhada.

1 · Cada execução se registra

uma execução · números de exemplo

analysis_pipeline sucesso 9 etapas · 204.0 s
  1. load_input 120 ms
  2. load_history 40 ms
  3. enrich 12.4 s
  4. summarize 13.9 s
  5. analyze 46.6 s
  6. plan 128.4 s
  7. join 40 ms
  8. commit 60 ms
  9. publish 2.4 s
etapa que fez chamadas de modelo encanamento

Uma regressão tem um lugar antes de alguém abrir um log: a etapa que ficou mais lenta tem nome, horário e comparação com a execução de ontem.

chamadas de modelo nessa execução

5 chamadas

Modelo Entrada / saída Custo
Haiku 4.5 69k / 1.2k $0.075
GPT-5 mini 46k / 7.3k $0.013
Haiku 4.5 73k / 5.0k $0.098
Haiku 4.5 8.9k / 4.0k $0.029
GPT-5 mini 5.7k / 3.2k $0.004
total 203k / 21k $0.219

O custo é medido onde acontece — por chamada, em uma etapa com nome — então pode ser somado de qualquer forma depois: por execução, por etapa, por modelo, por pipeline.

~900 execuções em 30 dias se somam em

2 · Uma visão sobre todas as execuções

janela de 30 dias · filtrável por modelo e por pipeline

~900
Execuções na janela · ~30 por dia
~3,300
Chamadas de modelo · 3,5 por execução
~$0.07
Custo médio de uma execução de pipeline
<$0.02
Custo médio de uma chamada de modelo
79%
De todos os tokens são de entrada
Haiku 4.5
Modelo dominante · 55% do custo

custo diário

barras, não área — cada dia é um conjunto discreto de execuções

dia 1 dia 15 dia 30

custo acumulado

a série não para

dia 1 → dia 30

// só a forma — nenhum valor aparece nos dois gráficos, porque o custo absoluto é do cliente

Uma troca de modelo ou uma mudança de prompt aparece como um degrau na curva, que é como um experimento passa a ser medido em vez de discutido.

3 · Para onde vai o custo

por etapa e por pipeline

  1. artifact_analysis / todo_subgraph 30%
  2. meeting_ingestion / enhance_chunk 22%
  3. artifact_analysis / observation_subgraph 18%
  4. artifact_analysis / summary_subgraph 13%
  5. meeting_ingestion / summarize 11%

Cinco etapas entre dezenas carregam 94% da conta. O trabalho de otimização vai para essas cinco, e mostrar cada uma como pipeline / etapa já é a prova: a atribuição é por etapa, não por aplicação.

4 · Qual alavanca puxar

perfil de tokens por etapa — entrada : saída

  1. enhance_chunk 1:1
  2. todo_subgraph 3:1
  3. observation_subgraph 13:1
  4. summary_subgraph 35:1
entrada saída

A razão nomeia a alavanca. 35:1 é um problema de contexto — use cache. 1:1 é um problema de geração — encurte a saída ou mova a etapa para um modelo mais barato.

chamadas versus custo, por modelo

a inversão

Chamadas 35%42%22%
Custo 55%25%20%
Haiku 4.5GPT-5 miniSonnet 4.5

O modelo com menos chamadas não é o mais barato: é ele que sustenta as etapas pesadas de contexto. Sem atribuição por etapa essa inversão é invisível e a otimização óbvia é a errada.

O workspace tem pelo menos três consultores, então o número real é menor que este: menos de US$ 25 por consultor por mês, contra as seis a sete horas semanais de redação manual que o mesmo sistema elimina. O custo absoluto é do cliente, então esta seção mostra apenas proporções, razões e custos unitários.

Testado

// roda sob demanda

mudança de código
suíte · 20 cenários todos com asserção
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
  6. 06
  7. 07
  8. 08
  9. 09
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20

20/20 cenários passam

Todos precisam passar, ou a mudança para aqui.

Pelo menos vinte cenários cobrem os agentes que falam com o cliente. A suíte roda sob demanda, e uma mudança só chega a uma pessoa depois que todos os cenários passam.

As saídas são verificadas de duas formas: regex onde a saída tem estrutura, um juiz LLM onde ela é texto corrido. Falhas reais de produção entram na suíte junto com os caminhos bons, então um defeito que aconteceu uma vez vira um caso de teste permanente.

Stack

// o que eu uso, e com o que eu já entreguei

Como eu trabalho

// prática de engenharia, não um projeto de cliente

Com IA, o time produz um volume massivo de código. Mais de dez engenheiros abrindo cerca de quatro PRs por dia somam 200 PRs por semana; a 15–20 minutos de revisão criteriosa cada, são de 50 a 65 horas de engenharia por semana só no passe preliminar. Sem uma ferramenta que carregue a subjetividade do seu ambiente, ou se paga esse custo, ou se revisa mal.

Então construí automação do processo de desenvolvimento sobre o Claude Code: skills de revisão especializadas por domínio, escrita de código seguindo as convenções do ambiente, gates automáticos de teste de qualidade e documentação gerada. A tese por trás disso é que a cultura da empresa precisa existir como documentação, e o histórico do projeto precisa ser documentado e referenciado continuamente — caso contrário o agente não tem a que ser fiel.

Stack

Claude Code · skills customizadas · CI/CD

Resultado

Adotado por todos os engenheiros do time, absorvendo o passe preliminar sobre um fluxo de 200 PRs por semana, de modo que o tempo humano de revisão vai para decisões de design em vez de varredura.

Experiência

  1. Jul 2024 — atual

    Engenheiro Full-stack / IA · Mavericks.AI

    Engenheiro de IA à frente de três produtos de IA em produção, da arquitetura ao deploy, para os setores financeiro e de saúde.

  2. Abr — Jun 2025

    Desenvolvedor Frontend (contrato) · OceanGuard — Holanda

    Dashboard de telemetria ao vivo para uma plataforma marítima internacional. TypeScript, Vue, Nuxt.

  3. Set 2022 — Jul 2024

    Engenheiro de Software · AdaTech — EdTech

    ERP corporativo com ferramentas de BI embarcadas, e APIs REST distribuídas na AWS sobre princípios de microsserviços.

  4. Jan — Ago 2022

    Engenheiro de Software · IntuitiveCare — finanças em saúde

    Features de alta vazão para uma plataforma de automação financeira que atende grandes instituições de saúde.

Sobre

Construo sistemas de IA que rodam em produção e continuam de pé. A maior parte do meu trabalho é com agentes: agentes de voz que sustentam uma conversa de verdade, agentes de suporte que resolvem em vez de empurrar, e plataformas em que o agente tem acesso estruturado e em tempo real a um sistema vivo, e não a uma pilha de contexto raspado.

Embaixo do trabalho de IA está engenharia full-stack comum, e acho que é essa parte que faz os agentes sobreviverem ao contato com produção. Python e TypeScript, FastAPI e Next.js, Postgres e Mongo, Docker, AWS e GCP, CI/CD e monitoramento — a camada sem glamour que decide se um demo vira produto.

Sou bacharel em Ciência da Computação pela Universidade de São Paulo, onde também construí o SPIRA — um sistema de ML em microsserviços que detecta insuficiência respiratória por análise acústica da voz, em PyTorch, Airflow e MLflow. Em setembro de 2026 começo o mestrado em Inteligência Artificial na Universidade de Bolonha.

Estou aberto a trabalho remoto em tempo integral com horário flexível, e a contrato em meio período. Trabalho em inglês e português; meu italiano está em torno de A2/B1 e melhorando, então um time italiano funciona bem desde que o inglês também seja língua de trabalho. Moro em Bolonha e estou disponível presencialmente aqui.

Vamos conversar

Contratação, projeto ou só trocar ideia sobre agentes em produção — qualquer um destes chega em mim.

Email WhatsApp // ai agent: em breve LinkedIn GitHub CV (PDF)