Home codes

An address for every compound: a national addressing model for Senegal

October 2026. The text of the paper is the same as in the open repository.

Also in Français

Open on GitHub Download the PDF Get my code

Ouakam 2512OuakamDakar
Ouakam Official name, in small printOUAKAM 2512 · DAKAR as written on plates and forms, with the zone

Abstract

Senegal’s postcodes identify delivery offices, its street plates cover parts of nine cities, and its national digital addressing programme has not yet published a format; most of its 18.1 million residents cannot give an address that leads to their gate. We present a national addressing model built for Senegal and the registry issued with it, which gives each of 3,597,128 compounds an address of the form place word + number, such as Ouakam 2512. Places that share a name draw their numbers from one national range per name, cut into disjoint blocks, so the spoken address is unique in the country without a town or a position. Numbers follow a Hilbert curve with a threefold reserve for growth; a machine form carries an ISO/IEC 7064 check letter that people never see; and any point receives an offline spot code on the UTM 28N grid. On the full registry every address decodes to exactly one compound, consecutive numbers lie a median 23 m apart, and 76 % of one-digit slips match no address. Government addresses are shown first wherever they exist. Specification, engine, registry and server are open.

Keywords: street addressing; place names; check characters; space-filling curves; building footprints; Senegal.

1 Introduction

1.1 The problem

An address does three things. It lets a person say where they live, it lets someone else find that place, and it lets institutions refer to the same place in their records. In Senegal none of the existing systems does all three for most households. La Poste Sénégal’s postcodes identify a delivery office and its area: the single code 22300 covers the whole of Touba, a city of more than a million people [1], [2]. The blue street plates and metric door numbers installed by municipal programmes since the late 1990s cover parts of nine cities and are, by the government’s own account, largely incomplete and out of date [3], [4], [5]. The national digital addressing programme, the Adressage Numérique National (ANN), was relaunched on 5–6 August 2026 with the aim of a single geo-referenced address register; it has not yet published a format, a platform or data [6], [7]. Directions are still given by landmark: “face BCEAO”, “derrière la mosquée”.

The cost of this gap falls on the people with the least. A delivery rider calls the customer several times before finding the gate; an ambulance crew depends on a caller’s local knowledge; a household cannot prove where it lives to a bank or a utility. Conventional street addressing, which names streets and numbers doors, costs money, takes years and decays when it is not used [3]. Most of Senegal’s compounds lie in villages and dense urban extensions where streets have no names at all.

1.2 Contribution

This paper describes a national addressing model built for Senegal and the registry issued with it in October 2026. Its contributions are:

  1. A remembered form that needs no context. An address is a place word people already use followed by a short number, Ouakam 2512. Places that share a name draw from one national number range for that name, cut into disjoint blocks (Section 4.6), so the spoken address is unique in Senegal on its own. We prove that decoding is unique and verify it on all 3,597,128 issued addresses (Section 6.1).
  2. Short names by rule. A fixed rule derives a plate name of at most 12 characters and two words from each official place name, and sends the cases it cannot shorten safely to the commune (Section 4.4).
  3. Numbers that follow the ground. Within a place, numbers run along a Hilbert curve with a threefold reserve, so neighbours receive close numbers and new compounds can be inserted between them without renumbering (Sections 4.7–4.8).
  4. Error control that people never see. A machine form carries an ISO/IEC 7064 MOD 11-2 check letter written with eleven letters chosen for French speakers; the spoken and written forms carry none (Section 4.10).
  5. Government addresses first. A coverage mask shows the official street address, and later the ANN address, wherever one exists; the N-Ways address then serves as an alias (Section 4.14).
  6. An open, complete implementation. The specification, a standard-library reference engine, the full registry with checksums, and a server that any ministry or operator can deploy with one command are published under open licences, with conformance vectors and parity tests against the issuer (Section 5).

1.3 Structure

Section 2 reviews Senegal’s existing systems and international practice. Section 3 describes the data. Section 4 sets out the model, formula by formula, with a worked example on the address Ouakam 2512. Section 5 describes the implementation and Section 6 its measured properties. Section 7 records the designs we considered and rejected. Sections 8–11 examine the benefits to citizens, to logistics and commerce, to emergency services and to government. Section 12 covers privacy, safety and governance, Section 13 the limitations, and Section 14 concludes.

3 Data and sources

3.1 Building footprints

The registry is built from 5,643,096 building footprints: 1,378,821 from OpenStreetMap [26], [27] and 4,264,275 detected by machine learning from satellite imagery, from Google Open Buildings [28] and Microsoft’s global footprints [29] as distributed by Overture Maps [30]. After removing 10,415 footprints whose centroid falls outside the 2019 département outlines (on the coast and along the borders), 5,632,681 remain. The two sources complement each other unevenly (Figure 1): OpenStreetMap contributes 68 % of the footprints in Sédhiou and 59 % in Kolda, where community mapping has been intense, but under 10 % in Thiès, Diourbel and Kaffrine, where the machine-learned sets dominate.

Building footprints by region and source. OpenStreetMap against the machine-learned sets (Google Open Buildings and Microsoft, distributed by Overture Maps), in thousands. Source: model/building-stats.json.

The footprints carry little attribute information. Of the OpenStreetMap footprints, 1,099,686 are tagged only building=yes. Floors are known only where OpenStreetMap records them: for 515 footprints in Dakar département and 19 in Touba. The height column distributed with the machine-learned footprints holds 36 distinct values between 3.5 and 7.0 m across 4,257,726 rows; it is a rendering default, not a measurement, and the model never uses it.

3.2 Boundaries and places

Administrative outlines are the 2019 département (ADM2) and arrondissement (ADM3) boundaries of geoBoundaries, which derive from Government of Senegal data compiled by OCHA [31]. Place points come from OpenStreetMap place nodes and GeoNames populated places: 16,994 candidates, of which 1,142 GeoNames duplicates of OpenStreetMap places were removed, leaving 15,852, of which 14,997 receive at least one compound. Population figures are those of the fifth general census (RGPH-5, 2023): 18,126,390 residents [32]. Urban population growth is taken from the World Development Indicators [33]. The national border is OpenStreetMap’s admin_level 2 boundary of Senegal [27], and it decides which buildings are in the country: a building whose entrance lies more than 300 m outside it is in a neighbouring country and receives no address, whatever the département outlines say (Section 4.2).

3.3 What the building map shows

Grouping the 5,632,681 footprints into compounds by the rules of Section 4.12 yields 3,595,628 compounds in the analysis run; the issuing run, two days later and from the same sources, holds 3,597,128 (0.04 % more), and all counts of addresses below refer to the issued registry. Four observations shaped the model.

  • Compounds, not buildings. Outside Dakar and Ziguinchor, between 52 % and 62 % of footprints, depending on the region, lie in compounds of several structures; the share is 32.6 % in Dakar département and 49.5 % in Touba. One address per footprint would give a family concession of kitchens, rooms and annexes several addresses.
  • Gates are almost unknown. OpenStreetMap and the routing network hold 1,403 gates and entrances and 6,351 enclosures (walls, fences and gated sites) in the whole country. A gate is known for 126 of Dakar département’s 107,391 compounds and for 3 of Touba’s 289,293.
  • Uses are mostly inferred. Because most footprints carry no tag, building classes other than residential are rare in the counts, and most residential classes come from shape.
  • Settlement is dense where place points are sparse. Touba’s 289,328 compounds share 241 place points; Pikine’s 123,594 share 39. The numbers in these zones are long (Appendix A).
Footprints and compounds by region (analysis run). Classes other than residential and unknown each account for less than 1 % in every region and are given in model/building-stats.json.
Region Footprints Compounds In multi-structure compounds Median footprint (m²) Residential Unknown
Thiès 800,303 525,647 51.7 % 34 92.5 % 7.2 %
Diourbel 731,035 463,545 54.8 % 26 88.7 % 11.2 %
Dakar 530,668 413,099 35.8 % 77 95.0 % 3.7 %
Louga 516,209 322,353 55.8 % 22 91.3 % 8.6 %
Kaolack 442,506 272,452 55.5 % 26 90.4 % 9.4 %
Kolda 409,734 231,350 61.7 % 26 89.7 % 10.1 %
Saint-Louis 401,420 253,865 55.3 % 27 92.2 % 7.0 %
Fatick 374,909 211,817 60.9 % 23 91.7 % 8.1 %
Tambacounda 371,314 217,861 57.1 % 21 89.1 % 10.8 %
Kaffrine 308,780 182,828 56.4 % 21 81.5 % 18.4 %
Matam 280,135 175,981 54.5 % 22 93.5 % 6.3 %
Ziguinchor 166,969 129,377 37.7 % 83 97.5 % 1.7 %
Kédougou 150,063 99,037 49.0 % 21 71.9 % 27.5 %
Sédhiou 148,636 96,416 52.9 % 52 97.7 % 2.2 %

4 The model

4.1 The address and its forms

Each compound has one identity and four forms (the table below). All four map one to one. The remembered form contains no letters to learn and no check character. The zone name on the written form informs the reader; it is not part of the identity.

The four forms of an address. The machine form gives the zone, the place index, the number and the check letter; people never need it.
Form Example Used by
Remembered Ouakam 2512 everyone: said, written on a parcel, typed in a message
Written OUAKAM 2512 · DAKAR plates, stickers, forms
Machine SN-DKR-0080-2512-J databases, QR codes, partner systems
Spot DKR 5553 1512 any point with no compound

We use Ouakam 2512 as the worked example throughout. It is a single-storey house in the quartier of Ouakam, in zone DKR (Dakar), place index 80; its machine form is SN-DKR-0080-2512-J.

4.2 Zones

Each address hangs off a code zone, which supplies its written name, its registry file and its spot grid. The 14 régions are too large for one number space: Tambacounda covers 42,214 km², and Thiès holds 803,020 footprints. The zones are the 45 départements of the 2019 boundaries, with Mbacké split in two: its Ndame arrondissement, which holds Touba and Mbacké town and 417,008 footprints, becomes zone TBA, and the remainder becomes KTF (Kaël-Taïf). The zones were frozen when the registry was first issued and never follow later administrative changes. When Keur Massar became Senegal’s 46th département in 2021, a model tied to the administrative map would have had to readdress every home in it; here Keur Massar stays in zone PKN and its current département is an attribute of the place card. Figure 2 shows the 46 zones and the density of compounds.

The 46 frozen code zones and the density of the 3,597,128 issued addresses, in compounds per 4 km × 4 km cell on the UTM zone 28N grid. Sources: model/zones.geojson, registry/anchors/.

Let ZZ be the set of zones, each with an index ι(z)∈{0,…,45}\iota(z) \in \{0, \dots, 45\} in key order and an outline ∂z\partial z. A point pp lies in the zone

ζ(p)={arg⁡minz∈Z{ι(z):p∈int⁡∂z}if such a zone exists,arg⁡minz∈Zminv∈∂z‖π(p)−π(v)‖if that distance is at most 2000 m,⌀otherwise,\zeta(p) = \begin{cases} \arg\min_{z \in Z} \{\iota(z) : p \in \operatorname{int} \partial z\} & \text{if such a zone exists,}\\ \arg\min_{z \in Z} \min_{v \in \partial z} \lVert \pi(p) - \pi(v) \rVert & \text{if that distance is at most } 2\,000 \text{ m,}\\ \varnothing & \text{otherwise,} \end{cases} \tag{1}(1)

where π\pi is the projection to UTM zone 28N (Eq. (15)), vv runs over the vertices of the outline, and membership is tested by ray casting with holes excluded. The second case catches points on the coast and along river borders that the 2019 outlines miss.

The border decides. The département outlines, and the 2 km reach of Eq. (1) along coasts and rivers, can extend beyond the national border BB, OpenStreetMap’s admin_level 2 boundary. Whatever Eq. (1) gives, a point outside BB with min⁡q∈B‖π(p)−π(q)‖>300\min_{q \in B} \lVert \pi(p) - \pi(q) \rVert > 300 m is outside Senegal, ζ(p)=⌀\zeta(p) = \varnothing: grouping drops the structures and compounds that lie there (Section 4.12), the issuer gives them no address, and an entrance never moves there. The 300 m margin absorbs the positional error of footprints and of the border line itself, which follows rivers such as the Senegal and the Gambia. The engine ships the border simplified by Douglas–Peucker at 50 m; the simplified line strays at most 50.4 m from the true one, so the engine applies 249 m to it and never accepts a point more than 300 m outside the true border.

Each zone has a square frame in UTM metres, used for spot codes and for numbering. With EE and NN the eastings and northings of the zone’s outline,

E0=1000⌊min⁡E1000⌋,N0=1000⌊min⁡N1000⌋,F=1000⌈max⁡(max⁡E−E0,max⁡N−N0)1000⌉,s={min⁡{σ∈{1,2,5,10} m:F/σ≤104}if F≤100 km,10 motherwise,k={4if F/s≤104,5otherwise,\begin{aligned} E_0 &= 1000 \left\lfloor \tfrac{\min E}{1000} \right\rfloor, \qquad N_0 = 1000 \left\lfloor \tfrac{\min N}{1000} \right\rfloor, \qquad F = 1000 \left\lceil \tfrac{\max(\max E - E_0,\; \max N - N_0)}{1000} \right\rceil, \\ s &= \begin{cases} \min\{\sigma \in \{1, 2, 5, 10\} \text{ m} : F/\sigma \le 10^4\} & \text{if } F \le 100 \text{ km},\\ 10 \text{ m} & \text{otherwise,} \end{cases} \qquad k = \begin{cases} 4 & \text{if } F/s \le 10^4,\\ 5 & \text{otherwise,} \end{cases} \end{aligned} \tag{2}(2)

where FF is the side of the frame, ss the spot cell and kk the number of digits per axis of a spot code. For Dakar, E0=227000E_0 = 227\,000 m, N0=1620000N_0 = 1\,620\,000 m and F=16F = 16 km, so s=2s = 2 m and k=4k = 4. Across the 46 zones, Guédiawaye has 1 m cells, Dakar and Pikine 2 m, six zones (Touba, Saint-Louis, Rufisque, Bambey, Guinguinéo and Oussouye) 5 m and the rest 10 m; the 18 zones whose frames exceed 100 km have five digits per axis.

4.3 The place word

The place word is the quartier in towns, the village in the countryside, or the cité where a cité is what people say. Let Q(z)Q(z) be the quartiers, suburbs, villages, localities and cités of zone zz, and T(z)T(z) its towns. A compound cc takes the place

λ(c)={arg⁡minq∈Q(z)d(c,q)if minq∈Q(z)d(c,q)≤2500 m,arg⁡mint∈T(z)d(c,t)else, if mint∈T(z)d(c,t)≤10000 m,arg⁡minq∈Q(z)∪T(z)d(c,q)otherwise,\lambda(c) = \begin{cases} \arg\min_{q \in Q(z)} d(c, q) & \text{if } \min_{q \in Q(z)} d(c, q) \le 2\,500 \text{ m},\\ \arg\min_{t \in T(z)} d(c, t) & \text{else, if } \min_{t \in T(z)} d(c, t) \le 10\,000 \text{ m},\\ \arg\min_{q \in Q(z) \cup T(z)} d(c, q) & \text{otherwise,} \end{cases} \tag{3}(3)

where dd is the distance in UTM metres between the compound’s centroid and the place point, ties going to the lower place index. The assignment is fixed when the compound is first numbered and is never recomputed. If a quartier is renamed, split or disputed, the address does not change; the new name is added as an alias.

4.4 The plate name

Names taken from the map are often too long to say: “Keur Serigne Ablaye Yakhine”, “Parcelles Assainies”, “S.I.C.A.P. Liberté Six”. Each place therefore keeps two names. The official name is printed in small type on the card and the plate and is still accepted when typed. The plate name is the one in the address. Let |s||s| be the number of characters of a string ss in Unicode normalisation form C (an accented letter, a space, a hyphen or an apostrophe counts one) and w(s)w(s) its words, a hyphen separating words and a trailing sector numeral counting as a character but not as a word. A plate name is admissible when

ok⁡(s)⇔|s|≤12∧|w(s)\L|≤2,\operatorname{ok}(s) \iff |s| \le 12 \;\wedge\; \bigl|\, w(s) \setminus L \,\bigr| \le 2 , \tag{4}(4)

where LL is the set of linking words (de, du, des, d’, la, le, les, l’, et, sur, en, au, aux, à), which are not counted.

The plate name is derived by a fixed rule, in this order: (i) a short form people already use and for which a written source exists wins: “Saly” for Saly Portudal [34], “Plateau” for Dakar-Plateau [35]; (ii) otherwise the name is cleaned: a trailing numeral is written in digits, generic words (quartier, village de, hameau, lotissement), developer labels (S.I.C.A.P.), brackets and second spellings are dropped, so S.I.C.A.P. Liberté Six becomes “Liberté 6”; “Cité” is kept when the name fits (“Cité Lamy”), because that is how people say it; (iii) if the cleaned name still fails Eq. (4), the candidates are the runs of whole words that satisfy it, ranked by the rarity of their words among all Senegalese place names, and the best is taken only when its score is at least 1.5 times that of the next. No word is ever cut.

Many Senegalese names cannot be shortened safely. “Keur Momar Sarr” is the village of Momar Sarr, and any cut drops part of his name; the same holds for names opening with Darou, Médina, Saré, Sinthiou, Gourel or Touba, and for names that hold a given or family name. “Nguékokh Wolof” and “Nguékokh Sérère” are two villages, so an ethnic or compass qualifier is never dropped silently. A short form may not become the name of a well-known town or of another place in the same zone. In all these cases the place is flagged for its commune with up to three candidates; the first is used provisionally, and the commune may confirm it or choose another, once, without changing the number.

Of the 14,997 official names, 4,208 fail Eq. (4) (4,154 by length, 1,474 by words). The rule keeps 10,763 names as they are, cleans 100, applies a documented short form to 3 and keeps the most distinctive words of 1,016. It sends 3,116 to the commune: the 3,115 it cannot shorten safely, and one cleaned name, “Richard Toll” (from Campement Richard Toll), that would equal a well-known town. Of these, 172 have no admissible part (“Diabrikindiong”, “Touba Mosquée”) and stay over the limit until the commune decides. These 3,116 places hold 739,058 addresses. An official name that two different plate names would both claim is dropped as an alias, so that a typed name never leads to two places; this affects 55 names.

4.5 The name key

Two places bear the same name when their name keys are equal. The key folds everything that people confuse by ear or in spelling, in French and in Wolof [36]. It is the composition

κ(s)=τ∘χ∘ϕ∘β∘η∘ν∘σ∘α(s),\kappa(s) = \tau \circ \chi \circ \phi \circ \beta \circ \eta \circ \nu \circ \sigma \circ \alpha (s), \tag{5}(5)

whose steps are given in the table below, applied from right to left. Ouakam and Wakam both give wakam, Mbacké and Mbakke both give mbak, and Thiès and Ties both give ties. Folding too much only lengthens a range; folding too little would give two places one address, so the rule is deliberately generous.

The steps of the name key, Eq. (5).
Step Rule Example
α\alpha, letters ñ → ny, œ → oe, æ → ae; accents and case removed Kër → ker
σ\sigma, split hyphens, apostrophes, dots and brackets become spaces; St, Ste → saint Sacré-Cœur → sacre coeur
ν\nu, numeral a trailing number, with numéro or no before it, is dropped HLM 5 → hlm
η\eta, lead le, la, les, l’, de, du, d’, quartier, village, hameau dropped when more follows Quartier Médina → medina
β\beta, join spaces removed keur massar → keurmassar
ϕ\phi, fold ou before a vowel → w, other ou → u; eu → e; kh → x; th → t; ph → f; dj, and di before a vowel → j; gn → ny; c before e, i, y → s; ck, qu, q, c → k; y → i; silent h dropped Ouakam → wakam; Ndiaye → njai
χ\chi, collapse doubled letters become one gunass → gunas
τ\tau, trim a final silent e dropped njaiene → njaien

The plate names of the 14,997 places fold to 11,043 keys. Of these, 1,974 are borne by more than one place, 5,928 places in all, holding 41.9 % of compounds (1,506,591); 1,322 of the repeated names occur in several zones and 652 within one zone only. The most repeated is Ndiayène (32 places in 18 zones), followed by Mbayène and Thiékène (28 each), Darou Salam (23) and Ndiobène (22).

4.6 One national range per name

The places of one name key form a family ℱ\mathcal{F}. Each family has one national range of dd-digit numbers, [10d−1,10d−1][10^{d-1}, 10^d - 1], and each place i∈ℱi \in \mathcal{F} receives a block of it. A place with nin_i compounds at first issue needs a block of three times its compounds, rounded up to the grain gdg_d of the range:

b(ni,d)=gdmax⁡(1,⌈3nigd⌉),g3=10,g4=g5=100.b(n_i, d) = g_d \max\!\left(1, \left\lceil \frac{3 n_i}{g_d} \right\rceil\right), \qquad g_3 = 10,\quad g_4 = g_5 = 100 . \tag{6}(6)

The factor three is a reserve for growth. If the compounds of a place grow at a constant annual rate rr, the block fills after

T(r)=ln⁡3ln⁡(1+r)years.T(r) = \frac{\ln 3}{\ln(1 + r)} \ \text{years}. \tag{7}(7)

Senegal’s urban population grew by between 3.3 % and 4.8 % a year from 2015 to 2024, 4.6 % on average [33], which gives TT between 23 and 34 years, 24 years at the average. A place whose block fills does not run out: it receives a further block from its name’s free space (Eq. (13)).

All places of a family share one length d*d^*, the shortest for which their blocks fill at most 90 % of the range, so that at least a tenth stays free for new places of that name:

d*=min⁡{d∈{3,4,5}:∑i∈ℱb(ni,d)≤0.9⋅9⋅10d−1}.d^* = \min\left\{ d \in \{3, 4, 5\} : \sum_{i \in \mathcal{F}} b(n_i, d) \le 0.9 \cdot 9 \cdot 10^{d-1} \right\}. \tag{8}(8)

A three-digit range has 900 numbers, of which 810 may be allocated; a four-digit range 9,000 (8,100); a five-digit range 90,000 (81,000). A place alone therefore fits three digits up to 270 compounds, four up to 2,700 and five up to 27,000. Figure 3 shows how the places of Senegal distribute across these thresholds: the median place has 79 compounds and 12,434 of the 14,997 places have at most 270.

Compounds per place, for the 14,997 places of the registry, on logarithmic bins of five per decade. The dashed lines mark the largest place that fits alone in a three-, four- and five-digit range (Eq. (8)). Source: registry/.

Blocks are cut from the bottom of the range in the order (zone key, place index):

ℓ1=10d*−1,hi=ℓi+b(ni,d*)−1,ℓi+1=hi+1.\ell_1 = 10^{d^*-1}, \qquad h_i = \ell_i + b(n_i, d^*) - 1, \qquad \ell_{i+1} = h_i + 1 . \tag{9}(9)

Worked example. Ouakam is alone in its family (wakam, family 10796) and had n=788n = 788 compounds at first issue. Three digits would need 3×788=2364>8103 \times 788 = 2\,364 > 810 numbers, so d*=4d^* = 4 and b=100⌈2364/100⌉=2400b = 100 \lceil 2\,364/100 \rceil = 2\,400: Ouakam’s block is 1000–3399.

Repeated names show the scheme at work (Figure 4). The nine places called Médina share the five-digit range: Dakar’s Médina holds 10400–17699, Saint-Louis’s 19500–22799 and Ziguinchor’s 22800–23299, and 23300–99999 remains free. The 23 places called Darou Salam, in 17 zones, hold 22,082 compounds; Pikine’s Darou Salam has 23200–45799 and Touba’s 46200–76599, and 75.0 % of the range is allocated. With today’s counts no name needs more than five digits. Names that one day outgrow their range would take one established qualifier that people already use, decided once per name with the commune, as “Médina Baye” is already a name apart from “Médina”.

Two national name ranges. Every place called Médina, and every place called Darou Salam, draws its numbers from one five-digit range, cut into one block per place (Eqs. (6)–(9)); blocks alternate in colour, and grey is the part of the range still free. Source: model/name-families.json.

4.7 Numbering along a Hilbert curve

Within its block, a place’s compounds are numbered along a Hilbert curve [24], so that neighbours receive close numbers, as along a street. The zone’s frame is divided into 216×2162^{16} \times 2^{16} cells of side δ=F/216\delta = F / 2^{16}. A compound with centroid (E,N)(E, N) falls in the cell

x=min⁡(216−1,max(0,⌊E−E0δ⌋)),y=min⁡(216−1,max(0,⌊N−N0δ⌋)),x = \min\!\left(2^{16} - 1, \max\!\left(0, \left\lfloor \frac{E - E_0}{\delta} \right\rfloor\right)\right), \qquad y = \min\!\left(2^{16} - 1, \max\!\left(0, \left\lfloor \frac{N - N_0}{\delta} \right\rfloor\right)\right), \tag{10}(10)

and its Hilbert index H(x,y)H(x, y) is computed from the top level down. With h←0h \leftarrow 0 and, for m=215,214,…,1m = 2^{15}, 2^{14}, \dots, 1,

rx=[x&m≠0],ry=[y&m≠0],h←h+m2((3rx)⊕ry),(x,y)←{(m−1−y,m−1−x)if ry=0 and rx=1,(y,x)if ry=0 and rx=0,(x,y)if ry=1,\begin{aligned} r_x &= [\,x \mathbin{\&} m \ne 0\,], \qquad r_y = [\,y \mathbin{\&} m \ne 0\,], \qquad h \leftarrow h + m^2 \bigl( (3 r_x) \oplus r_y \bigr),\\ (x, y) &\leftarrow \begin{cases} (m - 1 - y,\; m - 1 - x) & \text{if } r_y = 0 \text{ and } r_x = 1,\\ (y, x) & \text{if } r_y = 0 \text{ and } r_x = 0,\\ (x, y) & \text{if } r_y = 1, \end{cases} \end{aligned} \tag{11}(11)

where &\& is the bitwise conjunction, ⊕\oplus the bitwise exclusive or and [⋅][\cdot] the indicator. Consecutive indices are always adjacent cells, and the curve keeps neighbouring cells together better than the Z-order and Gray-code curves [25].

At first issue, the nn compounds of a place with block [ℓ,h][\ell, h] are sorted by (H,E,N)(H, E, N) and spread evenly over the block:

Ni=ℓ+⌊(i+12)h−ℓ+1n⌋,i=0,…,n−1.N_i = \ell + \left\lfloor \left(i + \tfrac12\right) \frac{h - \ell + 1}{n} \right\rfloor, \qquad i = 0, \dots, n - 1 . \tag{12}(12)

With the threefold reserve there are on average two free numbers between neighbours.

Worked example. The centroid of Ouakam 2512 is at E=232438.4E = 232\,438.4 m, N=1629353.1N = 1\,629\,353.1 m. With δ=16000/65536≈0.244\delta = 16\,000 / 65\,536 \approx 0.244 m it lies in cell (22275,38310)(22\,275, 38\,310), of Hilbert index 20225921852\,022\,592\,185. Of Ouakam’s 788 compounds, 496 come before it on the curve, so i=496i = 496 and

N496=1000+⌊496.5×2400788⌋=1000+⌊1512.18⌋=2512.N_{496} = 1000 + \left\lfloor 496.5 \times \frac{2\,400}{788} \right\rfloor = 1000 + \lfloor 1\,512.18 \rfloor = 2512 .

Figure 5 shows the result for the whole quartier: the numbers sweep across Ouakam in contiguous patches, and the line joining consecutive numbers rarely jumps.

Ouakam’s 788 compounds at their centroids, coloured by the number issued, in metres from the origin of zone DKR’s frame. The grey line joins consecutive numbers, which is the order of the Hilbert curve (Eqs. (10)–(12)). Source: registry/DKR.csv.gz, registry/anchors/DKR.csv.gz.

4.8 New compounds

Issued numbers never change. A compound built after first issue, at Hilbert index HH in a place with first block [ℓ,h][\ell, h], has as neighbours the issued numbers aa just before and bb just after it on the curve (or ℓ−1\ell - 1 and h+1h + 1 at the ends). Its number is

$$N_{\text{new}} = \begin{cases} \lfloor (a + b)/2 \rfloor & \text{if } b - a \ge 2 \text{ and it is free,}\\ \min \text{ free number of the place's further blocks} & \text{else, if one exists,}\\ \ell' \text{, first of a new block } [\ell', \ell' + g_{d^*} - 1] & \text{else, if the name's range has room,}\\ \text{first number of "\textit{place} Extension"} & \text{otherwise.} \end{cases} \tag{13}$$

A new block is cut above the highest block of the name and is frozen at once. “Extension” follows how Senegalese towns already name their growth (Keur Massar Extension, Médina Gounass Extension); since the official name “Ouakam Extension” already exceeds twelve characters, the commune gives the new district its plate name. A retired number counts as used and is never given again.

4.9 Decoding with no context

A remembered address is decoded from the text alone. The trailing digits form the number DD and the words before them the name PP. The key κ(P)\kappa(P) gives the family, the family gives its length d*d^*, and the number is the last d*d^* digits of DD; any digits before them must equal the place’s sector numeral (“HLM 5 17 394”). The candidates are

dec⁡(P,D)={(i,N):i∈ℱ(κ(P)),N=Dmod⁡10d*,N∈Bi},\operatorname{dec}(P, D) = \bigl\{ (i, N) : i \in \mathcal{F}(\kappa(P)),\; N = D \bmod 10^{d^*},\; N \in B_i \bigr\}, \tag{14}(14)

where BiB_i is the union of the blocks of place ii.

Proposition 1. For any (P,D)(P, D), dec⁡(P,D)\operatorname{dec}(P, D) has at most one element. The blocks of one family are disjoint by construction (Eq. (9) and Eq. (13), which cuts new blocks only from free space), and d*d^* is fixed for the family, so NN is determined by DD and lies in at most one block. Aliases are kept only when they point to a single family (Section 4.4). ▫\square

Proposition 1 is what makes the spoken address unique in Senegal without a town or a position. Section 6.1 verifies it on every issued address.

4.10 The check letter

The machine form carries a check letter that people never see: not on plates, not on stickers and not in the spoken form. Its payload is the family identifier written with five digits followed by the number written with five, u=u1u2⋯u10u = u_1 u_2 \cdots u_{10}. It is computed with the pure system MOD 11-2 of ISO/IEC 7064 [21]:

p0=0,pk=2(pk−1+uk)mod⁡11(k=1,…,10),c=(12−p10)mod⁡11,p_0 = 0, \qquad p_k = 2\,(p_{k-1} + u_k) \bmod 11 \quad (k = 1, \dots, 10), \qquad c = (12 - p_{10}) \bmod 11, \tag{15}(15)

and written as the cc-th letter (from 0) of FHJKMQRTWXZ. The eleven letters were chosen for French speakers: one letter from each family of rhyming letter names (bé, cé, dé, gé, pé, té, vé), J rather than G (French speakers confuse “gé” and “ji”), and no vowels, so that no word can be formed.

Proposition 2. MOD 11-2 detects every single substitution and every transposition of two adjacent unequal digits. Unrolling Eq. (15), c≡1−∑kukwk(mod⁡11)c \equiv 1 - \sum_k u_k w_k \pmod{11} with weights wk=211−kmod⁡11w_k = 2^{11-k} \bmod 11, all non-zero because 2 is invertible modulo the prime 11. Replacing uku_k by uk′≠uku_k' \ne u_k changes the sum by (uk−uk′)wk(u_k - u_k')\,w_k, a product of two non-zero residues modulo a prime, hence non-zero. Swapping uku_k and uk+1u_{k+1} changes it by (uk−uk+1)(wk−wk+1)=(uk−uk+1)wk+1(u_k - u_{k+1})(w_k - w_{k+1}) = (u_k - u_{k+1})\,w_{k+1}, since wk=2wk+1w_k = 2 w_{k+1}, which is again non-zero when uk≠uk+1u_k \ne u_{k+1}. ▫\square

Worked example. For Ouakam 2512 the payload is u=1079602512u = 10796\,02512. The partial values p1,…,p10p_1, \dots, p_{10} are 2, 4, 0, 7, 4, 8, 9, 6, 3, 10, so c=(12−10)mod⁡11=2c = (12 - 10) \bmod 11 = 2, the letter J, and the machine form is SN-DKR-0080-2512-J.

The letter covers the family and the number; the place follows from the block. A one-digit slip that moves a number from Dakar’s Médina into Saint-Louis’s block therefore changes the payload in exactly one digit and is always refused in a machine form. In the spoken form, which has no letter, the application shows the town before it routes (Section 6.4).

4.11 Spot codes

A point that has no compound, such as a field, a market pitch or an empty plot, receives a spot code computed offline. With (E,N)=π(φ,λ)(E, N) = \pi(\varphi, \lambda),

x=⌊E−E0s⌋,y=⌊N−N0s⌋,Ê=E0+(x+12)s,N̂=N0+(y+12)s,\begin{aligned} x &= \left\lfloor \frac{E - E_0}{s} \right\rfloor, & y &= \left\lfloor \frac{N - N_0}{s} \right\rfloor,\\ \hat E &= E_0 + \left(x + \tfrac12\right) s, & \hat N &= N_0 + \left(y + \tfrac12\right) s, \end{aligned} \tag{16}(16)

where xx and yy are written with kk digits each after the zone key, and (Ê,N̂)(\hat E, \hat N) is the decoded point, the centre of the cell. The decoding error is at most half the cell’s diagonal, s2/2s\sqrt{2}/2: 0.7 m for 1 m cells, 1.4 m for 2 m and 7.1 m for 10 m. The Place de l’Indépendance in Dakar (φ=14.6681∘\varphi = 14.6681^\circ, λ=−17.4317∘\lambda = -17.4317^\circ) projects to E=238106.2E = 238\,106.2 m, N=1623024.8N = 1\,623\,024.8 m, so x=⌊11106.2/2⌋=5553x = \lfloor 11\,106.2 / 2 \rfloor = 5553, y=⌊3024.8/2⌋=1512y = \lfloor 3\,024.8 / 2 \rfloor = 1512, and its spot code is DKR 5553 1512 (Figure 6). Spot codes carry no check letter, because people type them; a code written with an older trailing letter is still verified.

The spot grid of zone DKR: a 16 km frame from (E_0, N_0) = (227\,000, 1\,620\,000) m in UTM zone 28N, cut into 2 m cells, so that each axis runs from 0000 to 7999 (Eqs. (2) and (16)). The outline is the zone’s; the two points are worked examples of this paper. Sources: model/zones.json, model/zones.geojson.

The projection is the transverse Mercator projection of WGS 84 on UTM zone 28N, computed with Krüger’s series to the fourth order in the third flattening [37]. With aa and ff the WGS 84 semi-major axis and flattening, k0=0.9996k_0 = 0.9996, λ0=−15∘\lambda_0 = -15^\circ and αj\alpha_j the series coefficients,

n=f2−f,A=a1+n(1+n24+n464),e=2n1+n,t=sinh⁡(artanh⁡(sin⁡φ)−eartanh⁡(esin⁡φ)),ξ′=atan2⁡(t,cos⁡(λ−λ0)),η′=artanh⁡sin⁡(λ−λ0)1+t2,ξ=ξ′+∑j=14αjsin⁡(2jξ′)cosh⁡(2jη′),η=η′+∑j=14αjcos⁡(2jξ′)sinh⁡(2jη′),E=500000+k0Aη,N=k0Aξ,\begin{aligned} n &= \frac{f}{2 - f}, \qquad A = \frac{a}{1 + n}\left(1 + \frac{n^2}{4} + \frac{n^4}{64}\right), \qquad e = \frac{2\sqrt n}{1 + n},\\ t &= \sinh\!\bigl(\operatorname{artanh}(\sin\varphi) - e \operatorname{artanh}(e \sin\varphi)\bigr), \qquad \xi' = \operatorname{atan2}\bigl(t, \cos(\lambda - \lambda_0)\bigr), \qquad \eta' = \operatorname{artanh}\frac{\sin(\lambda - \lambda_0)}{\sqrt{1 + t^2}},\\ \xi &= \xi' + \sum_{j=1}^{4} \alpha_j \sin(2j\xi') \cosh(2j\eta'), \qquad \eta = \eta' + \sum_{j=1}^{4} \alpha_j \cos(2j\xi') \sinh(2j\eta'),\\ E &= 500\,000 + k_0 A \eta, \qquad N = k_0 A \xi , \end{aligned} \tag{17}(17)

with n≈0.0016792n \approx 0.001\,679\,2 and A≈6367449.146A \approx 6\,367\,449.146 m. Over Senegal, which lies almost centred on the zone’s central meridian, the series is accurate to well under a millimetre [37].

4.12 Compounds

Most Senegalese live in concessions: walled family plots with several buildings, one gate and often several households. Villas have a gatehouse and an annexe; apartment blocks have many flats behind one door; shops are built into the street walls of concessions. The address therefore belongs to the compound, its buildings are numbered sub-units (“Ouakam 2512, bâtiment 2”), flats and shop doors are units, and navigation ends at the gate.

Footprints are grouped into compounds before numbering. For two structures aa and bb with centroids ca,cbc_a, c_b and areas Aa,AbA_a, A_b, the gap is the distance between centroids less the radii of circles of the same areas, and a structure is urban when its 250 m tile holds at least 100 structures (1,600 per km²):

gap⁡(a,b)=‖ca−cb‖−Aaπ−Abπ,urban⁡(a)⇔|tile⁡250(a)|≥100.\operatorname{gap}(a, b) = \lVert c_a - c_b \rVert - \sqrt{\frac{A_a}{\pi}} - \sqrt{\frac{A_b}{\pi}}, \qquad \operatorname{urban}(a) \iff \bigl|\operatorname{tile}_{250}(a)\bigr| \ge 100 . \tag{18}(18)

The rules are applied in order. R0 (enclosure): all structures inside a mapped wall, fence or gated site, an owner’s outline or, later, a cadastral parcel form one compound. R1 (satellite): a structure under 30 m² with a gap of at most 4 m (urban) or 8 m (rural) to a structure of at least 30 m² joins it; these are kitchens, toilets and gatehouses. R2 (rural concession): in rural fabric, structures under 120 m² with gaps of at most 6 m form single-linkage clusters of at most 30 structures. R3 (people): confirmations by residents merge or split compounds. Two main structures in urban fabric are never merged by shape alone: in the Médina or in Pikine, houses touching wall to wall are separate concessions. A cité with one gate (SICAP, HLM, private cités) is an estate: each house keeps its own address behind the estate gate. Regrouping never changes an issued address. Before any rule applies, structures whose centre and compounds whose entrance lie more than 300 m outside the national border are dropped (Section 4.2).

4.13 Building profiles

Every structure in the registry carries a profile: a use class from a Senegalese taxonomy (concession, maison basse, immeuble R+n, case and annexe for homes; boutique, marché, bureaux, entrepôt, atelier and station for commerce; administration, school, daara, university, hospital, health post and pharmacy for public use; mosque, church and mausoleum for worship; fishing quays, seed stores and granaries, among others), a confidence for the class, the footprint and perimeter, the floors where known (written RDC, R+1, R+2, as in Dakar), the floor area, and the source and date of each attribute. Classes are inferred in a fixed order: OpenStreetMap tags first (confidence 0.85–0.9), then mapped places inside the footprint (0.6–0.7), then shape (0.2–0.5); confirmations by people (0.95) override all of them. A daara is never inferred from shape, because many daaras are family homes.

4.14 Government addresses first: the coverage mask

Where the government already gives an address, N-Ways does not create a competing one. The rule is applied per place, as a coverage mask with three levels. A place is official-municipal when the municipal street-addressing programme covers it, on any one of three pieces of evidence: an official dataset from a commune, the ARTP or the Agence de Développement Municipal; three or more mapped streets carrying programme references (1,601 such streets are mapped nationally); or plates confirmed by people at its doors. There the address shown is the street and number as the commune writes them, for example “120 Rue PE-44, Point E”, and no N-Ways plate goes up; until a door’s official number is known, the N-Ways address is shown and marked as temporary. A place is ann as soon as the ANN publishes addresses for it, and the ANN address is then shown as written. Every other place is nways. Postcodes do not count as coverage, because they are delivery-office zones, but every compound carries its postcode where it is known.

The mask only grows. When official coverage reaches a place, its N-Ways addresses stop being primary but remain valid as aliases that resolve to the official address, and no number is reissued. In the issued registry, 112 places are official-municipal; they hold 128,950 compounds (3.6 % nationally and 44.0 % of Dakar département), and the official door number is already known for 87 of them.

4.15 Saying the address

In French the number is said as house and telephone numbers are: three digits whole (“Affiniam, trois cent vingt”), four digits in two pairs (“Ouakam, vingt-cinq, douze”) and five digits as two then three (“Médina, douze, cent quarante-neuf” for 12 149). In Wolof the digits are said one by one (“Ouakam, ñaar, juróom, benn, ñaar”). Wolof 3 and 4 (ñett, ñeent) and 8 and 9 (juróom ñett, juróom ñeent) sound alike, so the application always reads the address back and shows the building before it routes. Speakers of Pulaar, Serer, Jola, Mandinka and Soninké use the same place word and say the digits in French or Wolof, as they do for telephone numbers.

5 Implementation

5.1 The reference engine

The reference engine (engine/reference/sn_engine.py, with plate_names.py) is written in standard-library Python 3.9 and needs only the files in model/. It implements every formula of Section 4: the zone lookup and frames (Eqs. (1)–(2)), the place assignment and plate names (Eqs. (3)–(4)), the name key (Eq. (5)), the national ranges (Eqs. (6)–(9)), Hilbert numbering and insertion (Eqs. (10)–(13)), context-free decoding (Eq. (14)), the check letter (Eq. (15)), spot codes and the projection (Eqs. (16)–(17)) and compound grouping (Eq. (18)). Its self-test checks the projection, every single error and adjacent transposition of the check letter on random payloads, spot round trips, numbering, twelve same-name decodings and the published test vectors. The normative description is the specification in engine/SPEC.md.

5.2 The registry

The registry (registry/) publishes every issued address, with nothing held back: one gzip file per zone, one row per address, sorted by name family and then number. Each row gives the machine, remembered and written forms; the place, the number and the check letter; the status (every address is provisional until residents confirm it) and how and when it was issued; the entrance and its spot code; the compound’s class, use, kind, number of structures and floor area; the postcode where mapped; and the coverage level with the official address where the commune numbered the door. No row describes the people in a home. lieux.csv gives the frozen place list with each place’s plate and official names, key, family, length and blocks. anchors/ gives each compound’s centroid at full precision, row for row with the zone files: it is the point that Eq. (10) orders by, and with it an independent deployment numbers new compounds exactly as the issuer does. A manifest gives the counts and the SHA-256 of every file before compression.

5.3 The server and its interface

server/ is a ready-made HTTP service, in standard-library Python, that any ministry, post office or developer can deploy with docker compose up. On first start it imports the registry into SQLite, verifying each file against the manifest and refusing any mismatch; it then serves a JSON interface under /v1: health and information, the full card of an address, search by any form (remembered, written, machine or spot, with any spacing, case or accents), the compound at a point and the compounds near it, verification of a machine form, spot encoding and decoding, zones and places, and a paged list of a zone’s addresses. Its export writes the registry back in the published format, byte for byte. On the one deployment that the State or N-WAYS LIMITED designates as issuer, POST /v1/codes issues new addresses by the rules of Sections 4.2 and 4.8 and PATCH confirms, retires or moves them. Every other deployment is read-only, because two issuers working from the same registry would each see the same number as free and give it to two compounds. The interface is described in server/openapi.yaml and, with real requests and responses, in docs/api.md.

5.4 Conformance

Three kinds of test tie the published components to the issuer. The engine’s vectors (engine/reference/vectors.json) fix spot codes, check letters, spoken numbers, same-name decodings, plate names and real footprint samples. The server’s 62 parity cases (server/testdata/parity.json) record, for new compounds, extra doors, outlines of every size class and extension blocks, the place, number, forms and profile that the issuer’s own implementation produced against a fixture registry; the server reproduces all of them. On the full registry, an import followed by an export reproduces every published file byte for byte, and 59 addresses compared field by field with the issuer’s live interface showed no difference over 1,416 fields.

5.5 Getting and sharing an address

Nothing is asked of a household. Every compound already on the map received its address when the registry was issued, and the N-Ways application shows it in one tap (“Get my code”), in French or Wolof: the compound where one stands, or the one tapped on the map. Sharing takes one tap and sends a message with the address and a link that opens the map without the application. A house not yet on the map is added in four steps of about two minutes (“Add my home”): the gate position is averaged over ten seconds and photographed from the street; the outline is traced on imagery, walked inside the wall with the phone’s camera, or imported from a survey plan whose datum (Yoff, NSGD2004 or WGS 84) must be stated, with its NICAD or lotissement plot number where there is one; the household states the number of buildings and floors and the use; and the free number between the neighbours is issued at once, provisionally. An outline that overlaps an existing compound is refused, and the flow states, in French and Wolof, that an address is not a land title. An address becomes confirmed when independent residents agree that it is right, by the same automatic consensus that corrects the map; no one reviews addresses by hand. A plate or a QR sticker on the gate serves those without a smartphone.

6 Evaluation

All measurements in this section are computed from the published registry and the reference engine by tools/paper-evaluation.py; the results are in docs/figures/data/evaluation.json.

6.1 Uniqueness and decoding

All 3,597,128 machine forms are distinct, and so are all 3,597,128 remembered forms after case and accent folding. Every remembered form was decoded by the engine with no zone and no position (Eq. (14)): 3,597,128 decoded to exactly the compound of the registry row, none to another compound, none to several and none to nothing. Proposition 1 thus holds on the whole registry.

6.2 Lengths

Of the issued numbers, 717,894 (20.0 %) have three digits, 1,676,892 (46.6 %) four and 1,202,342 (33.4 %) five. The remembered address has a median of 13 characters, including the space; 95 % of addresses have at most 18 characters and 99 % at most 20. The longest outside the provisional names is “Yeumbeul Sud 20 699” (19 characters); with the provisional names it is “Ancien Marché Hebdomadaire 22 199” (33), a name that its commune is to shorten. Numbers are long where place points are sparse: in Touba 83.9 % of compounds and in Pikine 87.0 % have five digits (Appendix A). Curating sub-quartiers with the communes would bring many of them down to four digits.

6.3 Locality

Over all places, two compounds with consecutive numbers lie a median 23.4 m apart (90th percentile 80.8 m), against 561.4 m (90th percentile 1,912 m) for two compounds of the same place drawn at random. Numbers therefore follow the ground: a courier who finds “Ouakam 2512” will find “Ouakam 2515” a few doors away.

6.4 Errors

We applied every one-digit substitution to the numbers of 100,000 randomly drawn addresses, keeping the length and the leading digit non-zero, which gives 3,621,599 erroneous numbers. Their outcomes are given below.

What a one-digit slip lands on, over 3,621,599 slips of 100,000 addresses.
Outcome of a one-digit slip in the remembered number Share
No issued address (in no block, or a free number of a block) 76.1 %
Another issued compound of the same place 22.6 %
An issued compound of another place with the same name 1.3 %

Three quarters of slips are refused because the address does not exist. Most of the rest land on another compound of the same place; the application then shows a photograph, class and street that the person does not recognise. Only 1.3 % land in another town, and the town is then shown before routing. In a machine form all such slips are refused: over the same sample, the check letter detected all 9,000,000 single substitutions and all 800,830 adjacent transpositions of unequal digits, as Proposition 2 requires.

The 22.6 % figure is the empirical counterpart of a simple estimate. If a block holds nn issued numbers among bb, a uniformly random number of the block is issued with probability

P(hit)≈nb≈13,P(\text{hit}) \approx \frac{n}{b} \approx \frac{1}{3}, \tag{19}(19)

by Eq. (6). The measured share is lower because slips in the leading digits leave the block.

6.5 Spot codes

For 400 random points in each of the 46 zone frames (18,400 points), the distance between a point and the decoded centre of its spot cell never exceeded the bound s2/2s\sqrt 2 / 2 of Eq. (16); the largest ratio of error to bound was 0.997.

6.6 Coverage

Every compound on the building map inside the national border received an address: coverage is complete by construction. No issued entrance lies more than 300 m outside the border: measured against the full border line, two lie outside it, both by less than a metre. Two qualifications matter. First, the mapped building stock is itself incomplete, especially for recent construction; “Add my home” and the insertion rule of Eq. (13) exist for this reason. Second, entrances are known for few compounds: 142 addresses route to a mapped gate and the others to the compound’s centre until a gate is confirmed.

6.7 Same names, different places

The table below shows decoding on real issued addresses of repeated names, with the place as zone and index. Each is decoded from the text alone. The last column gives a one-digit slip that lands in another same-named place’s block: in a machine form the check letter refuses it, and in the spoken form the application shows the other town. For HLM the sector numeral refuses it too.

Same names, different places: real issued addresses decoded with no context.
Remembered Place Block Machine form Slip into
Médina 12 149 Dakar (DKR/71) 10400–17699 SN-DKR-0071-12149-J 22 149 → STL/90
Médina 20 096 Saint-Louis (STL/90) 19500–22799 SN-STL-0090-20096-T 10 096 → DAG/118
Médina 23 151 Ziguinchor (ZIG/155) 22800–23299 SN-ZIG-0155-23151-Z 13 151 → DKR/71
Pikine 12 150 Diourbel (DBL/329) 10000–20899 SN-DBL-0329-12150-H 22 150 → STL/151
Pikine 22 150 Saint-Louis (STL/151) 20900–29999 SN-STL-0151-22150-J 12 150 → DBL/329
Darou Salam 26 690 Pikine (PKN/10) 23200–45799 SN-PKN-0010-26690-M 16 690 → MBR/32
Darou Salam 50 859 Touba (TBA/54) 46200–76599 SN-TBA-0054-50859-W 10 859 → GOS/49
Gounas 11 799 Guédiawaye (GDW/6) 10000–21999 SN-GDW-0006-11799-T 31 799 → VEL/204
HLM 5 17 394 Dakar (DKR/54) 17100–18399 SN-DKR-0054-17394-M 13 394 → DKR/51 (HLM 2)
Diawar 1419 Dagana (DAG/35) 1000–3799 SN-DAG-0035-1419-T 4419 → KBM/319
Diawar 4085 Kébémer (KBM/319) 3800–5699 SN-KBM-0319-4085-M 1085 → DAG/35

The last two rows show a pair that only shortening brought together: “Mbenguène Diawar” in Kébémer has the plate name “Diawar”, like the village of Diawar in Dagana, and the two now share one range in two blocks.

7 Designs considered and rejected

The model is the result of several alternatives, each measured on the same building map before it was adopted or set aside.

The forms considered.
Option Example Assessment
Alphanumeric grid code DKR 45 12 78 K ten symbols, four of them letters; French letter names rhyme (bé, cé, dé, gé, pé, té, vé) and G and J are confused; kept only for spot codes, which are rarely remembered
National digits-only code 07 0080 4512 ten digits that mean nothing to the holder; a slip lands on a real home anywhere in the country
Open Location Code 7C2P+M4 Dakar letters and a plus sign; changes every few metres across one compound; not tied to a gate; kept as a cross-reference
Place and number, with the zone telling repeated names apart Médina 150, Ziguinchor an address that needs its town is not unique, because the town is not said; rejected
One number range per place Médina 150 in each Médina two homes with the same spoken address; rejected
Full official names Keur Serigne Ablaye Yakhine 2 345 too long to say or to write on a parcel
Plate name and one national range per name Ouakam 2512 adopted

Figure 7 gives the cost in digits of the three numbering designs. One range per place gives the shortest numbers (29.7 % of compounds with three digits), but its addresses are unique only with the zone. One range per name with the full official names lengthens numbers slightly (22.8 % with three digits) and makes addresses unique. Shortening the names to plate names brings more places under one name and lengthens numbers a little more (20.0 % with three digits), but the address becomes short enough to say. We judged one more digit a fair price: a digit is easier to remember than a town after a comma that nobody says, and it is what makes “Médina 12 149” mean Dakar wherever it is said.

Share of compounds by number of digits under the three numbering designs, measured on the same compounds. The adopted design is the last row. Source: model/name-families.json.

For the check character we compared ISO/IEC 7064 MOD 11-2, which needs an eleventh symbol, with Damm’s decimal check digit, which detects the same errors with ten [23]. A letter suits Senegal better: a check digit appended to a number is easily read as part of it, whereas a letter from a fixed set of eleven is visibly separate, and MOD 11-2 is an international standard in wide use. We chose the letters for French ears, as described in Section 4.10. For ordering within a place we preferred the Hilbert curve to row-by-row or Morton (Z-order) numbering because of its better locality [25], which Section 6.3 confirms on the registry.

8 Benefits to citizens

For a family in Pikine, in Touba or in a village of Kolda, an address changes four ordinary things.

Being found. A visitor, a taxi or a delivery rider is today guided by telephone, landmark by landmark. With an address, the person says one short phrase, “Ouakam, vingt-cinq, douze”, and the application leads to the gate.

Proving where one lives. Banks, mobile-money agents, schools, employers and administrations ask for an address that can be checked. Before the registry, almost no household could give one:

Compounds by the kind of address they have.
Compounds Share
With a known official door number 87 0.002 %
In quartiers of the municipal addressing programme 128,950 3.6 %
With an address that can be said and checked 3,597,128 100 %

Receiving goods and services. Families abroad, online shops and the water and electricity companies can send to an address rather than a description, and a household can request a connection, a meter reading or a repair at the right gate.

Simplicity. The address is free, needs no document and holds no personal data (Section 12). It is not a land title, and the application says so.

The benefit is greatest for those who have least today: the 96 % of compounds outside the addressed quartiers, the families of Touba’s and Pikine’s dense extensions, villages on the domaine national where nobody holds a titled parcel, and residents who read little, for whom a quartier they know and a number are easier than letters. We do not yet have a measured estimate of the time households spend giving directions, and Section 13 sets out how it will be measured.

9 Logistics and commerce

Delivery in Senegal runs on the telephone. A rider reaches the quartier, calls the customer, is guided, often calls again, and sometimes gives up. What an address gives a logistics business is a stable key for each customer’s compound, routing to the gate before the rider leaves, input that is checked at checkout rather than on the road (in machine forms the check letter catches every single wrong digit), the postcode for mail sorting, and open access: a courier, a shop, a bank or a fintech can resolve addresses in its own systems, offline, without paying anyone.

Estimate. We model the saving per 1,000 delivery attempts as

S=1000×f0×θ×c,S = 1\,000 \times f_0 \times \theta \times c , \tag{20}(20)

where f0f_0 is the share of first attempts that fail today, θ\theta the fraction of those failures that a precise address removes, and cc the cost of one attempt. No published study measures these quantities in Senegal, so we take them from practitioners’ estimates for Dakar and state the ranges. Reported first-attempt failure rates are 8–12 % in central Dakar and 12–15 % in the periphery [38], and 22–30 % for deliveries to places without a formal address [39]. Among failed cash-on-delivery attempts in Dakar, an incomplete address is cited for 22 % and an unreachable customer for 28 % [40]. A motorbike run costs 1,000–1,500 FCFA in the centre and 1,500–2,500 FCFA in the periphery [38]. We take f0∈[0.08,0.30]f_0 \in [0.08, 0.30], θ∈[0.22,0.50]\theta \in [0.22, 0.50] (from the share attributed to the address alone, to half of all failures, since an address also shortens the calls that an unreachable customer causes) and c∈[1000,2500]c \in [1\,000, 2\,500] FCFA.

Saving per 1,000 delivery attempts, Eq. (20): low, central and high cases.
f0f_0 θ\theta cc (FCFA) SS per 1,000 attempts (FCFA)
0.08 0.22 1,000 17,600
0.15 0.30 1,750 78,750
0.30 0.50 2,500 375,000

The central case corresponds to about 79 FCFA per attempt, or 4.5 % of its cost. The range spans more than an order of magnitude, which is itself the main finding: the saving depends on how often deliveries fail for want of a location, which Section 13 proposes to measure with partner couriers. These estimates come from commercial sources without a published method and should be read as indicative.

Two Senegalese settings illustrate the use. Touba receives very large numbers of pilgrims for the Grand Magal; hosts, traders and transporters can give one address for compounds that have no street name. Markets, wholesalers and transport garages in Dakar, Thiès and Kaolack can send goods to the right compound in a village rather than to the nearest town. Hotels and rentals on the Petite Côte, in Saint-Louis and in Casamance can give guests one address for a driver.

10 Emergency services

An ambulance, the sapeurs-pompiers or the police face the courier’s problem with more at stake. A qualitative study of emergency medical services in Kigali found that locating the patient depended on inadequate technology, on the local knowledge of callers and crews, and on repeated calls between caller, dispatcher and ambulance, and that this lengthened response intervals [41]. We know of no published measurement for Senegal, which is itself a reason to start one.

With an address, the caller says one phrase, “Médina, douze, cent quarante-neuf”. The dispatcher types it and the registry returns one compound, its town and its gate: there is no list of Médinas, because the number alone says it is Dakar’s (Proposition 1). The dispatcher reads it back, and a slip that lands on another same-named place shows “Saint-Louis” rather than “Dakar”, which the caller corrects at once. The crew drives to the gate, whose coordinates are given on the UTM zone 28N grid that Senegalese surveyors and many GIS systems use. The engine and the registry need no network, so a dispatch system can resolve addresses when the line drops.

Estimate. Larsen and colleagues modelled survival after out-of-hospital cardiac arrest as

SOHCA=67−2.3tCPR−1.1tdefib−2.1tACLS(per cent, times in minutes),S_{\text{OHCA}} = 67 - 2.3\,t_{\text{CPR}} - 1.1\,t_{\text{defib}} - 2.1\,t_{\text{ACLS}} \quad \text{(per cent, times in minutes)}, \tag{21}(21)

where the three times are the intervals from collapse to cardiopulmonary resuscitation, to defibrillation and to advanced care [42]. Where one crew brings all three, a delay Δt\Delta t in finding the gate delays all three intervals and costs (2.3+1.1+2.1)Δt=5.5Δt(2.3 + 1.1 + 2.1)\,\Delta t = 5.5\,\Delta t percentage points of survival: about 5.5 points for one minute, 11 for two and 27.5 for five. The model was fitted in King County, Washington; it gives an order of magnitude for Senegal, not a prediction, and as a linear model it is valid only while the predicted survival remains positive. Its direction, however, is not in doubt: where finding the gate takes minutes, an address that removes the search matters as much as a faster vehicle.

11 Government coordination and planning

An address is a shared key. When ministries, communes, utilities and the statistics agency refer to a compound by the same address, their records can be joined without matching names and descriptions.

One reference for all services. Senegal’s own experience shows the value. The World Bank’s review notes that an address directory usually yields a list of economic activities more complete than the tax department’s and reveals who is missing from the rolls; Senegal’s programme tested this reconciliation in Thiès and Kaolack [3]. A compound record carries the postcode, the official street address where there is one and, once it exists, the ANN identifier, so each service keeps its own records and still agrees on the compound.

What door numbering would have cost. At the World Bank’s average cost of conventional addressing in African cities [3],

C=N×cdoor=3597128×US$5.7≈US$20.5 million (2005 prices),C = N \times c_{\text{door}} = 3\,597\,128 \times \text{US\$}\,5.7 \approx \text{US\$}\,20.5 \text{ million (2005 prices)}, \tag{22}(22)

where NN is the number of compounds and cdoorc_{\text{door}} the cost per addressed doorway. At the highest per-doorway cost reported in the same review, US$7.6, the figure would be US$27.3 million. The comparison gives the scale of conventional addressing, not a saving: plates and street names keep their value, and where a commune numbers its streets, its numbers are shown first and the N-Ways addresses become aliases (Section 4.14).

Planning with real counts. The registry counts compounds by zone, place and building class, and every count can be recomputed from the open files. Dakar département holds 107,430 addresses and Touba-Mbacké (Ndame) 289,328, more than most régions.

Access to services. Straight-line distances from a sample of 20,000 compounds to the nearest facility mapped in the N-Ways base map are given below. The facility layer is not part of the published repository, and these numbers describe the map, not the ground: unmapped schools, daaras and posts make distances look longer. A ministry can replace the facility list with its own and recompute the table in minutes from the registry.

Distance from compounds to the nearest mapped facility (sample of 20,000 compounds).
Facility Within 2 km Within 5 km Median distance
Health facility (hospital, health centre, health post) 53.1 % 74.5 % 1.74 km
School 43.3 % 59.4 % 3.10 km
Police or gendarmerie 22.4 % 35.0 % 12.57 km
Pharmacy 32.7 % 44.0 % 7.30 km

Census and surveys. The 2023 census counted 18.1 million residents [32]. The registry’s 3.6 million compounds, each with a stable code, give survey teams a frame they can sample from and return to; a survey that records the address of each interview can be mapped and joined to services without storing a name.

Land. An address is not a title. The registry can nevertheless carry the NICAD of a parcel, so that the cadastre, PROCASEF and the communes can find a registered parcel’s compound and its gate.

Growth. New compounds receive addresses as they appear (Eq. (13)). The registry thus shows where Senegal grows, month by month: the extensions of Touba, Keur Massar and Diamniadio are where roads, water, schools and health posts will be needed next.

12 Privacy, safety and governance

Places, never people. Addresses describe places. Residential compounds carry no occupant data: no names, no telephone numbers and no household composition. The household count is kept only as “one, several or not stated” and is never shown. Positions, outlines, classes, sizes, statuses, gate positions, the names of businesses and public buildings, and street plates are public. Photographs taken in “Add my home” are kept for verification only and are not published, and a household may ask for a door to be hidden. Partners see a customer’s address only with the customer’s consent.

Law. Senegal’s Law 2008-12 and its implementing Decree 2008-721 apply; the Commission de protection des données personnelles (CDP) must receive a declaration before processing begins, geolocation falls under the normal declaration, and transfers of data outside Senegal require its authorisation [43]. The ECOWAS Supplementary Act on personal data protection sets the regional frame [44]. A bill replacing the 2008 law and creating a new authority has been in preparation since 2019; we found no record of its adoption by October 2026. The CDP took part in the ANN relaunch workshop.

Openness and safety. The registry is published in full, with nothing withheld, and it contains no information about the people in a home.

Governance. N-WAYS LIMITED maintains the model and is, for now, the single issuer, so that no number is given twice. Zones, issued addresses, the blocks of each name’s range, the spot grid and the check method never change; building profiles change with evidence; plate names awaiting a commune’s choice may change once. The repository is designed to be handed over whole, with its registry, engine and rules, to the ANN or a body it designates. If the ANN goes live, its address is shown first and the N-Ways address becomes a cross-reference. Disputes about groupings are settled by residents’ agreement; land disputes are never settled by an address. The rules for change and hand-over are set out in GOVERNANCE.md.

13 Limitations and future work

The place inventory comes from open maps. OpenStreetMap and GeoNames place points are uneven: dense in parts of Dakar and Ziguinchor, sparse in Touba’s quartiers and in many villages. Some places are therefore too large, which lengthens their numbers, and some names are misspelled. Curation with the communes adds aliases and corrects plate names, but never changes an issued number.

Many plate names are provisional. 3,116 places, about a fifth, await their commune’s choice, mostly villages named after a person and names with an ethnic or compass qualifier; 739,058 addresses carry such a name. Only three short forms have a written source; “Parcelles” for Parcelles Assainies, common in speech, awaits the commune.

Name folding is a judgement. The normalisation of Eq. (5) is generous on purpose, but a spelling it does not fold, such as a rare transliteration or a name in Pulaar or Jola orthography, starts a range of its own. Such spellings are added as aliases; blocks are never merged.

Compounds are inferred. Few walls are mapped, so most grouping relies on the shape rules of Eq. (18) and will be wrong for some plots until residents correct it. The published registry contains entrances and centroids but not footprints; an independent deployment therefore applies the duplicate checks with entrance distances only.

Attributes are thin. Heights are unknown almost everywhere, and classes outside towns are low-confidence guesses until people or partners confirm them.

Boundaries. The zones use the 2019 département outlines and do not show Keur Massar separately; they are frozen by design.

External systems. La Poste’s locality list will be used only with La Poste’s agreement, since it carries no licence. The cross-references may need to adapt once the ANN publishes its format. We could not verify which datum titles must use today, the law that licenses surveyors, or the status of the 2019 data-protection bill.

What we will measure. The estimates of Sections 9–10 rest on few local data. We propose the following measurements, to be agreed with partners:

Measurements proposed for the first year.
Measure Method Target
Recall of one’s own address after one month residents asked without the application at least 80 % exact
First-attempt delivery success partner couriers, with and without an address at least 20 points higher with one
Time from arrival in the quartier to the gate courier application timestamps halved
Gates and doors confirmed residents and couriers 10,000
Time to locate emergency callers with a willing ambulance or fire service measured, then halved

14 Conclusion

A national address does not need streets to be named or doors to be surveyed before it can exist. By combining a place word that people already use with a short number from one national range per name, Senegal’s compounds can each carry an address that is short enough to say, unique without context, ordered on the ground, stable and open. The registry issued on this model holds 3,597,128 addresses; every one decodes to exactly one compound from its spoken form alone, its numbers follow the ground, and a check letter that people never see guards the machine form. The model shows the government’s address first wherever one exists and is built to be absorbed by the Adressage Numérique National. Its main limits, the uneven place inventory, the provisional plate names and the inferred compounds, are each correctable without renumbering, through the communes, through residents and through the ANN.

Data and code availability

The specification, the reference engine, the registry, the model files, the server and this paper are published at https://github.com/n-ways/open-addresses-senegal [45]. The code is licensed under the Apache License 2.0, the data under the Open Database License 1.0 and the documents under CC BY 4.0. Credit line: “N-Ways Addressing for Senegal, © N-WAYS LIMITED (nways.ng)”. Every figure and every measurement of Section 6 can be reproduced with tools/paper-figures.py and tools/paper-evaluation.py; the PDFs are built with sh docs/paper/build.sh.

Acknowledgements

The registry rests on the work of the OpenStreetMap contributors who mapped Senegal’s buildings and places, notably in Sédhiou, Kolda and Matam, where they drew most of the footprints; on the building footprints released by Google and Microsoft and distributed by the Overture Maps Foundation; on the boundaries of geoBoundaries and the Government of Senegal; and on GeoNames. We thank La Poste Sénégal, the ANSD and the municipal addressing units whose published work made this study possible.

References

[1]
Universal Postal Union, ‘Senegal: Addressing sheet’. International Bureau of the UPU, Bern; sheet dated 02/2015, 2015. Accessed: Oct. 21, 2026. [Online]. Available: https://www.upu.int/UPU/media/upu/PostalEntitiesFiles/addressingUnit/senEn.pdf
[2]
La Poste Sénégal, ‘Code postal Sénégal’. Online postcode finder, Société Nationale La Poste, Dakar, 2026. Accessed: Oct. 18, 2026. [Online]. Available: https://www.laposte.sn/code-postal-senegal/
[3]
C. Farvacque-Vitkovic, L. Godin, H. Leroux, F. Verdet, and R. Chavez, Street addressing and the management of cities. in Directions in development. Washington, DC: World Bank, 2005. Accessed: Oct. 21, 2026. [Online]. Available: https://documents1.worldbank.org/curated/en/573071468142795481/pdf/329230Street0Addressing01not0external1.pdf
[4]
OpenStreetMap contributors, ‘FR:WikiProject Sénégal/Conventions de marquage des rues’. OpenStreetMap Wiki. Accessed: Oct. 21, 2026. [Online]. Available: https://wiki.openstreetmap.org/wiki/Senegal_Highway_tag
[5]
M. Edjo, ‘Sénégal : Le ministère des Télécoms lance le projet d’adressage numérique du pays’. Agence Ecofin, republished by OSIRIS, 26 February 2021, 2021. Accessed: Oct. 21, 2026. [Online]. Available: https://www.osiris.sn/senegal-le-ministere-des-telecoms-lance-le-projet-d-adressage-numerique-du-pays.html
[6]
F. Ba, ‘Adressage numérique : Le Sénégal se donne pour objectif de boucler la phase pilote en un an’. Senego, 5 August 2026, 2026. Accessed: Oct. 21, 2026. [Online]. Available: https://senego.com/adressage-numerique-le-senegal-se-donne-pour-objectif-de-boucler-la-phase-pilote-en-un-an_1990855.html
[7]
S. Njoya, ‘Sénégal : Le projet d’adressage numérique national entre dans une nouvelle phase’. WeAreTech Africa, republished by OSIRIS, 10 August 2026, 2026. Accessed: Oct. 21, 2026. [Online]. Available: https://www.osiris.sn/senegal-le-projet-d-adressage-numerique-national-entre-dans-une-nouvelle-phase.html
[8]
Au Sénégal, ‘Noms des rues de Dakar : Comment ça marche ?’ au-senegal.com, 23 January 2018, 2018. Accessed: Oct. 21, 2026. [Online]. Available: https://au-senegal.com/noms-des-rues-de-dakar-comment-ca-marche,14231.html
[9]
Agence de Presse Sénégalaise, ‘Système d’adressage : 224000 bâtiments numérotés à Dakar’. APS, republished by OSIRIS, 19 March 2019, 2019. Accessed: Oct. 21, 2026. [Online]. Available: https://osiris.sn/systeme-d-adressage-224000-batiments-numerotes-a-dakar.html
[10]
Social Net Link, ‘Adressage numérique : Le Sénégal relance un chantier stratégique resté inachevé’. Social Net Link, republished by OSIRIS, 10 August 2026, 2026. Accessed: Oct. 21, 2026. [Online]. Available: https://www.osiris.sn/adressage-numerique-le-senegal-relance-un-chantier-strategique-reste-inacheve.html
[11]
République du Sénégal, ‘Loi no 64-46 du 17 juin 1964 relative au domaine national’. Journal officiel de la République du Sénégal, 1964.
[12]
République du Sénégal, ‘Loi no 2011-07 du 30 mars 2011 portant régime de la propriété foncière’. Journal officiel de la République du Sénégal, 2011.
[13]
Agence de Presse Sénégalaise, ‘Sécurisation foncière : Le PROCASEF plaide pour une réforme d’envergure nationale’. APS, distributed by AllAfrica, 9 June 2026, 2026. Accessed: Oct. 21, 2026. [Online]. Available: https://fr.allafrica.com/stories/202606090568.html
[14]
M. Ndiaye, ‘Case studies in SDI components (geodetic datum, data transformations, cadastre, planning etc.)’, in From pharaohs to geoinformatics: FIG working week 2005 and GSDI-8, Cairo: International Federation of Surveyors, 2005. Accessed: Oct. 21, 2026. [Online]. Available: https://fig.net/resources/proceedings/fig_proceedings/cairo/papers/ts_01/ts01_06_ndiaye.pdf
[15]
IOGP Geomatics Committee, ‘EPSG:31028, Yoff / UTM zone 28N; EPSG:32628, WGS 84 / UTM zone 28N’. EPSG Geodetic Parameter Dataset, 2026. Accessed: Oct. 21, 2026. [Online]. Available: https://epsg.io/31028
[16]
Universal Postal Union, ‘S42: International postal address components and templates’, Universal Postal Union, Bern, UPU standard. Accessed: Oct. 21, 2026. [Online]. Available: https://www.upu.int/UPU/media/upu/documents/PostCode/S42_International-Addressing-Standards.pdf
[17]
International Organization for Standardization, ‘ISO 19160-1:2015. Addressing, Part 1: Conceptual model’, ISO, Geneva, 2015. Accessed: Oct. 21, 2026. [Online]. Available: https://www.iso.org/standard/61710.html
[18]
Universal Postal Union, Addressing the world: An address for everyone. Bern: International Bureau of the Universal Postal Union, 2012. Accessed: Oct. 21, 2026. [Online]. Available: https://www.upu.int/UPU/media/upu/publications/whitePaperAddressingTheWorldEn.pdf
[19]
Open Location Code project, ‘Open Location Code: Specification and reference implementations’. GitHub repository, Apache License 2.0, 2014. Accessed: Oct. 21, 2026. [Online]. Available: https://github.com/google/open-location-code
[20]
J. Verhoeff, Error detecting decimal codes. in Mathematical centre tracts, no. 29. Amsterdam: Mathematisch Centrum, 1969.
[21]
ISO/IEC JTC 1, ‘ISO/IEC 7064:2003. Information technology, Security techniques, Check character systems’, International Organization for Standardization, Geneva, 2003. Accessed: Oct. 21, 2026. [Online]. Available: https://www.iso.org/standard/31531.html
[22]
H. M. Damm, ‘Total anti-symmetrische Quasigruppen’, PhD thesis, Philipps-Universität Marburg, 2004.
[23]
H. M. Damm, ‘Totally anti-symmetric quasigroups for all orders n≠2,6n \neq 2, 6’, Discrete Mathematics, vol. 307, no. 6, pp. 715–729, 2007, doi: 10.1016/j.disc.2006.05.033.
[24]
D. Hilbert, ‘Ueber die stetige Abbildung einer Line auf ein Flächenstück’, Mathematische Annalen, vol. 38, no. 3, pp. 459–460, 1891, doi: 10.1007/BF01199431.
[25]
B. Moon, H. V. Jagadish, C. Faloutsos, and J. H. Saltz, ‘Analysis of the clustering properties of the Hilbert space-filling curve’, IEEE Transactions on Knowledge and Data Engineering, vol. 13, no. 1, pp. 124–141, 2001, doi: 10.1109/69.908985.
[26]
M. Haklay and P. Weber, ‘OpenStreetMap: User-generated street maps’, IEEE Pervasive Computing, vol. 7, no. 4, pp. 12–18, 2008, doi: 10.1109/MPRV.2008.80.
[27]
OpenStreetMap contributors, ‘OpenStreetMap data extract for Senegal and Gambia’. Geofabrik GmbH; Open Database Licence, 2026. Accessed: Oct. 18, 2026. [Online]. Available: https://download.geofabrik.de/africa/senegal-and-gambia.html
[28]
W. Sirko et al., ‘Continental-scale building detection from high resolution satellite imagery’. arXiv preprint 2107.12283, 2021. Accessed: Oct. 21, 2026. [Online]. Available: https://arxiv.org/abs/2107.12283
[29]
Microsoft, ‘Global ML building footprints’. GitHub repository; Open Database Licence, 2023. Accessed: Oct. 21, 2026. [Online]. Available: https://github.com/microsoft/GlobalMLBuildingFootprints
[30]
Overture Maps Foundation, ‘Overture Maps: Buildings theme’. Overture Maps Foundation documentation, 2026. Accessed: Oct. 21, 2026. [Online]. Available: https://docs.overturemaps.org/guides/buildings/
[31]
D. Runfola et al., ‘geoBoundaries: A global database of political administrative boundaries’, PLoS ONE, vol. 15, no. 4, p. e0231866, 2020, doi: 10.1371/journal.pone.0231866.
[32]
Agence Nationale de la Statistique et de la Démographie, ‘Cinquième Recensement général de la population et de l’habitat (RGPH-5), 2023 : Rapport provisoire’, ANSD, Dakar, 2024. Accessed: Oct. 21, 2026. [Online]. Available: https://www.ansd.sn/
[33]
World Bank, ‘Urban population growth (annual %), Senegal (SP.URB.GROW)’. World Development Indicators, 2026. Accessed: Oct. 21, 2026. [Online]. Available: https://data.worldbank.org/indicator/SP.URB.GROW?locations=SN
[34]
Wikipédia, ‘Saly Portudal’. Wikipédia, l’encyclopédie libre. Accessed: Oct. 21, 2026. [Online]. Available: https://fr.wikipedia.org/wiki/Saly_Portudal
[35]
Wikipédia, ‘Dakar-Plateau’. Wikipédia, l’encyclopédie libre. Accessed: Oct. 21, 2026. [Online]. Available: https://fr.wikipedia.org/wiki/Dakar-Plateau
[36]
République du Sénégal, ‘Décret no 2005-992 du 21 octobre 2005 relatif à l’orthographe et à la séparation des mots en wolof’. Journal officiel de la République du Sénégal, 2005.
[37]
C. F. F. Karney, ‘Transverse Mercator with an accuracy of a few nanometers’, Journal of Geodesy, vol. 85, no. 8, pp. 475–485, 2011, doi: 10.1007/s00190-011-0445-3.
[38]
M. Bah, ‘Livraison last-mile à Dakar : Coûts et délais réels (2026)’. Kolonell, 20 August 2026, 2026. Accessed: Oct. 21, 2026. [Online]. Available: https://kolonell.com/fr/blog/livraison-last-mile-cout-delai-dakar-2026
[39]
M. Bah, ‘Livraison sans adresse formelle : Points relais et géolocalisation e-commerce à Dakar 2026’. Kolonell, 10 August 2026, 2026. Accessed: Oct. 21, 2026. [Online]. Available: https://kolonell.com/fr/blog/livraison-sans-adresse-points-relais-geolocalisation-dakar-2026
[40]
M. Bah, ‘Réduire le taux d’échec de livraison en cash à Dakar en 2026’. Kolonell, 25 August 2026, 2026. Accessed: Oct. 21, 2026. [Online]. Available: https://kolonell.com/fr/blog/reduire-taux-echec-livraison-cash-dakar-2026
[41]
M. Hunt et al., ‘Challenges locating the scene of emergency: A qualitative study of the EMS system in Rwanda’, Prehospital Emergency Care, vol. 28, no. 3, pp. 501–505, 2024, doi: 10.1080/10903127.2023.2225195.
[42]
M. P. Larsen, M. S. Eisenberg, R. O. Cummins, and A. P. Hallstrom, ‘Predicting survival from out-of-hospital cardiac arrest: A graphic model’, Annals of Emergency Medicine, vol. 22, no. 11, pp. 1652–1658, 1993, doi: 10.1016/S0196-0644(05)81302-2.
[43]
République du Sénégal, ‘Loi no 2008-12 du 25 janvier 2008 sur la protection des données à caractère personnel, et son décret d’application no 2008-721 du 30 juin 2008’. Journal officiel; texts published by the Commission de protection des données personnelles, 2008. Accessed: Oct. 21, 2026. [Online]. Available: https://www.cdp.sn/
[44]
Economic Community of West African States, ‘Supplementary Act A/SA.1/01/10 on personal data protection within ECOWAS’. ECOWAS, Abuja, adopted on 16 February 2010, 2010. Accessed: Oct. 21, 2026. [Online]. Available: https://www.ecowas.int/
[45]
N-WAYS LIMITED, ‘N-Ways Addressing for Senegal: Specification, reference engine, registry and server’. GitHub repository; code Apache 2.0, data ODbL 1.0, documents CC BY 4.0, 2026. Accessed: Oct. 21, 2026. [Online]. Available: https://github.com/n-ways/open-addresses-senegal

Appendix A. The 46 code zones

The 46 code zones: index, key, frame side, spot cell and spot digits per axis (Eq. (2)), places, issued addresses, and the share of compounds whose number has 3, 4 or 5 digits. Sources: model/zones.json, model/lieux-stats.json, registry/MANIFEST.json.
# Key Zone Region Frame (km) Cell (m) Spot Places Addresses 3 (%) 4 (%) 5 (%)
0 BIG Bignona Ziguinchor 98 10 4+4 595 65,019 41.9 42.4 15.8
1 BKL Bakel Tambacounda 199 10 5+5 219 41,737 23.8 59.4 16.8
2 BMB Bambey Diourbel 49 5 4+4 489 83,034 28.3 58.9 12.8
3 BNK Bounkiling Sédhiou 84 10 4+4 253 36,264 39.6 42.7 17.7
4 BRK Birkelane Kaffrine 59 10 4+4 202 33,656 33.6 62.6 3.8
5 DAG Dagana Saint-Louis 123 10 5+5 235 89,049 12.4 60.7 26.9
6 DBL Diourbel Diourbel 55 10 4+4 425 68,418 32.4 24.4 43.3
7 DKR Dakar Dakar 16 2 4+4 112 107,430 1.2 62.7 36.1
8 FDG Foundiougne Fatick 73 10 4+4 416 79,408 25.8 59.3 14.9
9 FTK Fatick Fatick 86 10 4+4 461 101,628 27.5 55.8 16.7
10 GDW Guédiawaye Dakar 8 1 4+4 11 23,425 0.8 25.2 73.6
11 GMP Goudomp Sédhiou 93 10 4+4 225 27,865 40.8 57.0 2.2
12 GNG Guinguinéo Kaolack 49 5 4+4 221 39,809 28.2 44.9 26.9
13 GOS Gossas Fatick 83 10 4+4 291 30,827 43.7 42.8 13.5
14 GRY Goudiry Tambacounda 164 10 5+5 424 35,962 43.3 55.4 1.6
15 KAF Kaffrine Kaffrine 94 10 4+4 294 75,331 15.5 52.0 32.4
16 KAO Kaolack Kaolack 77 10 4+4 468 129,054 19.2 42.6 38.3
17 KBM Kébémer Louga 109 10 5+5 639 94,438 35.7 45.8 18.5
18 KDG Kédougou Kédougou 167 10 5+5 176 47,506 17.9 16.5 65.8
19 KGH Koungheul Kaffrine 104 10 5+5 309 48,680 29.0 51.3 19.7
20 KLD Kolda Kolda 116 10 5+5 515 72,605 34.5 25.3 40.3
21 KNL Kanel Matam 134 10 5+5 189 66,004 16.9 73.4 9.7
22 KPT Koumpentoum Tambacounda 128 10 5+5 269 40,224 29.0 58.2 12.9
23 KTF Kaël-Taïf Diourbel 72 10 4+4 237 22,957 41.5 53.5 5.2
24 LGA Louga Louga 109 10 5+5 716 131,320 27.0 46.5 26.6
25 LNG Linguère Louga 155 10 5+5 560 96,934 34.5 49.7 15.9
26 MAT Matam Matam 118 10 5+5 208 77,460 13.4 70.1 16.6
27 MBR Mbour Thiès 72 10 4+4 438 205,416 11.6 35.0 53.4
28 MHD Malem Hodar Kaffrine 81 10 4+4 157 25,139 28.5 67.0 4.5
29 MYF Médina Yoro Foulah Kolda 115 10 5+5 463 54,533 35.0 57.7 7.3
30 NRP Nioro du Rip Kaolack 92 10 4+4 524 103,624 25.8 60.1 14.1
31 OUS Oussouye Ziguinchor 39 5 4+4 70 16,172 21.0 70.0 9.0
32 PKN Pikine–Keur Massar Dakar 16 2 4+4 39 123,594 0.0 13.0 87.0
33 POD Podor Saint-Louis 186 10 5+5 364 91,267 21.3 74.6 4.2
34 RAN Ranérou-Ferlo Matam 155 10 5+5 131 32,597 22.4 73.4 4.3
35 RUF Rufisque Dakar 34 5 4+4 119 158,721 1.6 43.0 55.5
36 SED Sédhiou Sédhiou 100 10 4+4 211 32,322 35.7 42.7 21.6
37 SLM Salémata Kédougou 81 10 4+4 97 5,839 72.3 27.8 0.0
38 SRY Saraya Kédougou 126 10 5+5 152 45,759 13.8 48.0 38.2
39 STL Saint-Louis Saint-Louis 47 5 4+4 194 73,706 11.0 66.8 22.3
40 TBA Touba-Mbacké (Ndame) Diourbel 49 5 4+4 241 289,328 3.0 13.1 83.9
41 TBC Tambacounda Tambacounda 215 10 5+5 674 100,102 26.4 30.4 43.2
42 THS Thiès Thiès 63 10 4+4 485 175,645 13.3 62.9 23.9
43 TIV Tivaouane Thiès 101 10 5+5 822 144,845 25.8 57.2 17.0
44 VEL Vélingara Kolda 99 10 4+4 460 104,269 24.9 35.4 39.7
45 ZIG Ziguinchor Ziguinchor 72 10 4+4 197 48,206 12.5 69.4 18.1