All work

Case 01 of 06

klik Delivery App

One order, four apps.

The customer, driver, vendor and business apps behind a delivery service across Ethiopia, all on one design system. I’m the only designer on it.

TL;DR
Problem
The handoffs between apps broke. A customer’s allergy was saved, but never reached the kitchen.
What I did
Designed the customer, driver, vendor and business apps on one design system, as the only designer.
Result
What a customer tells us now travels with the order to whoever holds it next.
Client
klik delivery
My role
Lead UI/UX Engineer, sole designer
Date
2025
Platforms
iOS and Android, light and dark
Team
Me, CTO, project manager, Flutter dev, backend, QA
Industries
  • Delivery
  • Logistics
  • Food
  • Grocery
  • Parcel
  • Gifts
  • Pharmacy
  • Marketplace
100,000+customer app downloads in 7 months4.7Google Play4.8App StoreB2B2Cfour-sided marketplace

Try it yourself

This is the real Figma prototype, running live. Order food, follow the rider and rate the vendor, the way customers do.

Things to try

  • Add an allergy in Preferences, then order
  • Watch the order move from vendor to rider
  • Rate the rider after delivery
Pick an app

These are the real Figma prototypes, embedded live, so they need a stable connection and can still feel slow or skip a step. For the full picture, open the Figma file. Every screen, state, the design system and the components are there.

klik customer app splash

Loads on tap, not on scroll

Keeps this page fast for everyone who only reads the case study.

01Overview

A marketplace where every order passes through four people.

klik delivers food, groceries, parcels, medicine and more across Ethiopia. The core idea of this work: whatever a customer tells us, like an allergy, travels with the order to whoever is holding it next.

02The problem

The hard part of a marketplace is the handoffs.

A customer with a garlic allergy was sent food containing it. The allergy was saved in the customer app, but nothing carried it to the person cooking the order.

  • Saved

    Customer

    Saves “Garlic” in Preferences

  • Lost here

    Vendor

    Sees the items, not the allergy

  • Too late

    Rider

    Hands over a sealed bag

03Research

What we assumed vs what we found.

Sources:Vendor callsSupport ticketsRider feedbackInformal, no formal study
We assumedWe found

01Customers would put allergies in the order note.

Vendors pack from the item list. At rush hour nobody reads the note.

02One spinner is enough while payment runs.

Mobile money confirms on a separate USSD prompt, so people thought the app had frozen.

03Each app could be designed on its own.

The handoffs between apps are where things break: allergies, payment status, parcel handover.

04What we learned

Three things kept coming up.

  • Notes get skipped

    At rush hour, vendors pack from the item list. Free text at the bottom of an order rarely gets read.

  • Waiting feels like failing

    With no sign of what is happening, a pending payment looks exactly like a frozen app.

  • Handovers need proof

    Riders and customers both needed a clear moment when a parcel changed hands.

The rule we took into every app

If a detail matters to the customer, it has to reach whoever is holding the order.

05What I changed

Declared once, met twice.

The customer declares allergies once. The vendor meets them twice: as tags on the incoming order before accepting it, and as a Critical alert while packing it.

Vendor app - New orders
Vendor app home with an allergy tag on the new order

The problem

Vendors packed from the item list. An allergy the customer saved in Preferences never reached the kitchen.

The fix

The allergy now rides on the order. It shows as tags before the vendor accepts, and again as a Critical alert while packing.

Core decisions

  • Tags appear before accepting, so a vendor can turn down an order they can’t make safely.
  • A Critical alert repeats it at the moment it matters: packing.
  • Tags come from the customer’s Preferences, not free-text notes.

06Four apps, one job each

Each app is built for the person holding it.

Drivers clock in at stations, run multi-stop parcel routes with a call before arrival and a photo at handover, and see a weekly ranking. Vendors accept orders against a timer. Businesses send parcels in bulk.

  • Customer

    Order, track, rate

  • Driver

    Stations, routes, handover photo

  • Vendor

    Accept on a timer, pack, hand off

  • Business

    Bulk parcels and team accounts

07Paying with mobile money

Designing around a wait the app can’t see.

Customer app - Mobile money checkout
Paid: the order is already on its way to the vendor
Paid: the order is already on its way to the vendor
Failed: try again or change the method, in the same spot
Failed: try again or change the method, in the same spot

The problem

Mobile money confirms payment on a USSD prompt outside the app. The app was waiting on something it couldn’t see, behind one spinner.

The fix

Processing, paid and failed each get their own state, so the customer always knows where to look next.

Core decisions

  • Processing points you to your phone, where the action is.
  • Failed offers a retry or another method in the same spot.
  • Paid confirms the order is already on its way to the vendor.

08How it changed

Three versions, one designer.

I designed klik from its first release. Each version answered what the last one taught us, so the screens below are the same product growing up.

  • v1.0The first release

    Customer and business apps, built fast to prove that Addis would order this way.

  • v2.0Four apps

    Vendor and driver apps joined. Each one grew its own patterns, and the handoffs started to break.

  • v2.1One system, now

    One design system across all four apps, light and dark, with allergies carried from order to kitchen.

09Results

Shipped, and rated well by the people using it.

  • 100,000+customer app downloads in 7 months of launch
  • 4.7on Google Play
  • 4.8on the App Store
  • 4 appson one design system

Did it work?

  • Allergy alert

    Allergy complaints dropped after the tags and Critical alert shipped.

  • Payment states

    Fewer “did my payment go through?” support tickets once each state had its own screen.

  • Vendors

    Vendors started pointing to the allergy tags themselves when packing.

On the stores

The listing screenshots I designed for the App Store and Google Play. Nine frames, one feature each.

The system underneath

klik v2.1, built on Figma variables. One set of tokens drives all four apps, light and dark, with a Brand mode that switches between Customer red and Business blue.

Colour: primitives, semantic tokens and brand modes
Typography: the Urbanist scale
Actions: buttons, chips and pills
Navigation: tab bars, headers and sheets
Motion: how screens and sheets move
Feedback: toasts and bottom sheets
The design file

See all of klik Delivery App in Figma.

Every screen and state, the components and the design system, in the file I designed it in.

Next project, 02 of 06

FX League

A trading competition platform where brokers, prop firms or other partners fund the prizes.