The challenge
A public transport operator in a major Brazilian metropolis operates digital ticketing channels (registration, login, credit purchase, recharge, card replacement, card blocking, fare exemptions) used daily by passengers in the network. Behind these channels, a modern front-end coexists with a legacy back-end of over a generation: server-side pages, opaque sessions, no versioned APIs, no idempotency, and generic error messages.
The most sensitive risk of this architecture has a name: paid without credit. Timeouts between payment gateway, checkout, and transactional core, without retries or explicit reconciliation, create opportunities for charging without credit, duplicate orders, and manual reconciliation in spreadsheets. There are also issues with duplicate registrations between systems, fragile authentication (session tied to server cookie, without standardized MFA or token revocation), and inconsistent experiences across channels, lacking a single catalog of error messages or accessibility standards.
The aggravating factor: there was no reliable baseline of how the product actually functioned. The assessment needed to occur without direct access to legacy environments, source code, or databases. Any assertion would have to be supported by observable evidence from the outside.