Pulse — Fintech Protocol

Problem

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.

Research

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.

Challenges

The Double-Spend Problem

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.

My Role

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.

Architecture

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:

Design Process

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.

Development

The stack focused on performance and reliability on low-end devices:

Node.js React Native PostgreSQL SQLite (offline) ECDSA / secp256k1 Supabase

Results

Lessons Learned

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.

Interested in Pulse?

I'm actively looking for partners and early adopters in the fintech and emerging markets space.

Get in Touch ↗ ← Back to Works