STRIPED DONKEYWe do the heavy lifting.
Developer quick start →

Nairobi + Lagos · Free comparison collection

Two cities.
A wider perspective.

Compare the domains, explore the records, and take both synthetic city models into your next project.

44domains to explore
40original sample files
3,902free sample rows

Two synthetic city models.
Read the scope & sources ↗

Side by side

Find your point of comparison.

Download coverage index ↓

Domain coverage

Domain availability and samples in Nairobi and Lagos. Two domains per page.
DomainNairobi KenyaLagos Nigeria

Source field counts describe each original download. Samples from different domains are independently selected.

Population explains the city. Connected records explain the lives inside it.

Follow the records

Start with a question.

Try the connected example ↗

Available histories differ by city; each explorer explains its scope.

One collection. Both cities.

Ready to explore locally.

40 original CSV files, comparison metrics, model timelines and runnable Python + SQL.

Run the comparison in Python & SQL

Extract the ZIP and run this command in its folder. Python 3 is the only prerequisite; no packages, account or network connection are needed.

Terminal
python compare.py

The script verifies hashes and source values, then runs the supplied SQLite queries. It writes no files. Samples remain separate by city and domain.

Example · matching definitions
SELECT domain, metric,
  MAX(CASE WHEN city = 'nairobi' THEN value END) AS nairobi,
  MAX(CASE WHEN city = 'lagos' THEN value END) AS lagos
FROM metrics
WHERE status = 'published'
GROUP BY domain, metric;

Open the connected-sample quick start ↗
Scope, sources & evidence

Nairobi and Lagos are the only cities included; they do not represent all of Africa or their countries. Source dates and original schemas travel with the downloads. The row total spans different record types and is not a count of people.

City IDs must remain distinct. Independently selected domain samples do not form a single connected population. Insurance's pending-regeneration zero is marked unavailable in the comparison. Record counts and structural checks do not establish empirical accuracy.