Example report built from simulated driving. Twenty fictional cars on real Nelson Mandela Bay roads, generated by scripts/simulate-campaign.ts. The exposure model, the privacy gates and every calculation are the real ones. The vehicles, the advertiser and the price are not.
Demo Brand (fictional)

Demo Brand launch, Nelson Mandela Bay

Campaign report · October 2026 · month 1 of 3 · 20 wrapped vehicles
Methodology v1.0 · model 1.0.0
Modelled estimate
2 722 800
Estimated Visibility Adjusted Contacts in October 2026
Range 1 090 513 to 6 798 303 (one standard deviation)
If every month matches this one, the full 3-month campaign delivers about 8 168 400 (range 3 271 540 to 20 394 908). A projection, not a guarantee: driver hours, routes and the season all move it.
Cost per thousand contacts
R34,34
central estimate
Range R13,75 to R85,74
20 vehicles at R4 675,00 per vehicle per month is R93 500,00 for October 2026. Measured against person-passes instead, the cost is R3,77 per thousand.
✓ Verified from vehicle telemetryDirectly observed. Auditable to the second.
87 447
kilometres driven
3 643
hours on the road
20 of 20
vehicles reporting this month
98%
tracking coverage
Share of driving time the phones actually reported. Gaps are never filled in or grossed up: contacts are counted only where a vehicle was seen.
458
vehicle-days on the road
Days on which each car drove. Rideshare drivers set their own hours, so this varies by driver and is reported, not assumed.
0,26
route repetition index
Low means the cars roam and keep meeting new people. High means they repeat a corridor and deliver frequency to the same people.
Calculated
24 770 720
Estimated person-passes (gross opportunities to see)
People estimated to have been close enough, with a wrapped side facing them, to have had the chance to see it. Calculated from measured position and speed, published traffic parameters and open population data. Not a count of viewers.

Where the contacts happened

Height and colour are visibility-adjusted contacts. Areas around each driver’s home are always excluded, and an area is drawn only once at least 3 different vehicles have passed through it, so no single driver’s routine can be read off the map. 0% of this month’s contacts happened in areas below that threshold: they count in the totals above but are not drawn.
Visibility-adjusted contacts (log scale)
low22,195

Week by week

Visibility-adjusted contacts, central estimate. Weeks start on Monday.
01 Oct
327 75220 cars
05 Oct
596 78220 cars
12 Oct
595 74920 cars
19 Oct
594 12920 cars
26 Oct
608 38820 cars

Contacts by hour of day

A parked car earns nothing, so the small hours read zero.
00:00
702
05:00
2 348
06:00
76 830
07:00
202 726
08:00
199 710
09:00
167 487
10:00
150 879
11:00
136 583
12:00
54 256
13:00
73 669
14:00
141 395
15:00
181 588
16:00
347 658
17:00
366 146
18:00
197 106
19:00
129 850
20:00
110 284
21:00
100 762
22:00
39 769
23:00
10 707

By vehicle

Sorted by contacts. Coverage under 80% marks a phone that lost tracking: that car shows fewer contacts because the gaps are not filled in.
Vehicledayskmhourscoveragelongest gapcontacts
NMB-03 (full-time)235 396229,2100%5 min183 181
NMB-02 (full-time)235 079226,4100%4 min176 667
NMB-05 (full-time)224 895219,0100%10 min172 307
NMB-08 (full-time)234 816221,1100%10 min169 554
NMB-07 (full-time)234 847216,494%2 h 23 min168 465
NMB-04 (full-time)234 916204,391%15 h 48 min166 339
NMB-06 (full-time)224 761211,5100%4 min164 776
NMB-01 (full-time)224 655212,8100%16 min163 531
NMB-16 (peak)224 145179,5100%11 min138 944
NMB-15 (part-time)274 996186,393%2 h 19 min136 954
NMB-14 (part-time)275 059188,5100%9 min136 739
NMB-18 (peak)224 046170,3100%10 min129 228
NMB-09 (part-time)275 096188,6100%5 min129 053
NMB-12 (part-time)274 687185,4100%9 min125 343
NMB-17 (peak)223 716161,298%56 min124 885
NMB-11 (part-time)274 345179,4100%4 min123 442
NMB-10 (part-time)274 369172,595%1 h 1 min118 805
NMB-13 (part-time)274 000162,495%1 h 9 min114 591
NMB-19 (weekend)111 80463,4100%4 min40 118
NMB-20 (weekend)111 81964,2100%6 min39 878

Exposure efficiency by road type

Slow traffic beside many people is worth far more than distance on an empty freeway.
Road typekmcontactsper km
primary22 866992 61143,4
secondary30 4471 060 85934,8
residential7 554211 82628,0
trunk14 317316 10222,1
motorway7 910109 06013,8
How these numbers are made, and what they are not

Each wrapped car carries a phone that reports its position at least every 30 seconds. Consecutive positions form short segments. For each segment the model estimates how many people were near enough, with a wrapped side facing them, to see it. Surrounding traffic comes from the car’s own speed against the road’s free-flow speed; people on foot come from open population data, shifted between homes and workplaces by hour.

Those opportunities are then weighted by how likely the wrap was to be noticed: viewing distance, angle, how long it stayed readable, and whether the viewer was driving. That gives Visibility Adjusted Contacts. The range is one standard deviation, about 2.5 times either side of the central figure. It is wide on purpose, because the inputs are uncertain and the report says so.

A parked car earns nothing. Areas around each driver’s home are excluded entirely, and no area is drawn until several different vehicles have passed through it.

What this is not: a count of people who saw the wrap, which cannot be observed from a vehicle. It is not unique reach either: the same commuter passing a car on Monday and on Tuesday counts twice, because removing that duplication would need mobile device data we do not use. “Visibility Adjusted Contacts” is the term the Outdoor Measurement Council’s ROAD study uses; these figures are not ROAD-accredited and are not comparable to a ROAD-planned buy.

Population source: worldpop_R2025A+ghs_built_v_nres_R2023A_c0.3.