I ship reliable
software for money-
moving teams.
I build payments, ledger and back-office systems for African fintech teams. Nine years in — half of that on production infrastructure that moves real money.

Four defaults, non-negotiable.
Every engagement is scoped from scratch. These four things are not.
Nothing lands without tests
Unit + integration for anything money-touching. If it can't be tested, we redesign it until it can.
Boring on purpose
TypeScript, Postgres, Go. Nothing exotic. Everything observable. I optimise for the on-call engineer at 3am, not my LinkedIn.
Weekly demos
Every Friday you see what shipped, what didn't, and what's coming next week. No surprises at end of month.
Full handover
Runbooks, on-call docs, a 3-day workshop with the internal team. When I leave, nothing breaks.
Kobo Ledger
TypeScript · Go · Postgres · Kafka
Rebuilt the balances engine from a fragile MySQL trigger stack into a Go service backed by Postgres and a Kafka event log. Introduced deterministic reconciliation, per-currency accounts, and a settlement engine that closes books in under 4 minutes at day end.
- Zero unreconciled cents across 14 months of production
- Books close in <4 min at day end (down from 3 hours)
- Dropped a 22-service microservices sprawl to 6 well-owned services

Recent projects.
A snapshot of the last three years. Every case study links to a longer write-up.

Kobo Ledger
Owned the double-entry ledger for a West-African payments processor moving ₦40B/month with zero reconciliation drift.

Zango Checkout
Embedded with a two-founder team to ship a hosted checkout used by 1,200 African SMBs — from empty repo to first cedi in 11 weeks.

One-Week Architecture Review
A structured week reviewing your codebase, incidents and roadmap — you leave with a 30-page report and a 90-day plan.
“Chinedu rewrote our ledger without a single reconciliation error in production. That has never happened before, or since.”
Uche Mbah · CTO · Series-B fintech
What teams tell each other.
“Chinedu rewrote our ledger without a single reconciliation error in production. That has never happened before, or since.”
“He's the most senior engineer we've ever hired for eight weeks. Documentation, tests, on-call — it all just showed up.”
“The one-week review saved us a six-month rewrite. His 90-day plan is still what we're executing against 14 months later.”
“I ping him in Slack, he replies within the hour with something useful. The advisory retainer pays for itself in one hiring call.”
“kudi/queue has been the calmest part of our infra for two years. Boring in the best way.”
“He walked us through the raise from a technical-diligence perspective. We closed with two competing term sheets.”

Chinedu Okafor
Senior full-stack engineer · TypeScript, Go, Postgres · ex-Paystack
I started shipping to production in 2016 during my final year at UNILAG. The next six years I moved from small studios to a payments company where I owned the ledger.
Today I work with a small number of teams as a senior engineer — usually the second or third technical hire helping a founding team scale from prototype to Series A.
The stack is opinionated on purpose: TypeScript (Next.js, Node), Go for services, Postgres and a few battle-tested queues. Nothing exotic. Everything observable.
Before we work together.
It always starts with a 30-minute intro call — free, no pitch. I use it to see if the work you need lines up with what I do. If we're a fit, I send a written scope within 3 days.
Have a project in mind?
Book a 30-min intro call. If we're a fit, I send a written scope within 3 days.