O desafio
Uma operadora pública de transporte de uma grande metrópole brasileira opera canais digitais de bilhetagem (cadastro, login, compra de créditos, recarga, segunda via, bloqueio de cartão, gratuidades) usados diariamente pelos passageiros da rede. Por trás desses canais, um front-end moderno convive com um back-end legado de mais de uma geração: páginas server-side, sessão opaca, sem APIs versionadas, sem idempotência e com mensagens de erro genéricas.
O risco mais sensível dessa arquitetura tem nome: pago sem creditar. Timeouts entre gateway de pagamento, checkout e núcleo transacional, sem retry nem conciliação explícita, abrem espaço para cobrança sem crédito, pedidos duplicados e conciliação manual em planilha. Somam-se duplicidade cadastral entre sistemas, autenticação frágil (sessão presa a cookie de servidor, sem MFA padronizado nem revogação de tokens) e experiência inconsistente entre canais, sem catálogo único de mensagens de erro nem padrão de acessibilidade.
O agravante: não existia baseline confiável de como o produto realmente funcionava. E a avaliação precisava acontecer sem acesso direto aos ambientes legados, ao código-fonte ou aos bancos de dados. Qualquer afirmação teria que ser sustentada por evidência observável de fora.