Transforming E-commerce Data into SCM Value

Posted on May 14, 2019

The skills the authors demonstrated here can be learned through taking Data Science with Machine Learning bootcamp with NYC Data Science Academy.


The enlargement of e-commerce platforms on brick and mortar retailers is one eminent illustration of the big data phenomenon which is wiping out many traditional retail industries nowadays. There are many well known aspects and causation of Amazon’s huge success in e-commerce; however turning data into actionable insights in the supply chain can be restrained due to inability to transform transactional data into a ‘customer-centric’ value.

There are numerous opportunities within retail industries to optimize and take control of accumulated data within their supply chain networks.

My intention of this project is to tackle order management part of the business which is sometimes much less appreciated compared to the spotlight of the demand forecasting by many people.

List of SCM Opportunities:

The motives of this R Shiny App is to visualize:

  1. Transactional lead time of point of sales to delivery to the end-consumer
  2. Maintain backorder ratio
  3. Monitor sales run-rate

which will allow the users to optimize warehouse resource allocation in the future.

The Data

Finding a decent public sales dataset which conveys real life situation is often difficult to obtain because of its nature of confidentiality; however thankfully Olist, the largest department store in Brazilian marketplaces, has published unclassified dataset over ~100,000 orders on Kaggle.

The whole dataset is well organized and comprised of 8 tables in a form of a star schema; key paired relationships between approximately 45 features in total. The dataset is somewhat self-explainable yet naming convention of some categorical features and customer reviews in Portuguese were some troublesome factors.


Above all, lacking dominant expertise of Brazilian market/logistics condition was an impediment for clear analysis. I have generalized my understanding to fit closely with circumstances here in United States.


Change internal data to Enterprise Resource Planning (ERP) format to hopefully enable to blend with Warehouse Management System (WMS) in Olist by creating features that can capture duration of each partition of the lead time.


Findings and Explanation


  • Consumer spent over $7 million Brazilian dollars in year 2017 alone
  • Shows YoY growth rate of 143% (week 1-35, 2017 v 2018).
Illustrates potential of e-commerce in Brazil.

Lead Time

This is a break down latency between the initiation and execution of product delivery. Which is essential part of this analysis. Link for the picture below.


Black dotted lines - Customer RDD (Required Delivery Date).

Definition: Estimated delivery date informed to the customer (approximately 24 days out)

Problem: This habit of having customer RDD set too far off compared to the actual delivery will often interfere for sellers to prioritize order fulfillment especially when there are stockouts and prevent to shape a good practice of demand forecasting. Just to note that forecasting should be done with KPI of actual shipment rather than POS (point of sales)

Green Bar - Purchased Order to Sales Order

Definition: duration of order purchase to payment approval time.

  • It takes about 12 hours for system ETL transaction in fraud checks on both credit cards and boletos.

Blue Bar - Sales Order to Goods Issue

Definition: duration of sellers shipping to the carriers.

  • About 3 days for sellers to deliver to each carrier.
  • This is an indicator that inventory outage isn’t yet a problem for many sellers; however this portion is likely to increase as demand goes up and forecasting is not done correctly.

Red Bar: Goods Issue to Goods Receipt

Definition: duration of carriers shipping to the end-consumers

  • About 9 days: for carriers to deliver the goods to the customers.

Problem: This is an atrocious result, in which holds up 73% proportion of the whole delivery process. Carrier should always deliver as soon as possible and do not hold onto products for so long.

This indicates carrier is likely to maintain high inventory levels resulting in immense inventory stocking cost, opportunity loss, and vulnerability of theft (Brazil is extremely well known for thieveries)

Backorder Rate

The Backorder Rate KPI measures how many orders cannot be filled at the time a customer places them. This is measured by frequency of orders delivered later than the  the estimated delivery date as mentioned above. I have drawn a red dotted line for ideal minimum of keeping a good 5%. Knowing the fact that customers are told their product is to be delivered about 24 days out, Olist's carriers  have terrible delivery service performance. Imagine 20% of shipping volume has all been delayed!


Back Order Ratio =  (Number of Customer Orders Delayed due to Backorder / Total Number of Customer Orders Shipped) * 100

  • Rate is likely to increase during the peak season.
  • Some odd finding is correlation plot indicates backorder status has higher correlation to customer review scores than the type of product.
  • As a side note, backorder vendor performance is monitored as well.


  1. Office furniture is one of the product category prone to have high lead time. This is mainly because sellers aren’t able to fulfill the orders right time in increase of demand. Since furniture have comparably have longer manufacturing time, better sales forecasting / in-stock strategy is required.
  2.  Amapa, Roraima, Amazonas are top three states in Brazil for average delivery lead time > 25 days. (date range: 2016/09/15 - 2018/08/27)


As we all know, biggest differentiator between Amazon and many other online retailers is the speed of delivery. This could be a big factor of reducing the customer churn. My goal  was, how can we shorten duration of carrier shipping (GI) to the end customer (GR)?

Meaning, if we need to choose a specific city in Brazil for locating ideal warehouses or locate the carriers where could it be?

I have used K-Means Clustering algorithm to cluster geolocation coordinates of customer locations for finding the cluster centroid. The central position of each partitioned location of Brazil will indicate ideal location for the warehouses for each location in Brazil. Obviously, more the fulfillment center, faster the delivery; however we want to be cost efficient and keep the clusters at expectation maximization, that is determining the optimal number of clusters.

Deciding what is the minimum, and best value for the number of clusters is not too clear with over 100K geolocation data. The elbow method was used below to determine what will be the best value for K for clustering which can clarify the fuzziness of the coordinates. It looks at the percentage of variance for each given clusters. The cluster variation is calculated as the sum of the euclidean distance between the data points and their respective cluster centroid. The total variation within each cluster will be smaller than before and at some point the marginal gain will drop, providing an acute angle in the graph.

Below is the ideal carrier/warehouse locations per each cluster of 5. Preferred Warehouse size has been calculated by 12WK FCST * ratio_of_orders * AVG(volume_of_product).

Future work:

Earth isn’t flat: after doing the analysis, I have realized that my K-Means result should be reasonably accurate only near the equator. To cluster using shortest curve distances among the surface of the earth, density function such as HDBSCAN or DBSCAN algorithms can be used for spatial clustering.

Efficient Coding: Clustering part of this project is not reactive. Not to blame performance limitation of R and ShinyApp’s 1GB data restriction. Clustering performance was very slow and plotting over 100K point on ggplot would result in a shutdown. It will be good to find an option to bypass this problem.


LAST UPDATE: 5/14/2019

Author's LinkedIn: Youngmin Paul Cho



About Author

Youngmin Paul Cho

Paul earned a B.S. in Mathematical Statistics from the University of Texas at Austin. His recent work has been related to Process Innovation, Web-databse Development, and SCM. He likes the challenge of drawing on creative solutions to problems...
View all posts by Youngmin Paul Cho >

Related Articles

Leave a Comment

Cliff Weaver May 15, 2019
Great article and concept. Any change you would be willing to share the Shiny code?

View Posts by Categories

Our Recent Popular Posts

View Posts by Tags

#python #trainwithnycdsa 2019 2020 Revenue 3-points agriculture air quality airbnb airline alcohol Alex Baransky algorithm alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus ames dataset ames housing dataset apartment rent API Application artist aws bank loans beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep boston safety Bundles cake recipe California Cancer Research capstone car price Career Career Day citibike classic cars classpass clustering Coding Course Demo Course Report covid 19 credit credit card crime frequency crops D3.js data data analysis Data Analyst data analytics data for tripadvisor reviews data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization database Deep Learning Demo Day Discount disney dplyr drug data e-commerce economy employee employee burnout employer networking environment feature engineering Finance Financial Data Science fitness studio Flask flight delay gbm Get Hired ggplot2 googleVis H20 Hadoop hallmark holiday movie happiness healthcare frauds higgs boson Hiring hiring partner events Hiring Partners hotels housing housing data housing predictions housing price hy-vee Income Industry Experts Injuries Instructor Blog Instructor Interview insurance italki Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter las vegas airport lasso regression Lead Data Scienctist Lead Data Scientist leaflet league linear regression Logistic Regression machine learning Maps market matplotlib Medical Research Meet the team meetup methal health miami beach movie music Napoli NBA netflix Networking neural network Neural networks New Courses NHL nlp NYC NYC Data Science nyc data science academy NYC Open Data nyc property NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time performance phoenix pollutants Portfolio Development precision measurement prediction Prework Programming public safety PwC python Python Data Analysis python machine learning python scrapy python web scraping python webscraping Python Workshop R R Data Analysis R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn seafood type Selenium sentiment analysis sentiment classification Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau teachers team team performance TensorFlow Testimonial tf-idf Top Data Science Bootcamp Top manufacturing companies Transfers tweets twitter videos visualization wallstreet wallstreetbets web scraping Weekend Course What to expect whiskey whiskeyadvocate wildfire word cloud word2vec XGBoost yelp youtube trending ZORI