Ir para o conteúdo
T.G.
Engenharia de software · Brasil · Portugal · Espanha disponível para novos projetos

Sistemas complexos em produção

Dinheiro que se move de verdade. Apostas que liquidam em segundos. Laudos que valem como documento. Peças de luxo que trocam de dono entre países, com fatura válida e procedência provada. Eu construo o tipo de software onde o erro tem consequência — do modelo de dados ao servidor que roda em produção.

trace/pagamento-webhook.log ilustração de um fluxo real
POST /webhooks/psp/payment 202
├─ idempotency-key 9f2c… repetida ignorada
├─ transação pendente → paga ok
├─ ledger lançamento #48.210 + 12.480,00
├─ conciliação psp ↔ ledger confere
└─ tempo total 38 ms

nenhum saldo alterado por UPDATE — só lançamento.

runtime
php 8.4 · go · node 22
dados
mysql · postgres · redis
infra
nginx · filas · vps que eu opero
  • produção estável
  • domínios 07
  • sistemas no ar 12+
  • mercados BR · PT · ES
setores críticos atendidos
07 setores críticos atendidos
sistemas rodando em produção
12+ sistemas rodando em produção
países: Brasil, Portugal e Espanha
03 países: Brasil, Portugal e Espanha
responsável: do schema ao deploy
01 responsável: do schema ao deploy

Os domínios

Cada setor abaixo quebra de um jeito diferente. O que muda não é a linguagem — é o que acontece quando o sistema erra. Abra qualquer um para ver o problema real e a decisão de engenharia que resolveu.

01 Fintech & mercado cripto OTC · Ledger · KYC/AML

O desafio

Uma mesa OTC move fiat e cripto no mesmo minuto, com preço volátil, custódia de terceiros e obrigação de KYC/AML. Um centavo de arredondamento errado, repetido mil vezes, vira um rombo que ninguém consegue explicar — e um saldo guardado numa coluna que sofre UPDATE não tem como provar de onde veio.

OTC · Ledger · KYC/AML

O que eu fiz

  • Ledger de partidas dobradas imutável: saldo nunca é campo editável, é a soma dos lançamentos. Todo movimento é reconstituível.
  • Cotação com trava de tempo e tolerância de slippage — a proposta expira antes do mercado virar contra a operação.
  • Aritmética decimal fim a fim (nada de float em dinheiro) e arredondamento definido uma vez, no domínio.
  • Onboarding com verificação documental, checagem de listas e trilha de auditoria por evento.
  • Conciliação automática entre ledger interno, extrato bancário e movimentação on-chain.

O resultado

Fechamento diário bate sozinho. Qualquer saldo, em qualquer data passada, é reproduzível a partir dos lançamentos — o que transforma auditoria de pesadelo em consulta.

02 Gateways de pagamento PIX · Webhooks · Idempotência

O desafio

Integração de pagamento é um exercício de desconfiança. O provedor reenvia o mesmo callback três vezes, entrega o "pago" antes do "criado", ou simplesmente cai no meio da madrugada. Um pagamento contado duas vezes é prejuízo; contado zero vezes é cliente perdido e suporte queimado.

PIX · Webhooks · Idempotência

O que eu fiz

  • Idempotência por chave em toda entrada: o mesmo evento processado N vezes produz exatamente um efeito.
  • Máquina de estados explícita da transação — transições ilegais são rejeitadas pelo domínio, não corrigidas na mão depois.
  • Fila com retry exponencial e dead-letter queue: falha transitória se resolve sozinha, falha real fica visível.
  • Conciliação ativa: em vez de confiar no callback, o sistema pergunta ao provedor qual é a verdade e corrige a divergência.
  • Split de recebíveis, repasse e regras de antifraude por velocity antes do dinheiro sair.

O resultado

O estado final converge para o correto mesmo com o provedor instável. Divergência vira alerta, não descoberta no fechamento do mês.

03 iGaming & apostas Odds em tempo real · Arbitragem · Concorrência

O desafio

Odds mudam em milissegundos e a janela de arbitragem dura segundos. Pior: cada casa nomeia o mesmo evento e o mesmo mercado de um jeito diferente, então comparar preço exige primeiro provar que se está falando do mesmo jogo. Em paralelo, saldo de jogador sofre escrita concorrente e tudo precisa ser auditável.

Odds em tempo real · Arbitragem · Concorrência

O que eu fiz

  • Motor de ingestão em Go consumindo múltiplos provedores em paralelo, com backpressure e tolerância a feed lento.
  • Camada de normalização que casa evento, mercado e seleção entre casas — o problema difícil de verdade, resolvido com chave canônica e fuzzy matching supervisionado.
  • Detecção de surebet sobre o book normalizado, com filtro de margem e de liquidez.
  • Saldo de jogador em transação com lock, extrato imutável por movimento e regras de bônus como política, não como if espalhado.
  • Painel operacional em tempo real para a mesa agir enquanto a oportunidade existe.

O resultado

Detecção abaixo de um segundo, oportunidades entregues enquanto ainda valem, e cada movimento de saldo com rastro para auditoria.

04 Laboratório de genética animal LIMS · Cadeia de custódia · Laudo verificável

O desafio

Amostra biológica trocada é um erro que não se corrige com deploy: contamina resultado de paternidade, registro de raça e valor de animal. O laboratório precisa provar, a qualquer momento, por onde a amostra passou e quem tocou nela — e o laudo que sai dali é usado por associações e por gente que nunca vai abrir o sistema.

LIMS · Cadeia de custódia · Laudo verificável

O que eu fiz

  • LIMS ponta a ponta: recebimento, etiquetagem com código de barras, bancada, repetição e liberação.
  • Cadeia de custódia como log de eventos append-only — cada transferência de posse registrada com autor, horário e destino.
  • Importação de resultados direto do equipamento, eliminando digitação manual (a maior fonte de erro do fluxo).
  • Laudo em PDF assinado com hash publicado e QR de verificação: qualquer pessoa confere a autenticidade numa URL pública.
  • Portal do criador para acompanhar amostras e baixar resultados sem depender do telefone do laboratório.

O resultado

Laudo verificável por terceiros sem acesso ao sistema, histórico de custódia íntegro e menos retrabalho de bancada.

05 Exame toxicológico Dado sensível · LGPD · Prazo regulatório

O desafio

Toxicológico de CNH e de admissão tem consequência jurídica direta na vida de uma pessoa. O prazo é regulatório, a integração com o órgão receptor pode falhar sem avisar, e o conteúdo é dado sensível de saúde sob LGPD — vazamento aqui não é incidente de TI, é dano à pessoa.

Dado sensível · LGPD · Prazo regulatório

O que eu fiz

  • Criptografia em repouso dos campos sensíveis e segregação de acesso por papel, com log de quem leu o quê.
  • Política de retenção e expurgo automatizada — o dado não fica guardado além do necessário porque ninguém lembrou de apagar.
  • Envio ao órgão receptor com fila, confirmação e reenvio automático em falha, sem depender de alguém conferir planilha.
  • Painel de prazos que mostra o que vence antes de vencer, por lote e por unidade.
  • Rastreabilidade de amostra no mesmo rigor do laboratório de genética — cadeia de custódia é requisito, não recurso.

O resultado

Prazos monitorados por sistema, envios com confirmação e recuperação automática de falha, e dado sensível cifrado com acesso auditável.

06 Luxo & bens de alto valor Procedência · Faturação BR/PT/ES · Prevenção à lavagem

O desafio

Em bens de luxo o produto vale porque a cadeia de confiança em volta dele se sustenta. Uma peça de alto valor troca de dono com procedência que precisa ser comprovada, pagamento que frequentemente cruza fronteira e moeda, e um documento fiscal que tem de ser válido perante o fisco do país onde a venda acontece — cada um com regra própria. Acima de certo valor, a operação ainda vira obrigação de identificação e de reporte. Errar aqui não é bug de carrinho: é nota inválida, venda sem lastro documental e risco regulatório colocado no colo do cliente.

Procedência · Faturação BR/PT/ES · Prevenção à lavagem

O que eu fiz

  • Dossiê por peça: certificado, laudo, histórico de posse e documentos anexados viajam com o item — e cada transferência de titularidade fica gravada como evento, não como edição de cadastro.
  • Emissão fiscal por regime: NF-e no Brasil, faturação certificada com séries e SAF-T em Portugal, e fatura com IVA e reporte eletrônico na Espanha — numeração, arredondamento e retenção tratados por país, não por gambiarra de exceção.
  • Multi-moeda com câmbio travado no fechamento do negócio: o valor fiscal é registrado na moeda de emissão, não convertido depois de qualquer jeito.
  • Identificação de comprador e vendedor, verificação de origem de recursos acima do limite legal e trilha exportável no formato que a autoridade pede.
  • Consignação e revenda modeladas de verdade: comissão, repasse ao consignante e a diferença entre venda própria e intermediação — que muda o que se tributa.
  • Estoque unitário com reserva transacional: peça única não pode ser vendida duas vezes, em nenhuma corrida de concorrência.

O resultado

Venda internacional que fecha com documento fiscal válido no país certo, procedência rastreável do fornecedor ao comprador e trilha pronta quando a autoridade pergunta — sem planilha paralela para tapar buraco.

07 IA aplicada & automação Agentes · WhatsApp · Infra própria

O desafio

Colocar um modelo de linguagem para falar com cliente real é fácil de demonstrar e difícil de sustentar: ele inventa dado, obedece a instrução injetada pelo próprio cliente, e roda em cima de uma infra de WhatsApp que desconecta sozinha. Automação que erra em público custa mais caro que automação que não existe.

Agentes · WhatsApp · Infra própria

O que eu fiz

  • Agentes com ferramentas tipadas: o modelo não escreve no banco, ele chama uma ação validada que escreve.
  • Detecção de prompt injection e escopo fechado de instruções — mensagem de cliente é dado, nunca comando.
  • Hub de WhatsApp multi-instância com reconexão, fila de envio e rate limit por número.
  • Fluxo conversacional sequencial com objetivo claro (qualificar, agendar, encaminhar para humano) em vez de chat aberto.
  • Infra própria em VPS: nginx, filas, banco, monitoramento e deploy — eu opero o que eu construo.

O resultado

Atendimento automatizado que segue o roteiro, escala por número e falha de forma visível — com humano assumindo no ponto certo.

Como eu construo

Estas não são preferências de estilo. Cada uma delas é a lição de um incidente que eu não quero repetir.

01

Modelo de domínio primeiro

Schema errado é a única dívida técnica com juros compostos. Semana pensando o modelo economiza mês de migração e ano de bug sutil.

02

Estado explícito

Máquina de estados vence meia dúzia de flags booleanas espalhadas. Se uma transição é impossível, o código precisa recusá-la — não depender de ninguém lembrar.

03

Idempotência por padrão

Rede cai, provedor reenvia, usuário clica duas vezes. Toda entrada carrega chave e todo efeito acontece uma vez só.

04

Dinheiro é imutável

Decimal, nunca float. Lançamento, nunca UPDATE em saldo. Se não dá para reconstruir o número a partir do histórico, o número não é confiável.

05

Observabilidade antes do incidente

Log estruturado, alerta e painel entram junto com a feature. Descobrir o problema pelo cliente é caro duas vezes.

06

Eu opero o que eu entrego

Banco, fila, nginx, deploy, backup e firewall. Quem só entrega código nunca sente o custo real das próprias decisões.

Ferramentas

A linguagem é detalhe de implementação — mas estas são as que eu levo para produção e mantenho depois.

  • PHP
  • Laravel
  • Go
  • Vue 3
  • Inertia.js
  • TypeScript
  • Node.js
  • MySQL
  • PostgreSQL
  • Redis
  • Filas & Workers
  • Docker
  • Nginx
  • Cloudflare
  • Linux / VPS
  • PIX & PSP
  • Webhooks
  • WhatsApp API
  • Anthropic / LLM Agents
  • Tailwind CSS
  • Puppeteer
  • CI/CD

Tem um sistema que não pode falhar?

Se o seu problema envolve dinheiro, prazo regulatório, dado sensível ou concorrência real, é exatamente o tipo de coisa que eu gosto de resolver. Me conte o contexto — se não for meu tipo de problema, eu digo na primeira conversa.