Anthony Francis
Senior software developer with over a decade of experience architecting, transforming, and maintaining high-availability websites, servers & apps.
Click & Collect App "Valet" Feature
Officeworks 2021-2022
Click & Collect is an internal-facing Officeworks app, installed on PDT devices in-store, which enables team members to pick orders, manage collections, and co-ordinate deliveries with 3rd party vendors e.g. Toll, DoorDash, or UberEats.
The Problem
During the COVID pandemic, Officeworks stores were closed to shoppers for long periods, but were often still operating as Click & Collect hubs for customers. We found that having all of the orders close to the doors and ready to collect resulted in a massive NPS spike that quickly went away when normal trade resumed, and ready orders went back to being stored -- usually -- in back of house. We noticed that there was a correlation between customer time spent waiting in-store to collect, and negative NPS.
The existing process for having someone come from back of house with a customer's order was to read the order number out over the radios worn by some (but not all) team members, and then wait for someone back of house to find that order number in the app, find the order, and bring it out, which all took considerable time. I was tasked with architecting and implementing a way to facilitate quicker collection times for customers -- the "Valet" feature.
The idea behind the new process was for team members -- either based at POS or floating in the store -- to be able to scan a barcode on the customer order's "Collection Ready" email, and have a notification sent to each team member who was logged into the Click & Collect app. The team member could then acknowledge the request, grab the order, and head to the front of the store to process the collection.
Architecture
The Click & Collect app is React Native/TypeScript based, which enabled me to implement an AWS ECS service that can send native push notifications to logged-in devices in-store. Deep links in the notifications allowed team members who tapped on the notification to be taken directly to the relevant order. The "Collection Ready" email did not have a barcode to scan at that time, so I collaborated with the Digital team to include a barcode that our service generated in their emails.
Once I had the basic building blocks, I exposed an API in the AWS ECS Click & Collect service to allow Valet requests to come in from the POS registers as well as the handheld PDTs.
Challenges
The valet initiative had several issues to address:
- If a PDT is not being held when the valet notification comes in, and the notification sound is like all of the others, what would prompt a team member to pull out the PDT and check it, presuming they are otherwise occupied?
- What would happen if two or more team members see the notification and start to fetch the same order, independently?
- What would happen if nobody sees the notification at all?
- What would happen if the order had several bags or boxes, could we ensure that they were all collected?
When the goal is to reduce customer waiting time, then each of the answers to these questions must be considered and solved in a way that ensures customers are not left waiting.
Solution
The first problem to solve was that of the notification sound: previously all notifications had the same sound, or no sound, relying on the team member to remember to check the device frequently. By diversifying the sounds of each notification, I managed to convey several different levels of urgency, from a gentle "more orders have dropped" sound, through a "Ride of the Valkyries" tune for customers who are inbound to the store, to the "ding dong!" of a valet request. Designing the sounds was a novel experience for me, I did not want to pay for licensed sounds, nor did I want the sounds themselves to be very annoying. I hope that the tones I ended up with suit that purpose, I still enjoy hearing them when I'm in store.
The second problem of multiple team members working independently on the same order was solved using a variation on the logic used to lock/unlock orders for picking. The idea is that a team member "accepts" a valet request, and then that team member is responsible for ensuring that the order is collected. The request will show as "accepted" on other devices, but if another team member physically has the order in their hands, they can "take" the valet from the other team member in order to complete the collection.
I implemented some logic in the Click & Collect server layer to track valet requests and send the notifications. If a valet notification isn't accepted at all within 30 seconds, the team member who initiated the request is given the option to resend the notification. Operationally, if this happens more than a couple of times, a team member is supposed to reach out to someone on the radio for assistance.
As Click & Collect became more popular, order sizes increased, and often orders were spread out over multiple bags or boxes, or "full case" items -- items that either had their own box (e.g. a printer) or were too big to fit into a box (e.g. a floor mat). I implemented a system where team members were required to input the precise number of bags/boxes/full case items at the end of the pick process, as well as note where each item was stored (as some bulky items were kept separately from smaller ones) for easier collection.
Results
Valet went out to pilot in a small number of stores, in combination with new training and a business focus on customer waiting time. The results from those pilot stores were immediate and unmistakable: the reduction in waiting time for customers in the pilot stores resulted in an NPS increase of 20 points! The remaining stores were trained and given the valet build, and we noticed that same NPS increase across stores nationwide. Shortly after valet was released, I worked with the website team on implementing an "I'm on my way!" feature, that let customers pre-emptively let us know they were coming to the store, so that we could move their orders to the front of the store ready for them -- to mixed but mostly positive results.
Retrospective
I'm quite proud of the design and implementation of the valet feature. The corporate structure of Officeworks at that time was quite siloed, so it was a rare example of the Stores team working with the Website team. I wish that we had been able to collaborate more -- initially the website team refused to create a barcode generator, so the barcodes included in Click & Collect customer email use a barcode generated using infrastructure owned by the stores team (it was our first and only publically exposed infrastructure). If we had been able to have the enthusiasm and cooperation from the website team initially that we had eventually, we could have delivered a much richer solution for customers and team members.