Introduction
Key terminologies
Product - A finished good that is independently sold by FNP.
Component - Raw material from which a Product is manufactured. For example Red Rose is a component, whereas Vivid is a product that contains 8 red roses, filler, wrapper, & ribbon as components.
BOM - Abbreviation of “Bill of Materials” is the table that contains component quantities from which a product is manufactured. For example, Vivid’s BOM looks like (Red Roses - 8, filler - 50 grams, wrapper - 10 cm, ribbon, 20 cm).
Fulfillment Center (FC) - A facility that manufactures the Product and initiates the delivery to the recipient of the order. This may be a franchise store, warehouse, hub, or a third party drop shipper.
Carrier - A company that is responsible for moving the product from the fulfillment center to the recipient address.
Geo - a bounded geographical area defined on a map. It is used to mark the areas covered by a carrier for delivery.
Geo Group - A set of geos which share the same configuration. This is created to reduce the number of configurations required to be done in PSA. A geo may exist in multiple Geo groups. Each Geo group will contain only unique geos. Note that in Revvit 1.0, this was being referred to as Delivery Area. There will be no equivalent of Delivery Area Group in Revvit 2.0. A Geo Group will only contain Geos, and not other Geo Groups.
Product Group - Same as above, but products instead of Geos.
Component Group - Same as above, but Components instead of Geos.
01.
Introduction
Conceptual introduction
Tuples - a tuple is a finite list of elements
There are 7 variables ie,
Product - 100,000 SKUs
Destination geo - 30,000 pin-codes
Delivery date - 365 days in a year
Shipping method - 20 options
Time slot - 66 slots
Carrier - 1000 carrier options
Partner - 500 FCs
The resulting ruleset is going to have records to the order of sextillions rows in an excel sheet. It would be humanly impossible to manage so many records, hence a way to slice and dice the tuples and group them, expand them etc., is required to make it manageable.
The team decided to use the following model to group and summarise.
Have primary configuration that can be generalised for a product/product group combination for a geo-location and then we use the concept of “Override”, and “Exception to achieve the desired set.
02.
End users a.k.a. Actors
Partner Support Executives - Manage Components’ association against each partner
Availability Executive - Manage Data Masters such as: shipping and slot, geo. Manage exceptions and overrides.
Availability Manager - Will oversee the configurations in the system, use the dashboard for tactical decisions, notifications will go to this role, Geo-specific Ops head will also play this role.
Customer - Customer will consume the output of this PSA on the front-end in terms of availability
Partner (Fulfilment Centre) - Will See Configurations (associated components, serviceable pin-codes, etc) related to him/herself
Inventory Module - Inventory Module Will provide current Inventory at the component level at a certain frequency (after reconciliation with each entities)
Navision - Will provide the feed of all components to PSA
Product Information Management System - Will provide a feed of all Products to PSA
Front-end Module: Will consume availability information from PSA and populate the serviceability accordingly, validate the serviceability during checkout & Abandoned Cart.
03.
Layers
Entire PSA consists of a significantly large number of configurations. If these configurations are not “organized” properly, it can become easily overwhelming for the Business Team - the “Availability Configuration” team. For this purpose, all configuration sets are laid out in 3 different layers:
Static Layer
Configured during the onboarding of a partner/product/carrier etc., and defines the configuration that is more or less static, and edits to this configuration happen very rarely - whenever the partner changes her business guidelines.
Dynamic Layer
Configuration to take care of planned changes - some impending event that affects availability. It is this layer that listens to inventory changes and enables / disables products / geos etc.
Runtime Layer
Configuration to take care of unplanned eventualities that should affect the current order-taking process - that affects changes in real time! This layer will very closely interact with all frontend modules that utilize PSA for validating before taking an order.
04.
User stories
Static Layer
Configured during the onboarding of the partner, and defines the configuration that is more or less static, and edits to this configuration happen very rarely - whenever the partner changes his business guidelines.
Create Component Group
Delete Component Group
Search Component Groups
Rename Component Group
Add Components to Component Group
Remove Components from Component Group
Create Product Group
Delete Product Group
Search Product Groups
Rename Product Group
Add Products to Product Group
Remove Products from Product Group
Create Geo
Modify Geo
Delete Geo
Search Geos
Create Geo Group
Delete Geo Group
Search Geo Groups
Rename Geo Group
Add Geos to Geo Group
Remove Geos from Geo Group
Create Shipping Method
Delete Shipping Method
Search Shipping Method
Rename Shipping Method
Create Shipping Method Group
Rename Shipping method Group
Add Shipping Methods to the Shipping group
Remove Shipping Methods to the Shipping Group
Create Timeslot in Timeslot master
Edit Timeslots in Timeslot master
Delete Timeslots from Timeslot master
Add Timeslot to Shipping Method
Remove Timeslot from Shipping Method
Bootstrapping Partner (irrestive of Geo) availability in the PSA system
Add / Edit postal code
Add / Edit Store Lat / Long
Search components in the component section
Add / delete components from the list
Add / Edit Common Prep time
Add / Edit Shipping Methods
Add / Edit Time slots, Time slots would be shipping method specific
Add / update Business Hours
Add / update Common Cut-Offs
Add / remove serviceable Pin Codes/delivery areas along with cut-offs
Manage Overrides
Manage Exceptions
Manage Fulfilment Center Holiday
Manage Overrides
Manage Exceptions
Copy availability configuration from one partner to another
Manage Common Product-group-vs-Prep-Time configuration (across vendors) Mapping of Carriers with Partners 43. Mapping of availability for Express Partner (Fulfilment Centre)
Mapping of availability for Warehouse (Fulfilment Centre)
Mapping of availability for Third Party ((Fulfilment Centre)
Mapping of availability for International Partner (Fulfilment Centre)
Show list of Products not mapped to any Fulfilment Center (to do group mapping)
Create a Carrier in Carrier Master
Associate a carrier to the partner
Dynamic Layer
Configuration to take care of planned changes - some impending event that affects availability. It is this layer that listens to inventory changes and enables / disables products / geos etc.
Runtime Layer
Configuration to take care of unplanned eventualities that should affect the current order-taking process - that affects changes in real time! This layer will very closely interact with all frontend modules that utilise PSA for validating before taking an order. Runtime Tool will utilise the Runtime Layer to switch on/off availability in bulk. The view includes order analytics, and is used as “decision-making-and-execution” event.
05.
Design
The design is huge can be accessed in the figma file:
https://www.figma.com/file/kzmzNG4pT0f9R3ggRm9StL/PSA?type=design&node-id=515%3A0&mode=design&t=sz0jAK1Gz3H3xFil-1
Check out my first project!