Launching Nubank's first product in Mexico
Problem
Nubank's credit card worked. It worked in Brazil, where it had been built, and where every assumption about identity documents, address formats, regulators, payment rails and customer expectations had quietly hardened into the code over years.
Mexico was the company's first product launch in a new country. The problem was not writing a credit card — that existed. It was that a decade of Brazilian assumptions sat between the existing product and a Mexican customer, most of them undocumented and invisible until something failed.
Approach
I worked across several of the teams the launch cut through — billing, payments, growth and engagement — rather than owning one slice of it. Country launches fail in the seams between teams, and the seams were where the Brazilian assumptions lived.
Two kinds of work, running together. The first was building the flows Mexico needed and Brazil had never had. The second, less visible and more of the effort, was going through processes that had only ever executed in one country and making them take a country as an input — so the next market would cost less than this one.
Alongside it, the mobile codebase was being consolidated. Features were built in Flutter and existing native code — Java, Kotlin, Objective-C, Swift — was migrated across, so customers in both countries met one experience rather than a per-platform approximation of one.
Result
The credit card launched — Nubank's first product in Mexico, and the company's first outside Brazil. It is now a bank serving millions of Mexican customers, built on foundations this work laid.
The durable part is the internationalisation. Flows that had one country hardcoded into them came out the other side taking it as a parameter, which is the difference between a company that has launched in two countries and one that can launch in a third.
Stack
Flutter and Dart for mobile, migrating from Java, Kotlin, Objective-C and Swift. Clojure for the credit-card BFF and supporting microservices. On-call for what I shipped.