Yajur Bawa
← All projects

Supply chain · Mobile

Real-time warehouse inward at Ula

Stock arrived at the warehouse at 11am and sat invisible to customers until 5pm. A mobile app for receiver workers closed that gap to seconds.

The problem

When a supplier truck pulled up at an Ula warehouse, the goods did not exist as far as the system was concerned. A receiver worker would log the inward on an AppSheet tool, which collated all the day's GRNs into an Excel file. At four or five in the evening, each warehouse admin would send that file to head office. Someone there would upload it manually into the inventory table. Only then would stock levels update, and only then could customers buy.

So stock that arrived at 11am would show as out of stock until 5pm. Retailers would call to check availability, be told it was coming, and sometimes not bother waiting. Every hour of invisible inventory was an hour of lost sales, and it was happening across every warehouse, every day.


My role

I owned this end to end as the sole PM. That meant the discovery, the design, working with engineering on the backend integration, and the rollout. The rollout piece was not a handoff. I flew to Indonesia and ran training sessions in person at three warehouses, watching workers use the app in real conditions and collecting feedback on the ground. What I heard there shaped several changes before the full network went live.


Approach

The fix was conceptually simple: replace the batch process with a mobile app that writes directly to the inventory table. No intermediary file, no manual upload, no end-of-day cutoff. A receiver worker scans a barcode, confirms quantities, submits the GRN, and the count goes live immediately.

The harder part was the people, not the technology. Warehouse workers had a process that worked well enough for them. The batch system was someone else's problem. Getting blue-collar workers to adopt a new tool required more than a clean interface. It required presence, patience, and enough in-person sessions for the habit to stick. The app went from three pilot warehouses to the full network within 20 days of launch.

A truck arrives at 11am. Walk through how inventory actually got updated in the old world. Click each step to advance.

Inventory invisible for
0h 00m
Customers see "out of stock" until the upload happens
1
Truck arrives. Worker logs GRN in AppSheet tool.
Paper-based counts transferred into a third-party app
11:00am
2
Admin collates all warehouse GRNs into one Excel file.
Done manually at end of shift
4:00pm
3
Excel file emailed to head office.
One file per warehouse, across the network
4:30pm
4
Head office admin uploads Excel to inventory table.
Manual import, runs once a day
5:00pm
5
Inventory goes live. Customers can finally buy.
6 hours after the stock physically arrived
5:05pm
6 hours of invisible inventory. Every day.
Stock that arrived at 11am was live for customers at 5pm. Any retailer who called in that window was told to wait. Multiply this across every warehouse and every delivery, and the opportunity loss adds up fast.

What shipped

A mobile app that let receiver workers scan incoming goods, confirm quantities, and submit a GRN in under a minute. The moment they hit submit, inventory updated. No batch, no file, no upload window.

I piloted it across three warehouses in person, running training sessions on the floor until workers were comfortable enough to use it without prompting. Within 20 days of those pilots, the app was live across the entire warehouse network.


What I learned

The technology was the easy part. A direct backend integration is a solved problem. The hard part was changing a habit in people for whom the old process was not broken. Blue-collar workers had a system that was someone else's headache, and giving them a new tool meant taking on their skepticism directly.

Going in person was the right call. No amount of documentation or remote training would have surfaced what three days on the warehouse floor did. Half of the feedback that shaped the final app came from watching someone use it wrong, not from anything they said.