SafariShare
Operations
Lessons

What Digitising Uganda's Bus Sector Actually Looks Like

SafariShare · 20 October 2025 · 4 min read


Two months into building bus ticketing for SafariShare, the most useful thing we have learned is that this is not a technical problem.

The technology is the tractable part. The harder work is relational and operational — persuading people who run working businesses to change how they work, then building something reliable enough to justify that trust.

Here is an honest account of what we are finding.

The Starting Point

Uganda's bus sector runs on physical presence and personal relationships. Booking agents sit at bus parks. Passengers walk up, negotiate, and pay cash. Receipts are handwritten. Schedules live in the heads of the staff at the terminal and are communicated by phone or word of mouth to anyone who asks.

This is not a system that operators think of as broken. It works, after a fashion, and they have managed it for years. A platform showing up and asking them to change how they operate needs to earn that conversation first.

The first meetings were not product demos. They were listening sessions. What does your operation look like on a typical day? What goes wrong? What would make the station agent's job easier? What are you worried about losing?

The same concerns come up across conversations. Operators are not afraid of technology. They are cautious about losing control of their pricing, their cash flow, and their direct relationships with regular passengers. They have seen other platforms before. They have reasons to be careful.

What Operators Actually Need

A management system for Ugandan bus operators has to solve the problems they already have, not the problems that look good in a pitch.

The problems they have are operational. They need to know how many seats are filled on each departure before the bus leaves. They need to know which agent sold which ticket. They need a revenue record that holds up at the end of the day. They need a system that works on a phone with intermittent data, operated by a station agent who may be using software for the first time.

The interface that works in a Kampala tech environment does not automatically work at a bus park in Gulu. Labels need to change. Flows need to be shorter. Error messages need to explain themselves plainly.

We are learning most of this by watching station agents use the first version and noting every moment of confusion.

The USSD Decision

Operators were consistent on one point: digital cannot mean smartphone-only. A significant share of their passengers do not have smartphones, or have smartphones but cannot afford data consistently.

USSD is a constrained interface. Text only, menu-driven, limited session length. Building a booking flow in USSD means compressing what takes a full screen into four or five lines. It is not elegant.

But USSD works on every phone, on every network, without data. A passenger with a feature phone anywhere in Uganda can use USSD to book a seat and receive a confirmation code. That code gets them on the bus.

We are building it because operators told us their passengers need it. We believe they are right.

What We Are Building Toward

The goal for the end of this year is a working product that solves the core problem: a passenger can find a bus, book a seat, pay securely, and receive confirmation. An operator can see their bookings, manage their schedule, and track their revenue.

Online booking. Mobile money payments across MTN, Airtel, and mPesa. A multi-operator directory. USSD access for passengers without smartphones. A management system for operators.

Everything else builds on top of that foundation once the foundation is solid.

What We Know So Far

Digitising Uganda's bus sector is slower than we expected and more relational than we expected. The technology is the straightforward part. The hard part is building enough trust with operators to get them to change how they work, and enough reliability in the platform to justify that trust once they do.

We are not done. We will update when we are.