Skip to content
/thiago.lu

Work and study

Projects

What I ran for clients and what I built on my own, from integration and migration to automation with agents.

Read the case study: migration with parity proved 

24 projects 9 lessons in AI 42 tools resume to download

Tools

The most used one in each group.

Anthropic API

AI Engineering

Ruby

Languages

Ruby on Rails

Back end, APIs and front end

PostgreSQL

Data

AWS

Infrastructure and deploy

TDD

Integration, migration and guarantees

See all 42, with the project count 

24 projects

Integrações e Migrações

Migração de aplicação Node.js para Rails 7

Fintech de crédito ao consumidor (EUA)

Mover uma aplicação Node.js para Rails 7 sem parar a operação, provando paridade de comportamento (replay de requisição + switch por API) antes de virar a chave.

Read the case study

Desenvolvedor Rails (Contract via Toptal)

Ruby on Rails 7 · Node.js · Contract Testing

private code

2023 · Ruby on Rails 7 +2

IA e automação

PrivateOS, servidor pessoal de agentes de código

Agentes que trabalham a partir de um quadro. Mover um card no GitHub Projects dispara um webhook assinado, o job entra numa fila e um worker sobe o agente numa worktree separada do git, que abre o pull request. Cada um dos doze papéis tem teto próprio de custo, de tempo de parede e de ferramentas.

TypeScript · Claude Agent SDK · MCP · PostgreSQL · React

pesquisa private code

2026 · TypeScript +4

IA e automação

NPCs de um jogo respondendo por modelo, com memória

Servidor de Open Tibia local em que os NPCs respondem por modelo em vez de árvore de palavra-chave. O Lua do jogo chama uma ponte em Python de forma assíncrona e a resposta volta pela thread do mundo, então o modelo nunca é chamado de dentro do jogo e nada congela. A memória de longo prazo fica em Postgres com pgvector. Conversa parada vira resumo, e o resumo mais próximo volta na conversa seguinte. Cada tarefa tem teto de custo e de turnos.

Python · FastAPI · Anthropic API · pgvector · C++

private code

2026 · Python +4

IA e automação

Fonte, extrato em PDF virando lançamento conferido

Um layout novo é lido pelo modelo uma vez, o mapeamento é confirmado num passo a passo e vira um template determinístico, indexado por uma impressão digital do formato que normaliza os dígitos. Sem isso, trocar de mês já mudaria o layout aos olhos do sistema. Reimportar aquele layout roda o template e não chama o modelo. Nada entra no ledger sem fechar com os totais impressos no documento, com dois centavos de tolerância e uma única rodada de correção.

Ruby on Rails · PostgreSQL · Anthropic API · Hotwire

em desenvolvimento private code

2026 · Ruby on Rails +3

Integrações e Migrações

Motor de análise e concessão de crédito

Fintech de crédito ao consumidor (Brasil)

Sistema ponta a ponta: ingestão e validação dos leads, consulta a três bureaus de crédito, integração com o CRM, com o ERP e com o WhatsApp, data lake no BigQuery, e o motor que decide a concessão em cima disso. Depois da liberação, o acompanhamento dos contratos e das parcelas.

Engenheiro de software (Project)

Ruby · Python · BigQuery · Serasa

private code

2025 · Ruby +3

Integrações e Migrações

Migração de base de usuários com autenticação cross-platform

E-commerce de saúde (EUA/Canadá)

Bases de usuários e histórico migradas entre plataformas mantendo a integridade dos dados e a autenticação funcionando para múltiplas coortes durante toda a transição. Ninguém precisou refazer login.

Desenvolvedor full-stack (Contract via Toptal)

Ruby on Rails · React · GraphQL · AWS Lambda

private code

2024 · Ruby on Rails +3

Integrações e Migrações

Migração de servidor com 1,2 TB de arquivos

Laboratório de patologia (EUA)

A aplicação ficou instável depois da troca de Ubuntu 16 para 20. Análise de causa raiz, correção do provisionamento com Ansible e NGINX, e a migração e sincronização de 1,2 TB de arquivos entre os servidores.

Desenvolvedor Rails (Contract via Toptal)

Ruby on Rails · Ansible · NGINX · Ubuntu Server

private code

2023 · Ruby on Rails +3

Integrações e Migrações

API de ingestão e enriquecimento de dados

Plataforma de staffing em saúde (EUA)

Integração com API de terceiro para alimentar a base do produto, junto com os upgrades de Rails 4.2 para 5.1 numa aplicação em produção.

Desenvolvedor Ruby on Rails sênior (Contract via Toptal)

Ruby on Rails · React · Heroku · TDD

private code

2022 · Ruby on Rails +3

Integrações e Migrações

API pública e migração de REST para GraphQL

Software para construção civil

A API pública do sistema de gestão de obras, com integração de negócio com os principais ERPs do mercado de construção. Junto veio a migração da API REST legada para GraphQL, trocando lógica de controllers por serviços e adapters.

Head of Product

Ruby on Rails · GraphQL · PostgreSQL

private code

2020 · Ruby on Rails +2

Integrações e Migrações

Integração customizada com ERP de franquia

Franquia de alimentação

Integração sob medida para eliminar processos manuais da rotina administrativa: conecta os sistemas da operação, processa a informação e lança os dados de venda direto no ERP.

Ruby · Integração de APIs

private code

Ruby +1

Integrações e Migrações

Sincronização entre CRM e data warehouse

Fintech de crédito ao consumidor (Brasil)

Serviço em TypeScript no Cloud Run que sincroniza o CRM e o data warehouse incrementalmente, com reconciliação diária para os eventos que os webhooks perdem.

Engenheiro de software (Project)

TypeScript · BigQuery · Cloud Run · Pipedrive API

private code

2025 · TypeScript +3

Produtos e ferramentas

Power BI substituído por API própria em Cloud Functions

Construção civil

Power BI Embedded no Azure substituído por uma API de dashboard em Python no GCP Cloud Functions, consumida por um app Vue com Highcharts. Saiu a licença e saiu o lock-in.

Python · GCP Cloud Functions · Vue · Highcharts · PostgreSQL

private code

Python +4

Produtos e ferramentas

Painel de posição de palavras-chave

Plataforma de marketing digital

Refatoração do sistema legado de acompanhamento de posição de palavras-chave, com arquitetura serverless em AWS Lambda e Fargate para escala, e integração com o provedor de dados de custo por palavra-chave.

Desenvolvedor full-stack

Ruby on Rails · AWS Lambda · Fargate · PostgreSQL

private code

2017 · Ruby on Rails +3

Produtos e ferramentas

App de agendamento de aulas particulares

Educação

PWA em Vue no Firebase com API Rails no Heroku. Front e back do zero, com perfis de aluno, professor e admin, gestão de disponibilidade de salas e agenda, e gateway de pagamento para compra de créditos.

Vue.js · PWA · Firebase Hosting · Ruby on Rails · Heroku

private code

Vue.js +4

IA e automação

Comitê Financeiro: 13 agentes para teses de investimento

Gestão de investimentos

Treze agentes que ingerem relatórios e indicadores consumidos por APIs e sintetizam teses sobre mercados e classes de investimento, para sustentar a decisão de alocação.

Ruby · APIs de mercado

em desenvolvimento private code

2026 · Ruby +1

IA e automação

Boilerplate Rails para desenvolvimento conduzido por agente

Starter de Rails com o que um agente precisa para implementar uma feature sozinho. Dois geradores (estrutura de agente e servidor MCP com registro de ferramentas e testes), um mapa de contexto que se regenera a partir do schema e das rotas, e um laço que lê um RFC em Markdown e só marca a tarefa quando o teste passa.

Ruby on Rails · PostgreSQL · MCP · pgvector

pesquisa private code

2026 · Ruby on Rails +3

Dados

Plataforma unificada de dados, na fase de projeto

Data lake pessoal para domínios que não conversam (clima, esportes, mercados de previsão, cripto), em torno de um registro único de entidade, métrica, tempo, valor e contexto. Hoje o repositório é só documento, e a regra escrita nele é que nenhum código de produção sai antes de o desenho fechar. A execução vai em sessões de agente, uma por cartão, com decisão registrada em ADR numerado.

Claude Code

pesquisa private code

2026 · Claude Code

Mercados e finanças

Plataforma quant: da hipótese à execução

Três motores sobre contratos versionados. Scouting ingere dado macro e roda treze agentes de pesquisa que emitem candidatos com o null implícito do mercado. Testing pré-registra a hipótese e devolve veredito contra um null declarado antes, líquido de custo e com correção de overfitting. Trading executa atrás de um adaptador de venue, e continua em dry-run: a máquina está provada, a vantagem não.

Ruby on Rails · Python · PostgreSQL · APIs de mercado

em desenvolvimento private code

2026 · Ruby on Rails +3

Mercados e finanças

PAUPIT, mercado de previsão com liquidação onchain

Mercado de previsão em testnet, com preço saindo de uma implementação própria de LMSR em Solidity, em ponto fixo. Cota e dólar têm escalas de casas decimais diferentes, convertidas dentro do contrato. Cada mercado é um contrato criado por uma factory, com janela de disputa e caução antes da liquidação.

Solidity · TypeScript · Next.js

private code

2026 · Solidity +2

Ferramentas

Gestor de uma coleção de vinil compartilhada

Quem é dono de cada disco, onde ele está e em que ponto da escuta está, num quadro de garimpo. A coleção vive no navegador e continua utilizável sem rede, e o servidor existe só para o que não pode ficar no cliente. A sincronização com o catálogo externo nunca sobrescreve posse, localização e empréstimo, que são anotação à mão.

SvelteKit · TypeScript · WebRTC

private code

2026 · SvelteKit +2

Ferramentas

Painel de condições de voo

Recebe um número de voo e monta a rota, o boletim meteorológico das duas pontas e o vento em altitude no caminho. Três APIs de terceiro alimentam a página, cada uma com cache e política de repetição própria. Cada bloco degrada sozinho e informa o que faltou.

Ruby on Rails · PostgreSQL · Claude Code

em desenvolvimento private code

2026 · Ruby on Rails +2

Ferramentas

De um artigo para um vídeo narrado

Linha de comando que recebe um paper, um PDF ou uma URL e devolve um MP4 de 1080p. O pacote com o texto e os dados conferidos é congelado antes de existir roteiro, e a ordem de produção — marca, tela, corte, gramática — é resolvida uma vez e gravada. Depois vêm as travas, a narração, os gráficos e a montagem. O modelo é obrigado ao schema; não existe parsing de texto solto.

Python · Gemini API · TypeScript

private code

2026 · Python +2

Jogos

Hero defense com torres em maze livre

Herói controlado pelo jogador defendendo um castelo, com torres posicionadas em maze livre e caminho refeito por A* a cada mudança. Build de cartas por partida e um modo semi-infinito jogado por placar. A suíte roda headless em sete segundos, e nenhuma checagem entra sem antes ter falhado de propósito contra o código que ela protege.

GDScript · Claude Code

pesquisa private code

2026 · GDScript +1

Jogos

Arena 1v1 com luta verificável

Motor de batalha determinístico. Mesma semente e mesma configuração dão o mesmo resultado em qualquer máquina. Dá para reexecutar a luta a partir da configuração e conferir o resumo criptográfico do que aconteceu. A interface só assiste.

TypeScript · React

pesquisa private code

2026 · TypeScript +1

Lessons in AI

9 lessons

What is in production

Decisions that come back in every project with a model in the middle of the path. Each one came out of a project on this page.

  • Cada um dos doze papéis tem limite de gasto, de tempo de parede e da lista de ferramentas que pode chamar.
  • Papel novo entra semeado com teto zero, desligado por configuração.

PrivateOS, servidor pessoal de agentes de código · NPCs de um jogo respondendo por modelo, com memória

  • Leitura e escrita são sessões separadas.
  • A sessão de leitura custa centavos e devolve um plano.
  • As ferramentas de escrita abrem depois da aprovação, e aprovação pendente expira sozinha.

NPCs de um jogo respondendo por modelo, com memória · Fonte, extrato em PDF virando lançamento conferido

  • A resposta do modelo entra como proposta e passa por uma conferência que existiria mesmo sem IA.
  • No Fonte, lançamento que não fecha com os totais impressos no documento não entra.
  • A rodada de correção é uma só.

Fonte, extrato em PDF virando lançamento conferido

  • Número que sai do modelo é texto: ele devolve o que está escrito, e nada mais.
  • Converter, arredondar e somar é código determinístico.
  • O parser é sensível a formato brasileiro e tem teste em cima.

Fonte, extrato em PDF virando lançamento conferido · De um artigo para um vídeo narrado

  • Ingerir um relatório em PDF custou dois dólares, e o PDF não era complexo.
  • Layout novo é lido uma vez pelo modelo, e o mapeamento confirmado vira um template indexado por uma impressão digital do formato, que normaliza os dígitos.
  • Da segunda importação em diante roda como código comum, e o custo por documento vai a zero.

Fonte, extrato em PDF virando lançamento conferido

  • Conversa parada é resumida em fatos.
  • O que volta depois são os resumos mais próximos do assunto, por distância no Postgres com pgvector.
  • Entre execuções, o aprendizado vira arquivo curto, escrito quando o pull request é aceito.

NPCs de um jogo respondendo por modelo, com memória · PrivateOS, servidor pessoal de agentes de código

  • Dois subagentes no mesmo diretório: um limpou o repositório e levou junto o trabalho não commitado do outro.
  • Cada execução passou a ter worktree própria.
  • O que precisa tocar a mesma árvore roda em série.

PrivateOS, servidor pessoal de agentes de código

  • Registro de ferramentas, códigos de erro definidos, e a lista do que cada papel pode chamar.

PrivateOS, servidor pessoal de agentes de código · Boilerplate Rails para desenvolvimento conduzido por agente

  • Quando o modelo ou uma API de terceiro cai, a tela mostra o que veio e informa a ausência.
  • No painel de voo, sem o vento em altitude o resto da página renderiza.
  • No gerador de vídeo, roteiro e narração derrubam a execução em vez de entregar um vídeo mudo.

Painel de condições de voo · De um artigo para um vídeo narrado

Tools

2015–2026

AI Engineering

  • Document extraction with the output bound to a schema
  • Invariant checks before an output becomes data
  • Deterministic templates after the first read, so the model is not called again
  • RAG over codebases and sensitive documents
  • Long-term memory through summarization and vector search
  • Agent orchestration in parallel, isolated by worktree
  • Cost, time and tool ceilings per role
  • Custom MCP servers, with per-role gating and a sandboxed database
  • Event-triggered agents, with a queue, a worker and a pull request at the end
  • Evals and regression guardrails
  • Asynchronous calls, off the application's critical path
  • Prompts owned by the domain expert, not by engineering
  • Model provider swaps without touching the consumer

Anthropic API

Claude Code

MCP

Claude Agent SDK

Gemini API

Languages

  • Gradual typing over a legacy codebase
  • Test suites and TDD as a net for refactoring
  • Tests that have to fail first, before they go in
  • Deterministic engines: same seed, same result on any machine
  • Fixed-point arithmetic and decimal scale conversion in contracts
  • Native bindings inside a game server
  • Headless suites running in seconds, to fit inside an agent's loop

Ruby

JavaScript

TypeScript

Python

C++

GDScript

Solidity

Back end, APIs and front end

  • Integrations written for the other side to fail: retry, idempotency and reconciliation
  • Inbound and outbound webhooks, with forwarding that is checked
  • Periodic reconciliation of the event a webhook missed
  • Public APIs consumed by partners, and business integration with ERPs
  • REST to GraphQL migration, trading controllers for services and adapters
  • Rails engines attached to a third-party application
  • Major Rails upgrades with the application in production
  • Cross-platform authentication, with cohorts coexisting through the transition
  • Background jobs and heavy processing outside the request cycle
  • Structured logging and investigation of low-frequency bugs
  • Test coverage on a legacy codebase, until deploying becomes routine
  • Bot automation where the partner has no API
  • Front-end migration between frameworks, with the product live
  • Offline-first front ends, usable with no network

Ruby on Rails

React

Sidekiq

GraphQL

Vue

Vuetify

REST APIs

FastAPI

Hotwire

Next.js

Node.js

SvelteKit

WebRTC

Highcharts

PWA

Data

  • Data lakes structured from scratch, from raw data to an automated decision
  • Incremental sync between the operational system and the warehouse
  • A single record format for domains that do not talk: entity, metric, time, value and context
  • Row-Level Security inside the database
  • Time series in hypertables
  • Vector indexes for semantic search
  • Query and index tuning up to the response SLA
  • Third-party API ingestion with its own cache and retry policy
  • Database migration across platforms preserving integrity

PostgreSQL

BigQuery

pgvector

Infrastructure and deploy

  • Infrastructure sized by the invoice, not by the theoretical peak
  • Containers with scale-to-zero where the traffic allows
  • Hand provisioning where scale-to-zero does not fit
  • Serverless architecture for bursty load
  • CI/CD pipelines with automated deploys
  • Agents running inside the pipeline, with human approval at the merge
  • Root cause of instability after an operating system change
  • Migration and sync of large file volumes between servers
  • Replacing a licensed tool with a service of our own, to get out of lock-in

AWS

Google Cloud

Docker

Heroku

Ansible

NGINX

Ubuntu Server

CI/CD

Firebase Hosting

Integration, migration and guarantees

  • Parity proved by replay of real requests against both versions
  • Per-API feature switch to flip the key, and to flip it back
  • Shards synced with a shadow database, to check the migration in production
  • Rollback plans written before the cutover
  • Whole applications migrated across languages, with operations live
  • A survey of the real dependencies before designing the cutover
  • Integration with ERPs, clinical labs and credit bureaus
  • Clinical message exchange over HL7
  • Reconciling two data models after an acquisition
  • Root cause with an investigation document and a task breakdown for the team

TDD

Contract Testing

Serasa