A data story in five acts · 99,441 orders · Brazil, 2016–2018
Growth was never
Olist's problem.
Between January 2017 and August 2018, Brazil's largest marketplace-of-marketplaces multiplied its monthly orders more than nine times. This is the story of what that growth cost — and where it strains next.
Scroll to begin ↓Act I · Scale
First, establish the fact:
the growth was real.
Before judging whether growth was healthy, prove that it happened. Over the twenty complete months from January 2017 to August 2018, Olist went from a curiosity to a machine — 800 orders in the first month, 6,512 in the last, with a Black Friday record of 7,544 in between.
Orders accelerated through 2017 — and never fell back
Monthly orders, Jan 2017 – Aug 2018 · partial months (Sep–Oct 2018) excluded
View the data
Revenue tracked volume almost exactly
Monthly payment value (R$), Jan 2017 – Aug 2018
View the data
…while the average order barely moved
Average order value (R$), axis from zero · range R$147–174
View the data
Act II · Sources
The growth has an address —
and a habit.
Totals hide geography. Break the same twenty months apart and the growth stops looking national: it is a story about the Southeast, about a handful of product categories, and about customers who almost never come back.
Three states carry 63% of all payment value
Payment value by customer state · darker = more · hover any state for its full scorecard
View the data
Ten categories explain 62% of revenue
Payment value by product category, top 10 of 74 · Jan 2017 – Aug 2018
View the data
Four in five reais arrive by credit card
Share of payment value by primary payment method
View the data
96.9% of customers bought exactly once
Each dot is 1% of Olist's 95,774 customers, Jan 2017 – Aug 2018
3.1%
of customers ever placed a second order. Repeat buyers contributed just 6.4% of all orders — meaning nearly every month of record growth had to be re-purchased from scratch with new-customer acquisition.
Act III · Strain
Then the growth engine
started to smoke.
Healthy growth means more orders without losing delivery reliability or customer trust. Read the growth curve against its two operational shadows — the late-delivery rate and the review score — and the story changes. The three charts below share one time axis; scroll and watch the same months get re-read three ways.
2017
Through 2017, delivery kept pace
Orders grew month after month while the late-delivery rate stayed between 3% and 9% and reviews held near 4 stars. The system was absorbing growth.
Nov 2017
Black Friday sets a record
7,544 orders in a single month — 9.4× the January level. The spike itself was absorbed. But volume never returned to its old baseline, and the fulfilment network now had to run at record load permanently.
Feb – Mar 2018
The bill arrives
Average delivery stretches to 16.5 days. In March, 19% of deliveries arrive late — one in five — and the average review score bottoms out at 3.75, its lowest point in the entire dataset. Growth didn't slow; trust did.
Apr – Aug 2018
Recovery — at a price
By August, late deliveries fall back to 6.2%, delivery time to 7.3 days, and reviews recover to 4.26. But look at the top chart: orders plateau near 6–7k. The recovery is real — and so is the capacity ceiling it reveals.
Act IV · Diagnosis
The bottlenecks are not everywhere.
They have names.
Averages spread blame evenly; the data does not. The strain of Act III concentrates in specific states, specific categories, and one side of the marketplace almost nobody looks at — where the sellers are.
A tale of two states
São Paulo Growth engine
- Payment value
- R$6.0M 37% of total
- Late deliveries
- 4.5%
- Avg delivery
- 8.3 days
- Avg review
- 4.17 ★
Rio de Janeiro High-value bottleneck
- Payment value
- R$2.1M 13% of total — the #2 market
- Late deliveries
- 12.1%
- Avg delivery
- 14.9 days
- Avg review
- 3.88 ★
Same country, same platform, same period. Olist's second-largest market runs nearly 3× the late-delivery rate of its first.
The biggest categories are not the best-loved ones
Top 18 categories · x = payment value · y = avg review score · bubble = orders · reference lines = top-18 averages
View the data
Seven of every ten orders ship from a São Paulo seller
Late-delivery rate by seller state (states with ≥ 100 orders) · bar labels show order volume
View the data
Act V · Outlook
If nothing changes, the strain
scales with the sales.
Forecasts here are directional signals, not promises. But the direction is unambiguous: on trend, Olist enters the next Black Friday at a permanently higher base load — with the same network that buckled at the last one.
On trend: ~7,500 orders a month by December 2018
Solid = observed · dashed = linear projection of the trailing 12 months — a directional sketch; the formal exponential-smoothing forecast lives in Dashboard 5 below
View the data
Where growth risk should be managed first
States ranked by a composite priority score: 0.4×payment (R$M) + 3×late rate + 2×low-review rate + freight share — value at risk × operational risk
What Olist should do — in order
-
Fix the Rio route
The #2 market runs a 12.1% late rate and a 3.88★ average. Regional fulfilment capacity or carrier SLAs for RJ protect more revenue per real spent than anything else on this list.
-
Put bulky home categories on a freight plan
Bed, Bath & Table and Furniture & Decor pair top-five revenue with bottom-tier satisfaction. Weight-based carrier selection and honest delivery estimates would attack the 16.5% low-review rate at its cause.
-
Earn the second order
With a 3.1% repeat rate, retention is the cheapest growth Olist isn't buying. Every point of repeat purchase is a point of growth that doesn't need to be acquired — and reliable delivery is the strongest known driver of that second order.
Olist's growth was real. Whether it is sustainable depends on fulfilment keeping pace in the exact states and categories where the value sits.
Growth can be bought. Health has to be built.
About this project
The data
The Olist Brazilian E-Commerce dataset (Kaggle): 99,441 real, anonymized orders placed between 2016 and 2018 across nine relational tables — orders, items, payments, reviews, customers, sellers, products and geolocation. Analysis covers the twenty complete months Jan 2017 – Aug 2018; partial months are excluded and noted wherever it matters.
The method
Raw tables were joined into an order-level base and monthly / state / category health tables in Python (pandas). Interactive dashboards were built in Tableau and published to Tableau Public; the narrative charts on this page are hand-built SVG driven by the same prepared tables, so both layers always agree.
The course
Final project for Data Visualization at Johns Hopkins University, Summer 2026, by Rongze Gao. Every chart follows the course toolkit: conclusion-style titles, position over angle, one axis per chart, annotated extremes, and color that always means the same thing — scale, healthy, warning, risk.