Naxcrow
An escrow and payments platform for buyers and sellers across African markets who have no reason to trust each other yet.

The constraint
Two strangers agree a price. One has the goods, the other has the money, and neither will move first. The platform has to hold the money in a way both sides believe, release it only when a condition both sides agreed to is met, and have an answer ready for the day they disagree about whether it was.
What most people would have built
A wallet balance and a manual refund button. It works for the first hundred trades and then the support inbox becomes the escrow engine, run by whoever is awake.
Escrow as a state machine
Every trade is a state, and every transition is logged. Initiated, funded, held, released, disputed, refunded, expired, reversed. There is no path out of held that the ledger cannot account for, which is the difference between escrow and a bank account with a promise attached.

Milestones, not lump sums
Larger trades release in stages, each against its own condition. A buyer never funds the whole job up front and a seller never delivers everything before seeing a naira, so the exposure on both sides stays bounded at every step.
Money in, money out
Payments clear through several gateways so a single provider outage does not stop the platform. Each transaction carries an idempotency key, so a retried webhook resolves to the same result instead of paying twice.
Identity above a threshold
KYC is not asked for at signup. It steps in once a trade crosses a value, so a small first trade has no friction and a large withdrawal cannot leave without documents. Onboarding is one screen.

Disputes, with AI in the loop and a human at the end
When a trade is contested, an AI pass reads both sides, routes the case to the right queue and writes a summary for the person who will decide. It never decides. The summary is labelled as machine generated so nobody mistakes it for a finding.
What it taught us
The dispute path is the product. Everything else is the happy case, and the happy case is the easy half. If we built it again the dispute states would go into the ledger on the first day, not after the first argument.