Back to the map

Methodology & sources

Official

UP NEPA! is a free, public-good map of electricity reliability in Lagos. For every feeder it shows the official NERC band promise — the minimum daily hours of supply the tariff commits to — set against officially-announced disruptions. Nothing more, nothing less.

What this map shows — and what it does not

This is a promise-vs-announced map. It puts two official facts side by side:

  • the promise: the NERC tariff band each feeder is on, which carries a guaranteed minimum number of supply hours per day; and
  • the announced disruptions: planned maintenance and outages that the distribution companies (DisCos) publish themselves.

UP NEPA! does not measure how much electricity was actually delivered to your home. It cannot tell you whether the light was on at 9 p.m. last night. A day with no announced outage is not a verified-supply day — it simply means nothing was announced.

The honest “gap” model

For each feeder, each day, we compute a single derived figure:

effective = clamp(promised − announced loss, 0, promised)

The promised hours come from the feeder’s NERC band. The announced loss is the total hours removed by officially-announced disruptions overlapping that day. The result is the effective promise after announcements.

This is a deliberately conservative, official-only number. It is the gap between what was promised and what was officially taken away — never a claim about reality on the ground.

Why there is no “measured delivery” data

You might expect a simple feed of “hours of power delivered per feeder.” It does not exist publicly. NERC’s Service-Based Tariff order requires DisCos to publish a daily, rolling 7-day average of hours-of-supply for every Band A feeder — but in practice neither EKEDC nor Ikeja Electric publishes a usable per-feeder dataset.

The only official “measured” signal is NERC’s roughly monthly Band A downgrade orders, which name feeders that failed to meet their committed hours. These arrive as scanned PDFs, cover only a slice of feeders, and lag by weeks. They are useful context but cannot power a live map.

So UP NEPA! ships the honest model it can build today from official sources, rather than implying a measurement it does not have.

The NERC bands

Under the Service-Based Tariff, every feeder is assigned a band, and each band carries a minimum guaranteed daily supply commitment:

BandPromised hours/day
Band A20h
Band B16h
Band C12h
Band D8h
Band E4h

Source: NERC Service-Based Tariff (band minimum hours). NERC electricity tariffs. Band minimums are applied as a single constant in the codebase, so a regulatory correction is a one-line change.

Where the announcements come from

Disruption announcements are collected automatically from official DisCo channels — the EKEDC (@EKEDP) and Ikeja Electric (@IkejaElectric) social feeds, plus their website notice pages. A language model reads each post and extracts the affected areas, timing, and type; every imported record links back to its original source so you can verify it yourself.

Auto-imported announcements are labelled “auto-imported” until a human confirms them, at which point they become “verified”. Area names are fuzzy-matched to feeders; anything we cannot confidently match is logged and skipped rather than guessed.

Locations are approximate

There is no public dataset of exact per-feeder GPS coordinates. Feeder positions on the map are approximate, area-centroid based — derived from the feeder’s name and service area, not a surveyed location. The “Areas” overlay draws an indicative radius around each point, not a real service boundary. Treat positions as “this neighbourhood,” not “this transformer.”

Map tiles

Base map imagery is served from public Google Maps tiles, with a CARTO fallback. Tile providers are configured through a single pluggable registry so the basemap can be swapped without touching the rest of the app. Imagery is used for orientation only and remains the property of its respective providers.

Coverage is best-effort

The feeder list is compiled from official DisCo publications and press releases. It is not exhaustive: documentation skews toward Band A and Band B feeders, so coverage is denser there. Bands are reliable; the exact feeder roster is best-effort and will grow. This is a transparency tool, not an official register.

What’s coming next
A future, community-reported layer:
Community · soon

The honest gap model is the foundation. The next layer is a community-reported “is the light on right now?” stream — a genuinely measured signal contributed by people on the ground. The data-stream badges and the reserved “Live status” slot you see in the app are the architectural seams for that layer; it can be added without a rewrite. Until then, everything on the map is official promise vs official announcement.