Case studies

A live, verifiable out-of-school-children monitoring dashboard

A live dashboard reading directly from a cloud data warehouse that corrects how children are counted, keeps all personal data out of the reporting layer, and has every figure independently reconciled before publication.

· Education

The challenge

A state-level public basic education body and its partners needed one trustworthy view of how many school-aged children are out of school, where they are, how many have been returned to school and by which organisations, and whether those children stay enrolled. We designed and built this dashboard, and later upgraded it into a live system reading directly from the client's cloud data warehouse, with nothing hard-coded.

The upgrade also corrected how children were counted: children enrolled from outside the household survey were being combined with children identified within it, which inflated the re-enrolment picture and meant the number of children still out of school could not fall correctly. Inconsistent spellings of areas, organisations and projects were splitting the same entity across several rows, and a handful of invalid records were quietly reducing totals.

The approach

We built a live, four-page dashboard that reads directly from the client's cloud data warehouse on every view, across every local government area in three states in northern Nigeria, working over a household survey of several hundred thousand households and well over a million child records. It uses a precise area map built from official boundaries, and adds organisation, project and institution views and a school-level enrolment-and-dropout tracking section.

The heart of the work was counting correctly and making it checkable. The flag that distinguishes children identified in the household survey from those enrolled outside it is now used properly, so the headline re-enrolment figures reflect the identified caseload and outside enrolments are reported separately. All cleaning runs as scripted queries inside the warehouse at refresh time, so no cleaned copy is stored and the source is never altered: names are matched to one canonical form, new spellings attach automatically, and anything unmatched is still counted and flagged rather than dropped. Negative counts are excluded and flagged, and where a school is visited more than once in a year only the latest visit is used.

We delivered a reconciliation script that recomputes every headline figure directly from the raw columns and checks the identities between them; the client ran it before publishing and every check passed, and every breakdown was confirmed to sum to the headline totals. Before each release the whole model was validated with the platform's own engine and parsers and a custom checker, and the logic was tested against deliberately messy synthetic data. During review we identified records that looked like test submissions and advised removing them before going live.

The source holds personal data, including children's, caregivers' and head-teachers' names and phone numbers. Every query selects only the fields needed for aggregate reporting, so no names or phone numbers reach the dashboard at all; for individual dropout records, only an anonymous code is read, never a name. The data stays in the client's own warehouse under the client's credentials, and the dashboard shows only counts and rates by area and category.

What was built

  • A live four-page dashboard reading directly from the client's cloud data warehouse
  • A corrected count that separates children identified in the survey from outside enrolments
  • A scripted, in-warehouse cleaning layer with canonical name matching and a quality flag for anything unmatched
  • A precise area map built from official boundaries
  • Organisation, project and institution views and a school-level enrolment-and-dropout tracker
  • A client-run reconciliation script that recomputes every headline figure independently

The outcome

The upgraded dashboard went live as a system that updates itself from the warehouse. Re-enrolment figures now reflect only the children identified in the survey, a new section tracks whole-school enrolment and dropout, and the review surfaced data-quality issues and likely test records before they reached a published figure.

Monitoring that drives funding and targeting has to be counted correctly and has to be checkable. This project shows both: a counting flaw corrected so the headline measures mean what they say, all cleaning scripted and reversible, personal data kept entirely out of the reporting layer, and every number independently recomputed and signed off before publication.

PythonPower BISQLBigQuery

Have something similar in mind?

Describe the problem and we will tell you honestly whether we can help.

Start a project