Auto-generated and lightly edited — let us know about errors.
Kwame: Adwoa, you spent 18 months getting one product live in four jurisdictions. Tell us how that started.
Adwoa: It started with a board mandate. We had product-market fit in Ghana. We had a wallet. And every attempt to extend was a fork. By the time we had three forks running, engineering was spending 70 percent of its time reconciling differences between branches that should never have diverged. The CTO at the time, Yaw, walked into a board meeting and said: we can either keep forking and die in eighteen months, or we can stop, rebuild the spine, and become a platform. We picked the second.
Adaobi: That is a very expensive decision in the middle of a product market fit moment. How did you defend it?
Adwoa: With a spreadsheet. Honestly. We costed out the next four country launches under the fork model — about two and a half engineering years per country, mostly compliance and ledger work. And then we costed the same launches under a unified platform. The platform was eight engineering years up front, but the marginal country dropped to about half an engineering year. So if we did more than two more countries, the platform paid for itself. The board approved a fourteen-month rebuild on the condition that we picked the next four countries before we wrote a line of code.
Kwame: That is a fascinating constraint. Tell us about the country picking.
Adwoa: We had a long list of fifteen markets. We scored each one on four axes: regulatory clarity, partner bank availability, agent network density, and FX corridor strength. Nigeria scored high on everything except regulatory clarity — the CBN was, and still is, an active regulator that updates the playbook quarterly. Cote d'Ivoire scored high on FX because of the BCEAO zone. Kenya scored high on agent density. We ended up with Ghana — our home — Nigeria, Cote d'Ivoire, and Senegal. The BCEAO call was strategic: by picking two BCEAO countries we got a single regulatory surface for two markets, which subsidized the more painful Nigerian work.
Adaobi: Walk us through the regulator-as-code idea. That phrase has come up a lot in the show this year and I think people are using it to mean different things.
Adwoa: For us, regulator-as-code meant exactly this: every rule that a regulator imposes on us — capital adequacy, settlement window, reporting cadence, KYC tier limits — is a row in a config service, not a special case in code. The Bank of Ghana wants daily settlement reports by 11 AM GMT in a specific XBRL shape. The CBN wants near-real-time PSP reporting through their NIBSS gateway. The BCEAO wants weekly batch in a different XBRL shape. Each of these is an output adapter that reads from the same source of truth — our ledger. The ledger does not know it is reporting to anyone.
Kwame: And you got buy-in from the regulators on that approach?
Adwoa: We did, but it took relationships. The BoG audit team walked our engineering floor for three days. They asked us to demonstrate, end to end, how a single transaction propagated to their report. We showed them, and they signed off. The CBN was tougher. Nigerian PSP licensing requires you to demonstrate operational separability — that a Ghanaian outage cannot take down the Nigerian service. So we had to architect for cellular failure from the start. Each country runs in its own cell, with its own Postgres cluster, its own Kafka cluster, its own Temporal cluster. They share code, they share the control plane, but they do not share data plane resources.
Adaobi: Let us talk about the spine. What does the platform actually look like under the hood?
Adwoa: Top to bottom: a Go-based authorization service that handles the synchronous hot path — KYC check, balance check, risk score, decision in under sixty milliseconds. Behind that, Kafka as the event log. Behind Kafka, three Postgres roles: the ledger, the wallet store, and the audit store. Temporal handles every long-running workflow — settlement, reconciliation, regulator reporting, refund processing. Anything that takes more than a hundred milliseconds is a Temporal workflow. That decision alone saved us probably six months of debugging in year two.
Kwame: Why Temporal specifically?
Adwoa: Because financial workflows fail in the middle. A settlement run might span four hours and touch six partner banks. Any one of those banks can be down for ninety seconds. With Temporal, the workflow just waits, retries, and resumes from exactly where it was. We do not have to write our own state machines. We do not have to write our own retry logic. We do not have to write our own observability. It is in the box. The cost is that you have to think in workflows, which is unfamiliar to engineers coming from a request-response world. We lost two engineers in the first quarter who did not adapt. But the ones who did are now ten times more productive than they were.
Adaobi: Now tell us about the live ops side. You launched four countries in nine months after the rebuild. That is an aggressive cadence.
Adwoa: It was aggressive and we paid for it in the operations team. We launched Ghana — well, re-launched on the new platform — in March. Cote d'Ivoire in May. Senegal in July. Nigeria in November. The Nigerian launch was the hardest because we had to negotiate a real-time reporting feed with NIBSS that no other PSP had, and because the cutover from the old fork was a six-week dual-running period. We had two ledgers in production. Engineers were on rotation across four time zones. We ran a follow-the-sun ops model: Accra owns 06:00 to 14:00 GMT, Lagos owns 14:00 to 22:00, and a small team in Nairobi covers the overnight. That model only works because the on-call runbook is exhaustive. Every alert maps to a runbook. Every runbook is reviewed quarterly.
Kwame: What would you do differently if you started today?
Adwoa: Three things. One: I would invest in the data platform earlier. We treated analytics as a downstream concern for the first year and we paid for it when the regulators started asking questions we could not answer in less than three days. Two: I would hire a dedicated regulator-relations person from day one. We had product people handling those relationships for the first six months and it slowed us down. Three: I would be more honest about the cost of operational separability. Cellular architecture is the right decision, but it is not free. Every change touches four pipelines. Every incident review involves four on-call rotations. If I had known the steady-state operational cost I would have planned the team differently.
Adaobi: And what is next?
Adwoa: AfCFTA. The African Continental Free Trade Area is the largest free trade zone in the world by member count, and the digital payments rails are basically unbuilt. We are working with two central banks on a corridor pilot that would let a wallet user in Accra send to a wallet user in Kigali through a single API call, in local currency on both sides, with the FX leg settling on a central bank instrument. If we can demonstrate that at small scale this year, the next four years of our roadmap basically writes itself. That is the prize.
Kwame: Adwoa, thank you. This was excellent.
Adwoa: Thanks for having me.