FoodX, a subsidiary of SPUD, functions as a B2B SaaS platform, offering backend grocery operations, warehousing, and fulfillment services for delivery items. Our platform is meticulously designed to support partners, such as Walmart Canada and Carrefour Europe, in turning online fulfillment into a seamless and satisfying shopping experience for their customers.
The heart of our operations lies in the web portal, serving as a central hub that hosts a suite of apps with end-to-end fulfillment capabilities. This includes handling inbound, inventory, outbound, and reverse logistics. This comprehensive approach enables our partners to efficiently manage their entire fulfillment process in one place, streamlining operations, and elevating the overall customer experience.
As a member of the inbound and outbound teams, my role involves designing new and existing products for FoodX's desktop and mobile platforms. I collaborate with colleagues through workshops, user workflows, wireframes, and high-fidelity interactive prototypes to deliver exceptional user experiences. My responsibilities include producing high-quality design deliverables that effectively communicate concepts and solutions, as well as creating clean and detailed UI artifacts that adhere to the FoodX design system.
I actively improve and standardize the user experience of our products by maintaining regular communication with product managers, business analysts, software engineers, QA testers, designers, and key stakeholders. I also mentor other team members to drive effective UX design and user research processes.
Create Inbound Shipment Declarations and prioritize receiving.
Check the quality and quantity of on-hand inventory.
Optimize the restocking of pick locations.
Plan deliveries, assign drivers, and setup store locations.
Manage issues and complete orders before shipping.
I lead the user experience design for the new Replenishment mobile app. Replenishment is the process of stocking pick shelves from overstock inventory. Managers create replenishment work items on desktop, then team members execute the tasks on mobile devices. They need to replenish the goods on time to avoid delays in order fulfillment or undelivered customer orders.
Design an efficient and intuitive new mobile app so that our clients no longer need to print manual reports to execute the replenishment process. Existing paper-based processes are inefficient, environmentally wasteful, and immeasurable.
1 month discovery and design, 6 to 8 weeks implementation and QA, 1 week user acceptance testing, 1 week pilot, and 2 weeks stabilization.
Define UX goals and metrics for features that will meet user needs and determine success.
Visit internal warehouse to understand existing paper-based workflow, flow of goods, locations (zone, aisles, bay, shelf and slots), and working environment. I user test features before introducing them to customer environments.
Power BI reports including replenishment KPI's, such as total replenished lines and units by user and zone.
Understand product direction based on user needs and problems. User needs report asking about warehouse worker attitudes towards workflow.
Design prototypes for overall interaction, UX writing, and prioritize. Review wireframes, workflows, high-fidelity prototypes, and iterate on concepts.
Walkthrough interactive prototypes to sign-off.
Guide UX features, UI components, and accessibility specs. Final asset productions include:
I utilized user stories to grasp user needs, actions, and goals, extracting insights from both the product team and customer feedback. I organized user needs according to the user's tasks throughout their shift, leveraging this information to guide design choices and craft intuitive and user-friendly wireframes, prototypes, and UI artifacts that address specific pain points.
Feature or item |
As a warehouse team member, I want to... |
Conditions of satisfaction |
---|---|---|
1.00 Feature
User action: Select replenishment app on FoodX mobile platform. |
Select the type of replenishment work that I want to perform so that I can execute on picking from bulk or putting it away to the picking location. | Present user with option to select the work to pull product or to put away product. |
2.00 Feature
User action: Select Restock workflow (pick from bulk). |
Select Restock workflow and be directed to each location and notified of the item and quantity to pick from the bulk location so that I can place the item in a cart (or staging location) so that it could be put away. | Present user with option to select the work to pull product. |
3.00 Feature
User action: Select task (date, zone, task ID). |
See a listing of zones that have work available so that I can select the work item to start pulling product against. |
|
3.10 Item
User action: Scan cart barcode (validate cart). |
Scan a pre-printed barcode that is affixed to a cart so that I can track the work that is being actioned on. |
|
3.20 Item
User action: Scan location barcode (validate bulk picking location). |
See the location from which I will pick inventory prominently displayed on the screen so that I can know where to go find the product and can confirm I'm in the right location by scanning the location barcode. |
|
3.25 Item
User decision: Skip location. |
Temporarily bypass a location so that a team member can come back to it later. | Reprioritizes to the bottom of the queue. |
3.25 Item
User action: Scan item barcode (validate item to be picked from bulk). |
Scan the universal product code (UPC) of the product so that I can ensure I am picking the correct product from the slot. |
|
3.30 Item
User action: Enter item quantity (confirm quantity to be picked from bulk). |
Input the quantity for non-variable weight items that I am picking from the location so that I can update inventory to maintain inventory accuracy. |
|
3.40 Item
User action: Enter item variable weight (confirm weight being picked from bulk). |
Input the quantity and weight for variable weight items that I am picking from the location so that I can update inventory to maintain inventory accuracy. |
|
3.45 Item
User decision: Undo. |
Undo a confirmed action so that I can correct any errors. |
|
Feature or item |
As a warehouse team member, I want to... |
Conditions of satisfaction |
---|---|---|
4.00 Feature
User action: Select Restock workflow (put away). |
Scan an item from replenishment cart and be directed to the picking location of the item so that I can replenish the picking location. | Present user with option to select the work to put away product. |
4.10 Item
User action: Scan cart barcode (validate existing cart). |
Scan a pre-printed cart barcode that is affixed to a cart so that I can I could track the work that is being actioned on. |
|
4.20 Item
User action: Scan item barcode (validate item taken from the cart). |
Scan an item from the replenishment cart so that I can start the process of putting it away. |
|
4.30 Item
User action: Scan location barcode (validate picking location). |
See the picking location of the item prominently displayed on the screen so that I can put the product in the proper location. |
|
4.35 Item
User decision: Skip location. |
Temporarily bypass a location so that a team member can come back to it later. | Reprioritizes to the bottom of the queue. |
4.40 Item
User action: Enter item quantity (confirm quantity to be put away). |
Confirm the quantity for the non-variable weight item that I am putting away into the picking location so that I can update inventory to maintain inventory accuracy. |
|
4.50 Item
User action: Enter item variable weight (confirm weight to be put away). |
Confirm or input the weight(s) for the variable weight item I am picking from the location so that I can update inventory to maintain inventory accuracy. |
|
4.55 Item
User decision: Undo. |
Undo a confirmed action so that I can correct any errors. |
|
I created a workflow chart that illustrates the complete path a team member takes to complete their tasks. This chart maps out the entry point to the exit points, decision points, and identifies any bottlenecks and return errors (failures).
I delivered wireframes and tested high-fidelity interactive prototypes with end-users. I was able to gather valuable feedback and iterate on concepts to improve the overall user experience.
As a team member, I want to select the type of replenishment work that I want to perform so that I can execute on Retrieve.
As a team member, I want to be able to select a previous date that has active work so that I can complete tasks that were not completed.
As a team member, I want to see a listing of zones that have work available so that I can select the work item to start pulling product against.
As a team member, I want to scan a pre-printed barcode that is affixed to a cart so that I can track the work that is being actioned on.
As a team member, I want to see the location from which I will pick inventory so that I can go find the item and scan the location barcode to confirm I'm in the correct location.
As a team member, I want to be able to skip the location so that I can work on another location because the current location is inaccessible.
As a team member, I want to scan the universal product code (UPC) of the product so that I can ensure I am picking the correct product from the slot.
As a team member, I want to enter the quantity that I am picking from the location so that I can update inventory to maintain inventory accuracy.
Retrieve-specific: 0 item weight is an allowable quantity when adding item to cart. If user entered 0 or more inventory than requested, display Continue with quantity mismatch confirmation dialog.
As a team member, I want to undo a confirmed action so that I can correct my errors. After undoing, I want to see previous values that I entered so that I can quickly review, change, and resubmit.
As a team member, I want to input the weight and quantity that I am picking from the location so that I can update inventory to maintain inventory accuracy.
A variable weight is the exact weight of an individual food item. Examples include meat, blocks of cheese, vegetables, and fruit. These items are often sold in bulk and priced by weight, rather than by discrete UoM. To simplify receiving, the average weight for each unit is recorded when it first arrives in the warehouse, but the actual weight for each packaged unit of an item can be slightly different.
Discrepancies between the virtual and physical quantities of an item can occur as it gets received, put-away, replenished, cycle counted, and picked. Team member's entered and confirmed variable weights on mobile would be displayed in the manager's UI report on desktop to help capture these instances so that the virtual weight in the system can be updated with the physical weight.
Tap Retrieve button prompts Retrieved or Task completed snackbar. Snackbar and Undo button behaviour is the same in step 5.1.
As a team member, I want to see the No longer assigned to this task alert dialog in this mobile app if a manager has unassigned this task in the desktop app.
As a team member, I want to start on Restock workflow so that I can scan an item from the retrieved cart, be directed to the location of the item, and replenish the picking location.
Tap Restock in the segmented control. Restock work are available when Retrieve work is done.
As a team member, I want to review the number of task-lines on each cart so that I have an idea of where to prioritize unless directed by management.
As a team member, I want to scan a barcode that is affixed to a cart so that I can track the work that is being actioned on.
If the user successfully enters or scans the cart barcode, take the user to the next step Scan item. Enter manually and Change behaviour is the same as Retrieve.
As a team member, I want to scan an item barcode from the Retrieved cart so that I can start the process of putting away.
As a team member, I want to see the location of the item displayed on the screen so that I can put the product in the proper location.
As a team member, I want to confirm the quantity that I am putting away into the picking location so that I can update inventory to maintain inventory accuracy.
As a team member, I want to undo a confirmed action so that I can correct any errors. After undoing, I want to see previous values that I entered so that I can quickly review, change, and resubmit.
As a team member, I want to verify or input the weight(s) for the variable weight item I am picking from the location so that I can update inventory to maintain inventory accuracy.
Tap Restock button displays the Restocked or Cart completed snackbar. Snackbar and undo behaviour is the same as Restock step 4.1.
As a team member, I want to start on another workflow without completing the current task so that I can do other warehouse work.
I provide users with instructional error messages that clearly explain how to fix the problem. I ensure that these messages are easy to understand, removing any guesswork and allowing users to continue with their tasks without having to memorize complex instructions. I work closely with the Director of Product Management to finalize test cases for the Replenishment app.
In addition to error messages, I have also created UX writing guidelines that address the specific needs, behaviours, and contexts of warehouse workers. These guidelines provide best practices for creating user-friendly confirmation, alert, and informational messages that speak clearly to our users.
Working alongside a technical writer, I ensure that our writing is easy to understand and uses plain language. I also ensure that any warehouse nomenclature used in the app is understandable for new warehouse workers, reducing confusion and increasing efficiency.
UI component |
Description |
---|---|
Cart barcode errorHelper text: Cart barcode does not exist.Scans or enters a cart barcode that does not exist. |
|
Location barcode errorsHelper text: Location barcode does not match [location ID].Cannot scan or enter a different location barcode. Helper text: Incorrect location type.Scans or enters a valid barcode, and it was setup with the wrong location type. Helper text: Location not found.Scans or enters a location that does not exist. Generic error helper text: Cannot complete check. Information about the item profile has changed.Tries to confirm and complete a location, but Item Profile has issues. |
|
Item barcode errorsHelper text: Item barcode does not match [item ID].Cannot scan or enter a different item barcode. Helper text: Item does not appear in inventory.Scans or enters an item barcode that does not exist. Restock-specific helper text: Item not recognized in [cart ID] cart.Scans an item barcode from a replenishment cart. Error message must occur if it is an item not recognized in the cart. A scenario is someone placed an item in the cart by accident. |
|
All barcodes default errorHelper text: Please refresh the page or contact a system administrator.Default error message is displayed when the error is not covered on code. In this case, a user scans an item barcode, but the item number on item profile is wrong due to data issue. |
|
Weight is out-of thresholdText: Weight should be between [0] kg and [0] kg.User enters item weight that is out of threshold. Enable Add action button as we are accepting weights that are out of threshold. If tap Add enabled button, display Weight is out of threshold tooltip text in the Added item weights list. |
|
Non-variable weightVariable weight |
Not enough virtual inventory in locationText: Not enough virtual inventory in [location ID]. Please make the correction to continue.Applies to variable and non-variable items. Retrieve or Restock button is always enabled. Tap button displays the error message. User must update in Microsoft D365 and do cycle count to continue Restock. |
Cannot be greater than the required amountRestock-specific helper text: Cannot be greater than the required amount.Cannot restock more from the cart. If user inputs an amount greater than required, display the error message. |
|
Processing indicatorProcessing indicator in disabled action buttonThe front-end will need to wait until we get a response from the back-end before proceeding. |
|
No internet connectionText: You're offline. Check your Wi-Fi connection.No internet connection. Wifi off outlined icon placement is 80 px from the bottom of the top navigation bar. |
|
Connection has timed outText: Connection has timed out.User session has timed out. |
|
No work availableText: No work available.No replenishment work created by the manager. |
I create clean and detailed UI artifacts that adhere to the FoodX Design System. This ensures a consistent look and feel across all our products, creating a unified user experience. Additionally, I establish UX writing guidelines that provide best practices for creating user-friendly confirmation, alert, and informational messages.
With the introduction of the new Replenishment app, we are replacing paper-based processes and enabling the tracking of data with an effective workflow. This data can be leveraged to create operational reports through Power BI, providing valuable insights that enable us to optimize our processes and drive business growth.
The Replenishment app provides warehouse managers with a better view of replenishment activities, enabling them to allocate labor hours more efficiently. This leads to increased productivity and reduces the cost per order, while also improving on-time grocery delivery.
Replenishment app is a real-time inventory management tool that benefits our clients with a solution with expected returns in:
Director of Product Management | Rob Sung |
Assoc. Product Manager / Business Analyst | Nina Dehzad |
Product Manager | Rodrigo Pipoli |
Business Analyst | Charith Wijesiri |
Lead Developer | Michael Becker |
Sr. Software Engineer Lead | Igor Adirin |
Sr. FE Developer | Nishant Desai |
Sr. Software Developer | Sarvnaz Yavari |
Sr. Software Engineer | Dmytro Nikulin |
Software Engineer | Muhammad Asfour |
Software Developer | Negar Hadjiha |
Software Developer | Cyril Ngyen |
QA Automation Engineer | Krystsina Kimajeva |
Sr. UX/UI Designer | Tina Kao |
Design Manager | Gonzalo Hernandez |
Sr. Technical Writer | Bonnie Lee La Madeleine |
Director of Creative Strategy | Anthony Pratico |
VP of Product | Jason Boast |
Sr. Business Analyst | Bettina Sy |
SVP of Global Solutions | Reza Bafandeh |
VP of Engineering | John Cornell |
Director of Operations | Richard Lee |
End-to-end user experience, monetize digital distribution, & attract players towards our funnel to other features.
View case study