Case study 09 · Geospatial · Network coverage

Mapping terminal access in Nigeria

Payment terminals are how most Nigerians reach a financial service: a shop or kiosk nearby where they can withdraw, deposit or send money. For the SVP of Distributed Network Sales, I set every terminal against the population it serves, for every state and local government area, and checked whether each state's terminals were being serviced from that state.

Role
Analyst, from data pull to map
Context
The POS terminal network of a leading Nigerian fintech
Methods
Point-in-polygon joins, per-capita density indexing, location reconciliation
Tools
SQL, Excel, TypeScript, Leaflet, Chart.js

Situation

The terminal network had grown across all 37 states, and the business wanted one view of where terminals were thin relative to the people they serve.

Task

The SVP of Distributed Network Sales asked where coverage was thin, down to local government level, and whether terminals were being serviced by a support centre in the state where they actually sit.

Action

Placed terminal counts for more than 750 local government areas on their boundaries by coordinates, set them against population, indexed every area to the national rate, and compared terminals by location with terminals by support centre for each state.

Result

Coverage was steeply concentrated: the FCT at the national rate, parts of the north-west under a quarter of it. In of 37 states, location and servicing differed by 30% or more, and I flagged them for reconciliation.

Situation and task

A payment terminal is an investment placed in a neighbourhood: an agent or a shop takes it, and the people around them use it to withdraw cash, make deposits and send money. Where terminals are thin, people travel further or go without. The network had grown quickly, state by state, and the SVP of Distributed Network Sales wanted to see it in one place: where terminals are thin compared with the population they serve, at the level of the local government area, where deployment decisions actually play out.

Alongside that sat an operational question. Each terminal is looked after by a support centre. If a state's terminals are serviced from a different state, field support is slower and the regional numbers are hard to read, because volume shows up against one state's team while the merchant sits in another.

Density, not counts

Raw terminal counts mostly measure population: big states have more of everything. So I divided each area's terminals by its population and indexed the result to the national rate. An area at 100 has exactly the national number of terminals per person; 200 has twice as many; 50 has half. That makes a small northern area comparable with a Lagos borough, and keeps the actual counts private.

Terminals per person, against the national rateReal data, indexed

Index: terminals per person in the area, divided by the national rate, × 100. Grey areas have no terminal data. "Serviced from elsewhere" compares the terminals located in a state with the terminals its support centres look after. Boundaries: geoBoundaries / GRID3 (CC BY 4.0). No terminal counts are shown.

What the map shows

the FCT's density against the national rate
the median local government area's index (national = 100)
of local government areas below half the national rate
of terminals in the best-served tenth of the population
Every state, side by sideReal data, indexed

Terminal density

terminals per person, national rate = 100

Serviced from elsewhere

terminals the state's support centres service, vs terminals located in the state

Both charts list states in the same order, densest first, so a state's density and its servicing gap sit on the same row. Right: +50% means the state's support centres look after half as many terminals again as sit in the state; −30% means 30% of the state's terminals are looked after from somewhere else. Hover a bar for the state's share of terminals and of population.

Terminals serviced from another state

Comparing where each terminal sits with the support centre that services it showed a clear split:

Either the terminals were assigned to the wrong support centre, or their recorded location was out of date. Both matter. A mismatch slows field support, and it distorts regional performance numbers, because a terminal's volume is credited to one state's team while it trades in another. I flagged the states where the two counts differed by 30% or more, of 37, for reconciliation.

How it was built

  1. Pull. Terminal counts by local government area, with each area's coordinates and population, and by state twice: once by where the business is, once by the support centre that services it.
  2. Place. Local government names repeat across states (there is more than one Surulere, Obi and Irepodun), so I placed each area by testing its coordinates against the boundary polygons rather than matching names, and fell back to names only where a point missed every polygon.
  3. Normalise. Terminals per person for every area and state, divided by the national rate to give an index, so no counts need to leave the analysis.
  4. Reconcile. Terminals by support centre against terminals by location, state by state, to find the servicing gap.
  5. Ship. One data file of indexes and percentages, drawn on simplified boundaries in the browser.

Caveats

Skills shown

Geospatial joinsPer-capita normalisationData reconciliationInteractive mappingNetwork coverage analysis