Designing a logistics platform to move goods across Africa, one delivery at a time

GoFlex is a three-sided logistics platform connecting senders, riders, and admins to move goods across Nigeria, starting in Lagos. As sole product designer, I owned the experience end-to-end — from problem framing through onboarding flows, delivery matching, payments, and the rider-facing operations tools.

Project type

Product design

Location

Geneva, Switzerland

Role

Staff product designer + cross team coordenation

Company

Sonar

Industry

Dev tools

Timeline

6 months

The problem

How might we let senders move goods point A to B seamlessly?

SMEs contribute over 48% of Nigeria’s GDP, but poor infrastructure and a fragmented supply chain make it hard and expensive to move goods reliably. Senders lose money on unreliable delivery. Would-be riders have no simple way to turn spare time and a vehicle into income. Existing players — Uber, Jumia Logistics, Glovo, GiG — each solve a slice of this, but none combine price-sensitive delivery for SMEs with a trustworthy, verified rider network built for African cities.

Who we’re designing for

Three user groups, three very different needs

Senders

Mostly companies who need affordable, reliable delivery and visibility into where their item is at every step.

Delivery riders

Individuals looking to earn extra income, who need a simple, trustworthy way to find work, get paid, and stay safe on the road.

Admins

Internal operators who need visibility and control over pricing, zones, riders, and platform health.

Design constraints shaped early decisions: users needed only basic literacy and a smartphone; riders additionally needed to navigate maps and own a vehicle. English as the primary language, built for Nigeria first, with room to scale across African markets.

Show Image

Design process

Mapping the ecosystem

Before any screens, I mapped how senders, riders, admins, and money needed to move together — including edge cases like receiver-side payment (in-app registration, shared payment link, or USSD short code) and drop-off to a third party when the receiver isn’t available.

Information architecture

With three apps, three user types, and dozens of interdependent features (onboarding, matching, payments, wallet, admin controls), the risk was sprawl. I built an IA to structure how features, screens, and permissions nested within each app — grouping content around what each user needed to see first (e.g., senders: send an item; riders: accept an offer; admins: monitor the network) and pushing secondary functions (wallet bill-pay, knowledge center, gamification) into clearly labeled, discoverable secondary layers.

Key decisions

Instant vs. scheduled delivery

Before any screens, I mapped how senders, riders, admins, and money needed to move together — including edge cases like receiver-side payment (in-app registration, shared payment link, or USSD short code) and drop-off to a third party when the receiver isn’t available.

Key design decisions

Instant vs. scheduled delivery, made explicit upfront. Rather than a single generic “book delivery” flow, senders choose their delivery type early — setting expectations for cost and timing before they invest effort in the rest of the flow.

A shared security code as the trust anchor. The same 6-digit code appears to sender, rider, and receiver at different points in the journey. One simple mechanic covers pickup verification, delivery confirmation, and third-party drop-off — without adding separate UI for each case.

Geofenced visibility for riders. Riders only see requests within their zone. This kept the matching experience relevant and reduced decision fatigue, rather than surfacing every open request across Lagos.

Wallet as a platform, not just a balance. Beyond delivery earnings, the wallet doubles as a bill-pay surface — airtime, data, electricity — for riders and senders, turning a transactional feature into a reason to open the app daily.

Admin as a control room, not an afterthought. Zones, base fares, per-km and per-time fees, and delay levies all needed to be tunable without a deploy. I designed the admin app around the levers ops teams would actually need to pull as the network scaled city by city.

Show Image

Outcome & status

[Add specifics once available — e.g., prototype validated with X riders/senders in Lagos, launch timeline, waitlist signups from prelaunch landing page, or current build stage.]

Reflections

Designing three interlocking apps at once meant every decision on the sender side had a ripple effect on riders and admins. The biggest lesson was to design the shared primitives first — verification, zones, pricing logic — before polishing any single screen, since those primitives ended up touching every flow in the product.

Design process

Mapping the ecosystem

Before any screens, I mapped how senders, riders, admins, and money needed to move together — including edge cases like receiver-side payment (in-app registration, shared payment link, or USSD short code) and drop-off to a third party when the receiver isn’t available.

MÁRCIO MOREIRA

©

Márcio Moreira

2026