Walk through any trading centre in Kampala and you will not find a shortage of work. You will find the opposite — people moving constantly, carrying stock, counting cash, chasing payments, reconciling by memory. The effort is total. The output is a fraction of it.
That gap is the whole story.
Africa is not poor — Africa is poorly optimized. The one who solves friction owns the market.
A market is a system
A market moves goods from where they are to where they are wanted, and money back the other way. When that movement is smooth, a small amount of capital does a large amount of work. When it is not, the same capital is consumed by the journey itself — by every reconciliation done twice, every order placed on a hunch, every payment that takes three days to confirm.
The mistake is to read the symptom as the cause. Thin margins, stockouts, unbanked traders — these are outputs of an unoptimized system, not the nature of the place. Change the system and the outputs change with it. That is the premise behind every product the studio builds.
Where the friction hides
Friction is rarely dramatic. It hides in the ordinary:
- Inventory that lives in one person’s head, so the business cannot grow past that person’s attention.
- Three separate ledgers — shop, phone, notebook — that never agree.
- A creditworthy trader who is invisible to lenders because nothing recorded their reliability.
- Distribution that depends on who you happen to know.
None of these is a money problem. Each is a systems problem wearing a money problem’s clothes.
A worked example
Consider a retry. A mobile-money payment fails — the network blinked. In an unoptimized shop, that failure becomes a lost sale and an argument. In a system, it becomes a line of code:
async function settle(payment: Payment): Promise<Result> {
for (const attempt of backoff({ tries: 4, base: 2_000 })) {
const res = await provider.charge(payment);
if (res.ok) return res;
if (!res.retryable) break;
}
return queueForReconciliation(payment);
}
The friction did not disappear — networks still blink. But it stopped being the trader’s problem. That is what optimization means in practice: moving a cost from a person who cannot absorb it into a system that can.
Friction is measurable
The reason this matters is that friction has a price, and the price is legible. A rough accounting for a typical SME:
| Source of friction | Where the cost lands | Recoverable? |
|---|---|---|
| Manual reconciliation | Hours per day, errors | Yes |
| Stockouts / overstock | Lost sales, dead capital | Yes |
| No credit history | Capital priced too high | Yes |
| Ad-hoc distribution | Slow, uneven reach | Yes |
Every row is recoverable. That is the opportunity — not aid, not sympathy, but optimization with an owner.
So the work, in order, is plain:
- Make the ordinary parts of commerce — selling, stock, payment — work as one system.
- Let that system record what was previously invisible.
- Use the record to unlock the next constraint, usually capital.
This is not a story about a poor continent waiting for help. It is a story about an under-built one waiting for systems. The friction is real, it is large, and it is recoverable — and recovering it is a market, not a charity.
Whoever builds the system that removes it does not just serve the market. They own it.