Skip to main content

PORTFOLIO

Government Revenue & Transport

Revenue platforms for state governments, a commercial tricycle registration and collections system for Kano State, contactless transit ticketing in Kaduna, and traffic simulation at city scale.

Revenue and Movement

Public-sector revenue and public transport turn out to be the same problem wearing different clothes. In both cases a large number of small payments are collected in the field by people who are not at a desk, often in places with poor connectivity, and the institution’s difficulty is not collecting the money but knowing afterwards how much was collected, by whom, and from whom.

Everything in this section is built around that reality. Field capture works offline and reconciles when a connection returns. Every collection is attributed to a named collector and a registered payer. Sweeps to designated accounts are same-day rather than end-of-month, because the longer money sits in an intermediate account the harder it becomes to explain.

The transport work extends this into vehicle and driver identity. Registering a commercial tricycle, verifying its owner, licensing its driver and tracking its movement are the preconditions for collecting from it fairly, and they are also what makes the sector governable at all.

Systems in this domain

Gombe IGR Platform

Gombe State · delivered

A completed internally generated revenue platform for Gombe State, delivered as a containerised Drupal application with its full revenue configuration and data, so the environment can be reproduced exactly for support or audit.

IGR Revenue Platform

Revenue administration

An earlier internally generated revenue platform covering assessment, demand notice generation and payment tracking, built on a React front end with a hosted real-time backend.

Sufuri — Kano State Transport

Kano State · platform

Commercial tricycle registration and management for Kano State. Covers owner and driver know-your-customer verification, vehicle registration, driver licensing, GPS tracking and payment collection, with a collections application, an agent application and a rider-facing super app on top of the Drupal 11 core.

EASEE Electric Mobility

Kaduna State · transit

A contactless transit ticketing network for Kaduna State built around electric three-wheelers. Uses raw NFC and EMV card reading so a commuter taps a card rather than handling cash, with transit wallets the rider manages themselves.

Kano Fleet Simulation

Modelling

Real-time simulation of more than five thousand commercial vehicles across Kano, built to model collection coverage and fleet behaviour before committing to a deployment. Traffic simulation feeding a streaming pipeline and a browser-based map visualisation.

NAWASIP Citizen App

Federal ministry

The citizen-facing application for the National Water and Sanitation Intelligence Platform, rebuilt in Flutter for the Federal Ministry of Water Resources and Sanitation.

Technical detail

System Stack Notable capability
Gombe IGR Platform Drupal, MariaDB, Docker Compose Reproducible environment shipped with its own seed data
IGR Revenue Platform React, hosted real-time datastore Assessment and demand notice generation
Sufuri Drupal 11 core, Flutter apps, native Android collections client KYC, licensing, GPS and collections in one register
EASEE Multi-language stack spanning mobile, embedded and backend Raw NFC and EMV card reading for offline-capable fare capture
Kano Fleet Simulation SUMO traffic simulation, Redis Streams, WebSocket gateway, Deck.gl Delta-encoded binary frames for five thousand live vehicles
NAWASIP Citizen App Flutter, ported from React Native Citizen reporting against a national platform

Why offline capture matters

Every field system in this section captures offline and reconciles later. A collector who cannot issue a receipt because there is no signal will either turn the payer away or take the money informally, and both outcomes cost the institution more than the connectivity would have.

Collecting revenue you cannot fully account for?

The pattern is almost always the same: several collecting agencies, no shared payer identity, and no same-day sweep. We start by mapping what exists before proposing anything.