Bruno Aguiar, AI Engineer em São Paulo

Todo número aqui tem fonte que você pode conferir.

Sistemas de agentes em produção numa VPS, e a avaliação de cada projeto aberta no repositório.

Agentes em produção
24
Jobs agendados
39
Testes coletados
2.146 zero erros
Servidores
1 sem supervisão

A procedência de cada número.

Um avaliador que confere um número inflado descarta o candidato. Então aqui está a conta inteira, incluindo as que não me favorecem.

24
Agentes no Cortex, meu sistema principal
pastas com runner.py ou agent.py, contadas na VPS em 01/10/2026
2.146
Testes coletados, sem nenhum erro de coleta
pytest --collect-only em 01/10/2026. Eram 1.963 com 8 arquivos que nem eram lidos; o import path foi corrigido
0,5845
AUC do modelo de crédito do pme-risk, contra 0,50 de um sorteio
logreg_v3, n=63.502. Brier 0,0638 contra 0,0640 do baseline ingênuo
11/11
Recusas corretas do grifo, com onze no denominador
mesma avaliação recusou 17% das perguntas válidas por engano
95,4%
Acerto do quimera sobre 1.000 pedidos inéditos, margem de 1,3 ponto
suíte e2e, commit 6f39566, árvore limpa. Com 28 casos uma falha move 3 pontos; com 1.000, move 0,1
87,9%
O mesmo quimera no holdout, abaixo da meta de 90%
33 casos sem curadoria, commit 4d79a1b. Precisão de linha 91,0% contra meta de 92%
1
VPS, sem ninguém de plantão
systemd roda API, painel e scheduler. Quando falha, falha com motivo escrito

Todos os dias, sem mim.

O Cortex escreve a newsletter, lê as vagas novas, audita o próprio código e reporta o que degradou. Eu só decido.

medido em 01/10/2026 · VPS de produção captura · não é status ao vivo
$ for d in src/cortex/agents/*/*/; do [ -f "$d/runner.py" ] || [ -f "$d/agent.py" ] && echo "$d"; done | wc -l
24

$ grep -cE '^[[:space:]]*self\.add_(cron|interval)_job\(' scripts/run_scheduler.py
42   menos os 3 do Reddit, desligado por política = 39

$ python -m pytest --collect-only -q | tail -1
2146 tests collected in 14.42s

Cortex

Vinte e três agentes em Python, em seis frentes, conversando por um barramento de conhecimento em disco: cada um publica o que sabe, os outros leem só o que precisam. Às 7h30 um deles audita o projeto e aponta o que piorou desde ontem.

A contagem de jobs saiu do log: o scheduler foi reescrito e não registra mais o padrão antigo, então ela vem da fonte, descontando os 3 jobs do Reddit que estão atrás de kill-switch. A produção é privada; o espelho público é uma versão mais antiga.

quimera

Um pedido em português vira uma lista ranqueada de CNPJs. O modelo nunca escreve SQL: ele só preenche um schema, e a consulta é montada pelo sistema, parametrizada, com teto de custo obrigatório antes de rodar.

95,4%acerto, n=1.000
87,9%holdout, meta 90%
27,8 Mestabelecimentos
Os 95,4% vêm de 1.000 pedidos inéditos, com margem de 1,3 ponto. O holdout de 33 casos sem curadoria fica em 87,9% de aprovação e 91,0% de precisão de linha, abaixo das metas de 90% e 92%, e não vou tirar isso daqui. Numa suíte de 28 casos uma única falha move 3 pontos; por isso o número que vale é o de 1.000.

pme-risk

Laudo de risco de crédito PME com portão humano. Agentes extraem e pesquisam, um modelo em BigQuery ML calcula a probabilidade de inadimplência, um analista aprova ou rejeita, e tudo vai para uma trilha append-only.

0,5845AUC do modelo
0,9868F1 da extração
63.502amostras
A AUC está quase em cima do sorteio, e o Brier de 0,0638 mal bate os 0,0640 do baseline ingênuo: neste dataset o modelo praticamente não discrimina. A engenharia em volta funciona, o poder preditivo não. E o F1 de 0,9868 também tem ressalva: parte do ganho veio de método, e o lote novo foi escrito junto com as regras do prompt, então não é holdout independente. As duas coisas estão em eval/.

Três provas de técnica.

grifo

Assistente de dúvidas para cursos que responde só com o material oficial e cita módulo, aula e minuto. Quando a resposta não está lá, ele diz que não sabe.

0,79acerto de fonte
11/11recusas certas
6.551trechos reais
A régua cobra o preço dela: 17% das perguntas válidas foram recusadas à toa, e esse número está na avaliação do repositório junto com os outros. O reranker foi desligado por medição, não por prazo.

pauta

Briefings por uma equipe de agentes: supervisor, pesquisa, análise, crítica e redação. A crítica tem limite de rodadas, um humano aprova no meio, o resultado chega por streaming.

Agent-Reach

Escuta social em vários canais: 50 contas no Twitter e 37 no Bluesky, com 289 testes passando. Alimenta o pipeline do Cortex.

Vim da comunicação. Ainda meço tudo em resultado.

Antes de construir agentes eu analisava campanhas. Isso ficou: todo sistema que eu faço tem um número que diz se ele está funcionando.

1.645%ROI médio

SCS, análise multivariada de performance em Python, com CPA mínimo de R$ 126.

-30%no CPA

BK-DEP, modelagem bayesiana da conversão de depósitos.

Série Aprevisão de jogos

BRMP, resultados do Brasileirão com validação temporal e modelos calibrados.

Com o que eu trabalho.

LLM e agentes
LangChainLangGraphCrewAIGeminiClaudeOpenAIRAGEmbeddingsLLMOps
Dados e recuperação
BigQueryQdrantpgvectorPostgreSQLRedisSQLPandas
Backend e operação
PythonFastAPIPydanticDockerLinuxsystemdnginxCloud RunCI/CDpytest
Machine learning
BigQuery MLScikit-learnXGBoostValidação temporalCalibração
Front
ReactNext.jsTypeScript
Formação

Tecnólogo em Inteligência Artificial, em andamento (2025-2027)
Bacharelado em Rádio, TV e Comunicação Digital, FAPCOM (2014-2017)

Procuro um time que coloque IA em produção de verdade.

Pleno a sênior, em São Paulo (híbrido) ou remoto. Disponível para começar em 30 dias.