Médico e AI Engineer. Construo aplicações de IA generativa e avalio modelos com rigor — calibração, generalização fora da distribuição de treino e fidelidade de explicação.
Passei três anos na assistência — urgência pediátrica e atenção primária — e migrei para engenharia de IA sem abrir mão do lado clínico. A pergunta que atravessa tudo que eu faço é a mesma: quando um modelo é confiável o bastante para sustentar uma decisão?
Acurácia não responde isso. Um modelo pode acertar na média e mentir sobre a própria confiança; um mapa de saliência pode ser bonito e não ter relação com a decisão que o modelo tomou. Então eu meço calibração, testo fora da distribuição de treino, verifico se a explicação corresponde ao que o modelo de fato usou — e reporto quando o resultado é negativo, que é a parte que costuma sumir dos relatórios.
Hoje trabalho como AI Engineer na LetzGrow e faço mestrado profissional em Engenharia de Software na CESAR School.
Plataforma de jornada de carreira assistida por IA. Um agente conversacional conduz a trilha, interpreta respostas abertas e gera um plano de desenvolvimento decompondo o objetivo em micro-tarefas adaptativas, com RAG ancorando as recomendações no perfil da pessoa em vez de em texto genérico. Cuido do backend, do pipeline de IA e da camada de dados sensíveis (acesso condicional, auditoria, LGPD).
NestJS · Prisma · PostgreSQL · Groq (Llama 3.3 70B) · Ollama · BullMQ/Redis · React · AWS CDK
Detecção de perdas em rede elétrica a partir da divergência entre energia distribuída e energia consumida. Construí a camada de dados — séries horárias de carga do ONS de 2000 a 2026, consumo por unidade federativa e malha geográfica do IBGE — e o subprojeto de leitura automática de medidores, que substitui a leitura manual do display por OCR com TrOCR ajustado sobre o dataset UFPR-AMR.
Python · PyTorch · Transformers · PaddleOCR · DuckDB · MLflow
Dissertação de mestrado (CESAR School, 2026): dois artigos conectados sobre confiabilidade de modelos de imagem médica.
Comparação controlada de quatro origens de backbone sobre cinco domínios do MedMNIST, avaliando AUC, calibração e fidelidade de explicação por oclusão. O fine-tuning intermediário forense venceu de forma consistente, e a diferença de calibração foi maior que a de poder discriminativo: a escolha de pré-treino afeta mais a confiabilidade da confiança declarada do que o acerto bruto.
Resultado negativo reportado: o Grad-CAM produzia mapas concentrados e convincentes, com fidelidade nula à decisão real do modelo sob teste de oclusão. Explicação plausível não é explicação.
Avaliação empírica e adversarial de detectores próprios contra ViT, Swin e ensembles, em três distribuições. Nenhum detector único generaliza entre tipos de manipulação, e desempenho dentro da distribuição não prediz o de fora. "Leve em parâmetros" também não implica leve na prática — a métrica de custo que importa é latência medida.
Código e infraestrutura experimental — MLflow com métricas por época, logging de inferência deduplicado por hash de conteúdo e agregação estatística sobre múltiplas seeds.
Um agente de coding que roda inteiro dentro da aba do navegador do celular. Sem instalar, sem conta, sem backend: o loop do agente, a execução de ferramentas, o sistema de arquivos, o interpretador Python e o git são código do lado do cliente. Todo agente de coding mobile é controle remoto de uma máquina que não é sua — neste, o agente é o cliente, e o único fio que sai do aparelho é a chamada ao modelo.
Tem também inferência on-device via WebAssembly, validada ponta a ponta. Medi e documentei o limite: no tamanho que cabe num celular, o modelo relata escritas de arquivo que nunca executou. Então on-device virou conversa e o agente ficou na nuvem — dito no prompt e na interface, não escondido.
TypeScript · React · Vite · WebAssembly (wllama) · isomorphic-git · Skulpt / Pyodide · IndexedDB · Playwright
Servidor Model Context Protocol que expõe um modelo local como ferramentas, com índice semântico de código atualizado a cada commit. Uso todo dia para tirar trabalho volumoso do contexto do agente.
Python · MCP · Ollama · SQLite
Um LLM autoregressivo escrito do zero: arquitetura hourglass causal que traduz a EfficientNet-B0 para linguagem, com transferência de esqueleto pré-treinado e teste de causalidade como critério de aceite.
Python · PyTorch
Avaliação comparativa de foundation models de série temporal — Chronos, TimesFM, Moirai, Lag-Llama, TTM — com fine-tuning, ensemble e backtest. A conclusão honesta é que previsão direcional de curto prazo é indistinguível de passeio aleatório, e está escrita no repositório.
Python · MLflow · Streamlit
Uma DSL embarcada em Python: código Python comum constrói uma árvore sintática tipada em vez de executar, e a mesma árvore pode ser interpretada, compilada em função ou exportada como módulo autônomo. Arquivo único, sem dependências.
Python
Três recortes do mesmo material, conforme o interesse.
Versões em inglês na página em inglês.
Mestrado Profissional em Engenharia de Software, desde outubro de 2025. Tecnólogo em Ciência de Dados, desde janeiro de 2025.
Medicina, concluído em 2022.
Neurociência computacional pelo Ciências sem Fronteiras, 2015–2016: modelagem de fluxos neurais e análise de dados de alta dimensionalidade, no cruzamento entre computação, neurociência e genética.
Physician and AI engineer. I build generative AI applications and evaluate models with rigour — calibration, generalisation outside the training distribution, and explanation faithfulness.
I spent three years in clinical practice — paediatric emergency and primary care — and moved into AI engineering without giving up the clinical side. One question runs through everything I do: when is a model reliable enough to support a decision?
Accuracy does not answer that. A model can be right on average and lie about its own confidence; a saliency map can be beautiful and bear no relation to the decision the model actually made. So I measure calibration, test outside the training distribution, check whether the explanation matches what the model really used — and I report the negative results, which is the part that usually disappears from write-ups.
I currently work as an AI Engineer at LetzGrow and am taking a Professional Master's in Software Engineering at CESAR School.
An AI-assisted career development platform. A conversational agent drives the journey, interprets open-ended answers and generates a development plan by decomposing the goal into adaptive micro-tasks, with RAG grounding the recommendations in the person's own profile rather than in generic text. I own the backend, the AI pipeline and the sensitive-data layer (conditional access, audit trail, Brazil's LGPD — the local equivalent of the GDPR).
NestJS · Prisma · PostgreSQL · Groq (Llama 3.3 70B) · Ollama · BullMQ/Redis · React · AWS CDK
Detecting electricity-grid losses from the divergence between distributed and consumed energy. I built the data layer — hourly load series from Brazil's national grid operator from 2000 to 2026, consumption per state and IBGE geographic boundaries — and the automatic meter-reading subproject, which replaces manual display reading with OCR using TrOCR fine-tuned on the UFPR-AMR dataset.
Python · PyTorch · Transformers · PaddleOCR · DuckDB · MLflow
Master's dissertation (CESAR School, 2026): two connected papers on the reliability of medical imaging models.
Controlled comparison of four backbone origins across five MedMNIST domains, evaluating AUC, calibration and occlusion-based explanation faithfulness. Forensic intermediate fine-tuning won consistently, and the calibration gap was larger than the gap in discriminative power: the choice of pretraining affects the reliability of declared confidence more than it affects raw accuracy.
Negative result reported: Grad-CAM produced concentrated, convincing maps with zero faithfulness to the model's actual decision under occlusion testing. A plausible explanation is not an explanation.
Empirical and adversarial evaluation of in-house detectors against ViT, Swin and ensembles, across three distributions. No single detector generalises across manipulation types, and in-distribution performance does not predict out-of-distribution performance. "Lightweight in parameters" does not imply lightweight in practice either — the cost metric that matters is measured latency.
Code and experimental infrastructure — MLflow with per-epoch metrics, inference logging deduplicated by content hash, and statistical aggregation over multiple seeds.
A coding agent that runs entirely inside a phone's browser tab. No install, no account, no backend: the agent loop, tool execution, the file system, the Python interpreter and git are all client-side code. Every mobile coding agent is a remote control for a machine that is not yours — in this one, the agent is the client, and the only wire leaving the device is the call to the model.
It also does on-device inference via WebAssembly, validated end to end. I measured and documented the limit: at a size that fits on a phone, the model reports file writes it never performed. So on-device became conversation and the agent stayed in the cloud — stated in the prompt and in the UI, not hidden.
TypeScript · React · Vite · WebAssembly (wllama) · isomorphic-git · Skulpt / Pyodide · IndexedDB · Playwright
A Model Context Protocol server that exposes a local model as tools, with a semantic code index refreshed on every commit. I use it daily to keep bulk work out of the agent's context window.
Python · MCP · Ollama · SQLite
An autoregressive LLM written from scratch: a causal hourglass architecture that translates EfficientNet-B0 into language, with pretrained-skeleton transfer and a causality test as the acceptance criterion.
Python · PyTorch
Comparative evaluation of time-series foundation models — Chronos, TimesFM, Moirai, Lag-Llama, TTM — with fine-tuning, ensembling and backtesting. The honest conclusion is that short-horizon directional forecasting is indistinguishable from a random walk, and it is written in the repository.
Python · MLflow · Streamlit
An embedded DSL in Python: ordinary Python code builds a typed syntax tree instead of executing, and the same tree can be interpreted, compiled into a function or exported as a standalone module. Single file, no dependencies.
Python
Three cuts of the same material, depending on what you are looking for.
Portuguese versions on the Portuguese page.
Professional Master's in Software Engineering (industry-oriented track), since October 2025. Technologist degree in Data Science, since January 2025.
Doctor of Medicine (MD), completed in 2022 — the six-year Brazilian medical degree, entered directly from secondary school.
Computational neuroscience through Science Without Borders, 2015–2016: modelling of neural flows and analysis of high-dimensional data, at the intersection of computing, neuroscience and genetics.