Claude Code, GitHub Copilot e Cursor fazem a digitação. A arquitetura, os critérios de
aceite e a verificação antes da produção são meus — e é isso que separa um protótipo de
algo que fica no ar.
Acompanhamento de tabela, jogos e estatísticas da Série A. Login OAuth, tokens
Material Design 3 e endpoint /api/health no ar. Sete workflows de
GitHub Actions, incluindo rollback, com um drill de flip-back documentado, e deploy
keyless via OIDC. Quando não há token da API disponível, o app cai para um snapshot
congelado em vez de quebrar.
React 19 · TypeScript · Express 5 · Tailwind 4 · AWS · 1.523 testes unitários e
46 specs Playwright ponta a ponta · 910 commits em oito semanas (23 de agosto a 16
de outubro de 2026)
Simulador de Monte Carlo das chances de classificação, com modelo Dixon-Coles e os
critérios de desempate do Art. 13 do regulamento da FIFA implementados na ordem
correta. Integrações externas (FIFA API, Open-Meteo, Google Trends) têm fallback
próprio. Servido por nginx e systemd.
React 19 · TypeScript · Express · AWS · 283 testes unitários e 37 specs
Playwright ponta a ponta · 1.204 commits
Experimentos e ferramentas
ai_workflow
— Pipeline de verificação para desenvolvimento assistido por IA
Automatiza a etapa que costuma ficar de fora: tornar verificável o que um agente de
código gerou, antes de ir para produção — revisão, documentação e testes.
Busca densa (multilingual-e5-base) combinada com BM25, sobre um índice cujo
manifesto de integridade recusa carregar um índice inconsistente, e uma guarda de
plágio calibrada em respostas reais. A orquestração é decidida por regras, nunca
pelo modelo. No gabarito do README — 40 perguntas e 176 candidatos julgados por
pooling TREC — a busca densa alcança nDCG@5 de 0,719 contra 0,488 do BM25. Geração
plugável, camada web em FastAPI e 292 testes passando.
trilhas_estudos
— Controle e sugestão de trilhas de estudo, em Python
Domínio em dataclasses congeladas, com mypy --strict sobre todo o
src/. O histórico usa event sourcing com UPDATE e DELETE proibidos por
trigger no SQLite — corrigir um fato é gravar outro evento, nunca reescrever o
anterior. O motor de sugestão é de regras, não de modelo, e explicável por
construção: nenhuma sugestão sai sem os fatores que a produziram. 294 testes sobre
6.772 linhas, 16 ADRs e cinco gates no CI a cada push e pull request — catálogo
compilado, pytest, ruff check, ruff format e mypy —, cada um em matriz 3.12/3.14.
Roda local; não está em produção.
Vinte e seis anos de carreira em billing de telecom, conciliação fiscal e Oracle
antecedem estes projetos — e explicam por que a verificação vem antes do deploy.