Designing the Cooker and Canister Swap Process for KOKO's Agents

Redesigning how KOKO Agents replace faulty cookers and canisters, from a paper process that needed a rep stationed in every shop, to a five-minute flow built to survive the ways real customers don't fit the happy path.

Role

Senior Product Designer

Industry

Clean Cooking

Year

2025

The situation

There was no working service to fall back on. KOKO had shut down its original service points, so when a cooker or canister broke, what stood in for a fix was something nobody had actually designed. An SMS keyword opened a ticket. A rep was posted in the shop full time just to keep a Google Form moving, a form that needed the shop details, the serials of four separate items, and photos of all of them. From there a customer care agent took over: charging the wallet by hand, transferring ownership by hand, allocating the free refill by hand, then logging it in a shared spreadsheet so distribution knew what to collect. A paper form closed the loop, because legal needed a signature.

The cost of that wasn't a feeling, it was measurable. Two weeks of data put 2,676 swaps through this route, each one absorbing roughly three minutes of a rep's time on top of whatever they were actually meant to be doing that day, which comes to 133.8 hours in a fortnight spent re-keying information a system should have caught the first time. For the person standing in the shop, the whole thing ran anywhere from thirty minutes to an hour and a half, most of it spent waiting on a process rather than being served by one.

What I designed

My scope was the swap flow itself, inside the Agent App: identifying the registered customer, scanning the faulty items, scanning the replacements, capturing consent, taking payment, and confirming the swap. The harder part wasn't the path where everything goes right. It was designing for the ways it doesn't, since an agent standing in a shop with an impatient customer has no time to guess what a system means.

The flow had to hold up against a phone number that wasn't registered, a wallet balance too low to cover the fee, a cooker or canister that turned out not to belong to the person holding it, a QR code that wouldn't scan before the camera timed out, and a serial tag too worn to read. Each of those needed its own screen and its own recovery path, with a clear point at which the agent was told to stop and route the customer to care rather than push through. A registered item with a damaged tag gets a manual entry field, checked against the record on file. An item the system doesn't recognize at all gets a hard stop and a customer care number, because there's nothing left in the app for the agent to act on.

I tested the low-balance case specifically before launch, running it with real KOKO Agents against a prototype alongside the full swap, so it wasn't something an agent met for the first time with a customer already standing in front of them.

The situation

There was no working service to fall back on. KOKO had shut down its original service points, so when a cooker or canister broke, what stood in for a fix was something nobody had actually designed. An SMS keyword opened a ticket. A rep was posted in the shop full time just to keep a Google Form moving, a form that needed the shop details, the serials of four separate items, and photos of all of them. From there a customer care agent took over: charging the wallet by hand, transferring ownership by hand, allocating the free refill by hand, then logging it in a shared spreadsheet so distribution knew what to collect. A paper form closed the loop, because legal needed a signature.

The cost of that wasn't a feeling, it was measurable. Two weeks of data put 2,676 swaps through this route, each one absorbing roughly three minutes of a rep's time on top of whatever they were actually meant to be doing that day, which comes to 133.8 hours in a fortnight spent re-keying information a system should have caught the first time. For the person standing in the shop, the whole thing ran anywhere from thirty minutes to an hour and a half, most of it spent waiting on a process rather than being served by one.

What I designed

My scope was the swap flow itself, inside the Agent App: identifying the registered customer, scanning the faulty items, scanning the replacements, capturing consent, taking payment, and confirming the swap. The harder part wasn't the path where everything goes right. It was designing for the ways it doesn't, since an agent standing in a shop with an impatient customer has no time to guess what a system means.

The flow had to hold up against a phone number that wasn't registered, a wallet balance too low to cover the fee, a cooker or canister that turned out not to belong to the person holding it, a QR code that wouldn't scan before the camera timed out, and a serial tag too worn to read. Each of those needed its own screen and its own recovery path, with a clear point at which the agent was told to stop and route the customer to care rather than push through. A registered item with a damaged tag gets a manual entry field, checked against the record on file. An item the system doesn't recognize at all gets a hard stop and a customer care number, because there's nothing left in the app for the agent to act on.

I tested the low-balance case specifically before launch, running it with real KOKO Agents against a prototype alongside the full swap, so it wasn't something an agent met for the first time with a customer already standing in front of them.

What shipped, and what didn't

Two builds were on the table. The lighter one left the Google Form in place as the interface and wired automation in behind it, quick to ship and enough to hand the care team their hours back. The heavier one pulled the entire interaction into the Agent App and removed the form, the shortcode, the stationed rep and the paper consent in one move.

The team took the heavier build, and the reasoning behind that is worth stating plainly. Automating behind the form only solves the half of the process the care team was stuck doing. It does nothing for the customer, since their ninety minutes were mostly the form, the photography and the wait, not the manual transfer sitting behind it. The lighter option would have gotten a customer down to roughly twenty minutes and left a rep parked in every shop indefinitely. Building the harder version once was cheaper than shipping a partial fix and having to come back for the rest of it later.

I helped scope what phase one would actually cover: a registered customer, readable serials, the standard fee. We expected that path to account for 60 to 70% of swaps, a figure checked against a real day of swap data rather than taken on faith. Everything outside it kept running through the manual process in the meantime, with customer care as the fallback. Two of those exceptions came up more often than the estimate allowed for, a serial with nothing left legible to scan or type in, and a refurbished item that failed a second time and needed its own replacement. Looking back, I'd have built both into phase one rather than leaving them for later. The manual workaround was fine at ten shops. At a hundred, the cost of running the workaround caught up with the cost of just building it properly the first time.

Results

Swap time moved from a 30-to-90-minute range down to 3 to 5 minutes, an improvement of roughly 83%. Customer care got back more than 100 hours a month that had been going into manual data entry instead of customer problems. Paper consent disappeared entirely, replaced by an SMS carrying the terms and a one-time code to confirm them, which left legal with a cleaner audit trail than a signed form ever gave them. Rollout tracked refurbished stock rather than a fixed schedule, growing from 10 pilot shops to 100 as supply allowed.

Other projects

Copyright 2026 — Rey Mungai

Copyright 2026 — Rey Mungai

Copyright 2026 — Rey Mungai

Create a free website with Framer, the website builder loved by startups, designers and agencies.