Glovo, Yango Food, Heetch Food dominate last-mile delivery in African capitals. But their commission (22-28%) chokes restaurants and shops. A local last-mile startup, focused on 1-2 cities, can be profitable from 200-500 orders/day with modern tech stack.
TL;DR
- Stack: Next.js apps (customer + driver + merchant) + Postgres + Mapbox + Wave.
- Glovo differentiation: 12-15% commission + better merchant UX + native Wave/OM payment.
- Market: Dakar, Abidjan, Douala, Lagos; secondary (Bamako, Cotonou, Ouaga).
3-app architecture
`
[Customer app: order + payment]
↓
[Merchant app: receives + prepares + ready]
↓
[Driver app: pickup + delivery]
↓
[Backend orchestration]
├── Smart routing (Mapbox Optimization API)
├── Dynamic pricing (zone + time)
├── Wave / OM / cash payment
└── WhatsApp + push notifications
`
Data model
`prisma
model Merchant {
id String @id @default(cuid())
type String
businessName String
address String
gpsLat Float
gpsLng Float
hours Json
preparationTimeAvgMin Int
commissionRate Float
walletProvider String
walletNumber String
isActive Boolean
}
model Driver {
id String @id @default(cuid())
firstName String
lastName String
phone String
whatsapp String?
vehicleType String
registrationNumber String?
cniScan String?
walletProvider String
walletNumber String
rating Float?
totalDeliveries Int @default(0)
isActive Boolean
currentGps Json?
currentStatus String
}
model Order {
id String @id @default(cuid())
customerId String
merchantId String
driverId String?
items Json
subtotal Int
deliveryFee Int
commission Int
total Int
status String
paymentMethod String
paidAt DateTime?
pickupGps Json
Need a professional website?
Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.
deliveryGps Json
estimatedDeliveryAt DateTime?
actualDeliveryAt DateTime?
customerRating Int?
driverRating Int?
}
`
Smart routing
`tsx
async function dispatchOrder(orderId: string) {
const order = await getOrder(orderId);
const merchant = await getMerchant(order.merchantId);
const candidates = await prisma.driver.findMany({
where: {
currentStatus: 'ONLINE',
isActive: true,
},
take: 10,
});
const ranked = candidates
.map(d => ({
driver: d,
score: computeDispatchScore(d, order),
}))
.sort((a, b) => b.score - a.score);
for (const { driver } of ranked.slice(0, 3)) {
const accepted = await offerOrderToDriver(driver, order);
if (accepted) {
await prisma.order.update({
where: { id: orderId },
data: { driverId: driver.id, status: 'ACCEPTED' },
});
return;
}
}
}
`
Dynamic pricing
`ts
function computeDeliveryFee(order: OrderInput) {
const baseRate = 1000;
const distanceKm = computeDistance(order.merchantGps, order.deliveryGps);
const distanceFee = distanceKm * 200;
const hour = new Date().getHours();
const isPeak = (hour >= 11 && hour <= 14) || (hour >= 18 && hour <= 22);
const surgeFactor = isPeak ? 1.4 : 1.0;
const isRaining = await checkWeather(order.merchantGps);
const weatherFactor = isRaining ? 1.2 : 1.0;
const total = (baseRate + distanceFee) * surgeFactor * weatherFactor;
return Math.round(total / 100) * 100;
}
`
Real case — Dakar startup (Gora Express)
| Metric | Month 6 | Month 18 |
|---|---|---|
| Orders/day | 80 | 850 |
| Active drivers | 12 | 95 |
| Partner merchants | 28 | 240 |
| Average commission | 13% | 14% |
| Monthly GMV | 18M XOF | 280M XOF |
| Platform revenue | 2.3M | 39M |
Common pitfalls
- Compete on price vs UX — beating Glovo by 5% cheaper is hard. Beating on merchant UX + native Wave payment more defensible.
- Driver churn — instant wallet recharge (not T+7) = loyalty.
- No instant CS — every delivery incident needs a human. Invest.
- Critical density not reached — under 80 orders/day, drivers demotivated.
- Peak-hour app crashes — Locust load testing + Sentry observability critical.
FAQ
Q: Initial investment?
A: 80M-200M XOF for solid MVP + 12 ops months. Investors: 4DX Ventures, Norrsken22, Partech Africa.
Q: Competition?
A: Glovo, Yango, Heetch. But secondary markets (Bamako, Ouaga, Lomé) less saturated.
Conclusion
Africa last-mile delivery startup 2026 = profitable local niche but demanding clean execution. Direct Glovo battle = death. Secondary niche or merchant differentiation = viable.
Mohamed Bah
Fondateur, Kolonell
Passionate about digital and entrepreneurship in Africa, Mohamed has been helping Sénégalese businesses with their digital transformation since 2020. Founder of Kolonell, he believes every SME deserves a professional and accessible online présence.
