A fintech infrastructure protocol for emerging markets — delivering offline payment guarantees secured with ECDSA signatures across a resilient seven-layer architecture.
In Nigeria and across Sub-Saharan Africa, unreliable internet connectivity is a constant reality. Millions of people are locked out of digital financial services every day — not because they don't have a phone, or a bank account — but because a 3G tower went down, or USSD is congested, or the POS machine has no signal.
Existing fintech infrastructure assumes a persistent connection. That assumption fails constantly in emerging markets, and it costs real money for real people.
Before writing any code, I spent weeks talking to local merchants and analyzing existing payment methods. The research highlighted that while mobile money (USSD) exists, it is highly prone to network timeouts. We needed a solution that was entirely decoupled from real-time network availability, relying instead on cryptographic trust established between two nearby devices.
The hardest engineering challenge was designing the escrow mechanism to prevent double-spending without access to a shared ledger. The solution was a deterministic nonce system tied to the device clock plus a monotonic counter — making replay attacks computationally infeasible even in offline conditions.
As the founder and lead engineer, I was responsible for the entire product lifecycle. I designed the architecture, built the frontend interfaces, and implemented the core Node.js payment layer and cryptographic validation engine.
Pulse is a seven-layer offline payment protocol. It allows two parties to execute a financially guaranteed transaction using cryptographic proofs that are reconciled with the network when connectivity is restored.
flowchart LR
A[User] -->|Signs Intent| B(Authorization)
B -->|Locks Funds| C(Escrow)
C -->|Encodes Txn| D(Transport)
D -->|Scans QR/NFC| E(Peer Device)
E -->|Stores Txn| F(Queue)
F -->|Connectivity Restored| G(Settlement)
The protocol is structured in distinct layers, including:
The UX had to be foolproof. Since users might be offline, the interface needed to communicate transaction finality without a network confirmation. I designed clear, color-coded states and deterministic loading indicators to build trust in the offline process.
The stack focused on performance and reliability on low-end devices:
Building Pulse taught me that the most challenging engineering problems are not about writing clever code — they are about designing systems that remain correct when all your assumptions break down. Network reliability is an assumption. Clock synchronization is an assumption.
The discipline of adversarial thinking — asking "what if this component is unavailable?" at every layer — is something I now apply to every system I design, regardless of whether it touches payments.
I'm actively looking for partners and early adopters in the fintech and emerging markets space.