How to Measure Your Business the Amazon Way

Anastasiya Kuznetsova
18 min read5 days ago

Collaborative article between Dmitry Anoshin and BI Bites đŸȘ. Subscribe to our newsletter so you won’t miss any cool stuff!

Introduction

Amazon is known for its intense data-driven culture, and one of its secret weapons is the Weekly Business Review (WBR). Imagine the entire leadership team huddled every week, poring over a ton of metrics — that’s exactly what happens at Amazon. In fact, Amazon’s executives review 400–500 metrics in a single 60-minute WBR meeting, and they’ve been doing this every week since the early 2000s.

Why go to such lengths? Because WBRs help leaders catch trends, spot issues, and make informed decisions faster than you can say “Alexa.” It’s not just another meeting; it’s a powerful habit that keeps the company focused, accountable, and nimble in decision-making. If that sounds daunting, don’t worry — we’re going to break down how you can apply a WBR framework to your business (with fewer than 500 metrics, we promise 😉).

WBR Explained: What Exactly Is a Weekly Business Review?

A Weekly Business Review (WBR) is a regular, structured review of your business’s performance that happens every week (yes, weekly — consistency is key!). In a WBR, you and your team look at a set of key metrics to understand how the business is doing and why. Amazon popularized this practice as a cornerstone of its management process. Every WBR meeting at Amazon follows a consistent format: a huge deck of charts and numbers covering everything from customer experience to sales to operations, presented in the same layout week after week (How Amazon Uses Input Metrics).

This routine might sound rigid, but it’s incredibly effective. By keeping the format identical each week, Amazon’s leaders can quickly spot anomalies or trends — it’s like flipping through a familiar photo album and instantly noticing what changed since last time.

So why does Amazon take WBRs so seriously? Because weekly reviews drive action. They answer three big questions:

What did customers experience last week? How did the business perform? Are we on track to hit our goals?

In practice, that means the WBR surfaces unfiltered facts about what’s happening in the business and where it’s heading. If something’s off — say, a spike in customer complaints or a dip in sales — it gets noticed immediately. Discussion then focuses on why it happened and what to do about it. Think of the WBR as an early-warning system and a progress report rolled into one. Done right, it highlights problems andopportunities, so you can fix issues or double down on a success long before they grow big. No wonder Amazon’s teams treat WBR prep as sacred — it’s their ritual for staying tuned in to the business. And the result? More data-driven decisions and fewer “I didn’t see that coming” surprises 😅.

Let’s check out a real example of WBR from Amazon where Dmitry spent 5 years

Yes, it was done in Excel and probably still running by Excel and my teams. It took 1–2 days to prepare WBR across all team in the org. Automation with Tableau was a game changer. Any automation is game changer.

Input vs. Output Metrics: Focusing on What You Can Control

One of the secret sauces in Amazon’s WBR is how they distinguish between output metrics and input metrics. So, what’s the difference? In simple terms: output metricsare the results (the outcomes you want), and input metrics are the drivers (the things you do to influence those outcome. Amazon loves input metrics — and for good reason.

  • Output Metrics are like the scoreboard. They tell you how you’re doing, but you can’t change them directly. For example, in business this could be total revenue, number of customers, or profit — or even your website’s conversion rate. In life, an output metric might be your weight or exam score. These metrics are “lagging indicators” — they lag behind the work that causes them. If your sales or conversion rate dropped last week, that’s useful to know, but it’s just the result. Yelling “increase!” at an output metric usually doesn’t help (if only it were that easy! 😜).
  • Input Metrics are like the levers and dials you can turn to affect the outputs. They are controllable actions or processes that drive those result. Think of things like number of new products added to your catalog, website loading speed, marketing spend, customer service response time, etc. These are typically “leading indicators”– they lead to outcomes. The beauty of input metrics is that when one is off track, you know where to intervene. They give you a clear idea of what to fix or improve. For instance, if “website uptime” (an input) fell, you can bet it’s impacting “orders placed” (an output), and you know exactly which tech team to poke.

Amazon’s philosophy is to obsess over input metrics. Why? Because focusing on controllable inputs is how you eventually get the outputs you want. A famous anecdote drives this home: Jeff Bezos once met a CEO who was giddy that his company’s stock price went up by 30 cents that day — a classic output metric. Bezos basically shrugged and noted the CEO had done nothing to cause that stock rise.

The lesson? Don’t pat yourself on the back for outputs you don’t directly control. Instead, zero in on the inputs you cancontrol (like improving customer experience, product selection, or co which in turn drive those outputs. It’s like trying to lose weight — you can’t just tell the scale to change (output), but you can exercise and eat right (inputs) and let those efforts reflect on the scale over time. By managing the right inputs, Amazon ensures the outputs (revenue, market share, customer satisfaction, you name it) take care of themselves. As one Amazon veteran put it, output metrics are important, but input metrics are what give you “clarity on the levers you can pull” to improve those outcome. In short: control the inputs, and the outputs will follow.

eCommerce Example: WBR in Action at “Surfalytics” đŸ„â€â™‚ïž

Let’s bring this to life with a practical example. Meet Surfalytics,

https://shop.surfalytics.com/

our real eCommerce store that sells surfing gear and beach accessories. How can Surfalytics use a WBR and input/output metrics to ride the wave to success? 🌊

Imagine every Monday morning, the Surfalytics team holds a Weekly Business Review meeting. They look at a simple one-page report of last week’s key stats. Here’s how they might break it down and use those metrics:

  • Conversion Rate (Output) — Last week, Surfalytics’ conversion rate (the percentage of visitors who bought something) was, say, 2.5%, down from 3% the week before. That’s a red flag 📉. In the WBR, the team asks “Why did it drop?” They dive into input metrics behind conversion. It turns out the website load time increased by 1 second last week (perhaps due to a fancy new video on the homepage), and a couple of popular products were out of stock. Slower pages and missing products likely frustrated some shoppers, causing fewer checkouts. Aha! Now the team has actionable steps: optimize the site speed and urgently restock those popular items. By tackling these inputs, they expect conversion rate to bounce back rather than just hoping numbers magically improve.
  • Traffic (Input) — Next, they review website traffic. Good news: traffic is up 15% week-over-week, thanks to a new Google Ads campaign 🎉. Traffic is an input metric because Surfalytics can control it (by adjusting ad spend, SEO, content marketing, etc.). Higher traffic usually leads to higher sales if other inputs (like site experience and product availability) are solid. The team notes that the campaign worked well. If traffic had been down, that would have signaled the need for action (maybe the marketing team paused ads or some referral source dried up, which they’d address for next week). By tracking it weekly, they’re never in the dark about their customer visits.
  • Product Availability (Input) — Surfalytics tracks the in-stock rate of its top products. Last week, it was only 80%, meaning 20% of high-demand items were unavailable. That’s likely a big factor in lost sales — you can’t sell what you don’t have, and customers probably went “out of stock
 ugh” and left. In the WBR, this metric prompts a plan: the inventory team will work with suppliers to raise that in-stock rate to 95%+. Product availability is a controllable input — the team can introduce better inventory management or reorder faster. Improving this input will directly boost output metrics like sales and customer satisfaction (fewer folks encountering out-of-stock messages). Lesson learned: always keep your best-sellers on the (virtual) shelves!
  • Operational Efficiency (Input) — The Surfalytics crew also checks an operational metric: say, order fulfillment time (how fast orders are shipped out). They see it slipped from an average of 1 day to 2 days last week. Maybe the warehouse was understaffed or a process snag slowed things down. While customers haven’t started screaming yet, a slower ship time could hurt the customer satisfactionscore or lead to higher refund requests (output metrics) if it continues. Because WBR highlighted this trend early, the operations manager can act now — perhaps put an extra team on duty or streamline packing for the coming week. By tightening this up (input), they keep the customer experience strong and prevent future issues. In essence, the WBR helps them dive deep into each part of the business, from web analytics to supply chain, and ensures every team knows where to focus their efforts before small problems become big ones.

Through this weekly routine, Surfalytics creates a continuous improvement loop. Each week they celebrate wins (đŸ€ high-five for that traffic boost) and confront challenges head-on. Over time, this leads to better and better performance. The marketing folks see how their campaigns translate to sales, the product team sees how selection and stock levels matter, and the operations folks see the impact of speedy delivery — it’s allconnected. The WBR turns vague goals like “increase revenue” into specific action plans: increase revenue -> improve conversion -> speed up site, keep products in stock, etc. It’s business analytics made actionable and even a bit fun (with coffee and donuts in the meeting, of course!).

WBR in Tableau

Let’s create a WBR dashboard in Tableau! We’ll use the Sample Superstore Dataset for this project. If you prefer, you can simply download the workbook and reverse-engineer it. The final solution is available here.

To save time on dashboard layout, I’ll be using my free Dashboard Template. You can download it and start building your charts right away.

I recommend using the 3x2x1 layout and completely deleting the left column for a cleaner design.

Weekly Line Chart

This is Line Chart that shows Weekly Sales values, its Previous Period Sales (in this case previous Week) and its’ Previous Year Sales.

  1. Build the Chart Axes

1.1 Drag Order Date to the Columns shelf. Change its granularity to Week by clicking on the dropdown menu for Order Date and selecting Week.

1.2 Add Sales to the Rows shelf

2. Create Calculations

You will need calculated fields for:

  • Previous Week Sales. Let’s create a calculation called Sales Previous Period, because we’ll use it in Previous Monthly Sales as well.
//**Sales Previous Period**
LOOKUP(ZN(SUM([Sales])), -1)
//LOOKUP function shifts the focus from the current row to one row backward
  • Sales Previous Year Week. This one will be separate from monthly one because we’ll calculate not -1 row, but -52, meaning 52 weeks ago.
//**Sales Previous Year Week**
LOOKUP(ZN(SUM([Sales])), -52)
//LOOKUP function shifts the focus from the current row to 52 rows backward

3. Combine Measures on the chart

3.1 Drag Measure Values to the Rows shelf.

Filter by Measure Names to leave only Sales Previous Periodand Sales Previous Year Week

3.2 Create Dual axis between SUM(Sales) and Measure Values by right-click on Measure values → Dual axis. Synchronize axis by right-clicking on on the them → Synchronize axes.

4. Filter the chart

One of the tricks here is to filter for the last 6 weeks while still keeping all the LOOKUPcalculations visible. Due to the order of operations, we can’t use the usual dimension date filter. Instead, we need to use a Table Calculation filter. For more details, refer to Tableau's Order of Operations.

This is why we create a filter calculation:

//**Filter Rank date (week)**
RANK(MAX(DATETRUNC('week',[Order Date])))
//Applies RANK to dates in the chart

Then, use this calculation to keep only the last 6 ranked weeks.

5. Customize the Marks

For SUM(Sales) set up blue color. For Measure Names set up light grey for Sales Previous Period and dark grey for Sales Previous Year Week. Choose dashed line type for them.

6. Formatting

  • Hide right axis by right click → Un-click Show header.
  • Remove date axis title.
  • Remove Column and Row dividers. Remove Grid Lines.
  • Use grey for axes text.

More about Formatting in Tableau: https://help.tableau.com/current/pro/desktop/en-us/formatting_worksheet.htm

  • Add legend via the Sheet title – fact –previous week — — previous year

Monthly Line Chart

This is Line Chart that shows Monthly Sales values, its Previous Period Sales (in this case previous Month) and its’ Previous Year Sales.

For a monthly line chart, the logic is the same.

The only differences are:

  • Sales Previous Year Month: This calculation helps find the sales from the same month in the previous year.
//**Sales Previous Year Month**
LOOKUP(ZN(SUM([Sales])), -12)
//LOOKUP function shifts the focus from the current row to 12 rows backward (yar ago)
  • Filtering the chart to display only the last 6 months.
//**Filter Rank date (month)**
RANK(MAX(DATETRUNC('month',[Order Date])))
//Applies RANK to dates in the chart

Now you can place both of these charts on the dashboard.

Weekly KPI Card

This is KPI card that shows Last Week Sales values, its Period over Period % change (in this case % WoW) and Year over Year % Change.

This is not an essential part for the WBR but it can be useful to look at the charts together with KPI cards.

  1. Build the KPI structure

1.1 Drag Order Date to the Columns shelf. Change its granularity to Week by clicking on the dropdown menu for Order Date and selecting Week. Make it Discrete.

1.2 Add Sales and WEEK(Order Date) (you can copy it by Cmd/Ctrl+Drag the pill from 1.1) to the Text in the Marksshelf.

Go to the text and add text ‘Sales’ on top of the SUM(Sales)

Apply formatting:

  • black color and size 22 for SUM(Sales)
  • black color and size 14 for ‘Sales’ text
  • grey color and size 10 for WEEK(Order Date)
  • Apply Custom Date Formatting to WEEK(Order Date): dd mmm. More about Custom Date Formats
  • left-align all text

At the end you’ll get something like that

2. Create Calculations for PoP

We’ll reuse some of the previously calculated fields, like Sales Previous Periodand Sales Previous Year Week

  • Firstly, let’s create the one to calculate % difference between periods — Sales % PoP.
//**Sales % PoP**
(ZN(SUM([Sales])) - [Sales Previous Period]) / [Sales Previous Period]
  • Now we need two more calculations to create ↑↓ % for the KPI card on the basis of Sales % PoP
//**Sales % Neg**
IIF([Sales % PoP] < 0,
'↓' + STR(ROUND([Sales % PoP]*100,1)) + '%','')
//Here we check if the % PoP was **negative** and if yes we add arrow down ↓ and % result.
//**Sales % Pos**
IIF([Sales % PoP] > 0,
'↑+' + STR(ROUND([Sales % PoP]*100,1)) + '%','')
//Here we check if the % PoP was **positive** and if yes we add arrow up ↑ and % result.

3. Add PoP to the KPI card

Now we can add them to the KPI card design. Just place Sales % Neg and Sales % Pos them in the to the Text in the Marks shelf.

Now the trick would be to apply formatting, Since the Sales % PoP ****can’t be both positive and negative at the same time, we’ll only see Sales % Neg OR Sales % Pos.

So in the text we color Sales % Neg in red-orange and Sales % Pos in blue-violet and add ‘WoW’ at the end.

4. Create Calculations for Week YoY

Now let’s create the rest of the calculations for the KPI card — YoY.

  • Firstly, let’s create the one to calculate % difference between years — Sales % WoW YoY
//**Sales % WoW YoY**
(ZN(SUM([Sales])) - [Sales Previous Year Week]) / [Sales Previous Year Week]
  • Now we need two more calculations to create ↑↓ % for the KPI card on the basis of Sales % WoW YoY
//**Sales % Neg WoW YoY**
IIF([Sales % WoW YoY] < 0,
'↓' + STR(ROUND([Sales % WoW YoY]*100,1)) + '%','')
//Here we check if the % YoY was **negative** and if yes we add arrow down ↓ and % result.
//**Sales % Pos WoW YoY**
IIF([Sales % WoW YoY] > 0,
'↑+' + STR(ROUND([Sales % WoW YoY]*100,1)) + '%','')
//Here we check if the % YoY was **positive** and if yes we add arrow up ↑ and % result.

5. Add YoY to the KPI card

Do the same as in the 3rd point by adding Sales % Neg WoW YoY and Sales % Pos WoW YoY to the text and formatting it.

You should get smth like that at the end.

6. Filter by last week

To filter by last week we can use Filter Rank date (week) calculation and leave only 1st one.

Monthly KPI Card

This is KPI card that shows Last Month Sales values, its Period over Period % change (in this case % MoM) and Year over Year % Change.

For the monthly card the logic is the same.

But instead of Sales % WoW YoYcalculate Sales % MoM YoY using Sales Previous Year Month

//**Sales % MoM YoY**
(ZN(SUM([Sales])) - [Sales Previous Year Month]) / [Sales Previous Year Month]

And based on it the same calculations for Sales % Neg MoM YoY and Sales % Pos MoM YoY

Filter by Filter Rank date (month) to leave only 1st rank.

Now you can add both KPI cards on top of the Line Charts

Table Weekly

This is the table that shows Weekly Sales values, its Period over Period % change (in this case % WoW) and Year over Year % Change.

  1. Drag Order Date to the Columns shelf. Change its granularity to Week by clicking on the dropdown menu for Order Date and selecting Week.
  2. Add Segment and Measure Names to Rows**.** Drag Measure Names to the Rows shelf.
  3. Add Measure Values to the Text in the Marks.
  4. Filter by Measure Names to leave only
  • SUM(Sales)
  • Sales % PoP
  • Sales % WoW YoY

All these calculations were created during the KPI card creations.

5. Change Marks type from Text to Square.

6. Add Measure Values to Color in the Marks.

7. Use Separate Legends for Measure Values.

8. Set up colors.

For Sales % PoP and Sales % WoW YoYchoose diverging colors, I use red orange ##FF7E79 and blue violet #7A81FF

For SUM(Sales) I also use diverging colors but put white #FFFFFF on both side so the cells with SUM(Sales) won’t be colored.

9. Filter by last 6 weeks

To filter by last week we can use Filter Rank date (week) calculation and leave 1-6 ranks.

10. Add worksheet title ‘WEEKLY’

Table Monthly

This is the table that shows Monthly Sales values, its Period over Period % change (in this case % MoM) and Year over Year % Change.

For Table Monthly the logic is the same.

But instead of Sales % WoW YoY use Sales % MoM YoY and Filter Rank date (month) for filtering.

I also removed Last unclosed month from it for use case purposes by using

//Filter Last unclosed month
DATETRUNC('month', [Order Date])<{MAX(DATETRUNC('month', [Order Date]))}

Hide Segment and Measure Names by right-click → unclick Show header.

Table MTD

This is the table that shows MTD — Month to Date Sales values, its Period over Period % change (in this case % MoM) and Year over Year % Change. MTD measures the performance of a metric from the start of the current month up to the present day.

For MTD Table we gonna need a bit more calculations.

  1. First let’s calculate current MTD Sales – sales from the start of the current month till the last available day. For example, if today is 20 November 2024, we’ll calculate the SUM of Sales from the 1st of November to 20th of November.
//**MTD Sales**
IIF(
[Order Date] <= {MAX([Order Date])}
AND
YEAR([Order Date]) = {MAX(YEAR([Order Date]))}
AND
MONTH([Order Date]) = MONTH({MAX([Order Date])}),
[Sales],
NULL)

2. Now Previous month MTD Sales – sales for the same period as current MTD but month ago. For example, if today is 20 November 2024, we’ll calculate the SUM of Sales from the 1st of October to 20th of October.

//**Previous month MTD Sales**
IIF(
[Order Date] <= DATEADD('month', -1, {MAX([Order Date])})
AND
YEAR([Order Date]) = YEAR(DATEADD('month', -1, {MAX([Order Date])}))
AND
MONTH([Order Date]) = MONTH(DATEADD('month', -1, {MAX([Order Date])})),
[Sales],
NULL)

3. Now we’ll calculate the % difference between 1. and 2. to get MTD Sales % PoP

//**MTD Sales % PoP**
(SUM([MTD Sales])-SUM([Previous month MTD Sales]))/
SUM([Previous month MTD Sales])

4. Next we’ll need Previous year MTD Sales – sales for the same period as current MTD but year ago. For example, if today is 20 November 2024, we’ll calculate the SUM of Sales from the 1st of November 2023 to 20th of November 2023.

//**Previous year MTD Sales**
IIF(
[Order Date] <= DATEADD('year', -1, {MAX([Order Date])})
AND
YEAR([Order Date]) = {MAX(YEAR([Order Date]))} - 1
AND
MONTH([Order Date]) = MONTH({MAX([Order Date])}),
[Sales],
NULL)

5. And YoY change between current MTD Sales and Previous year MTD Sales

//**MTD Sales % YoY**
(SUM([MTD Sales])-SUM([Previous year MTD Sales]))/
SUM([Previous year MTD Sales])

6. Create the table.

The logic of table creation is the similar to the Tables Weekly/Monthly.

6.1 But to columns put Last Month Date

//**Last Month Date**
{MAX(DATETRUNC('month',[Order Date]))}

6.2 Use MTD Sales, MTD Sales % PoP, MTD Sales % YoY as measures for Rows.

6.3 Hide Segment and Measure Names, apply formatting.

Table QTD

This is the table that shows QTD — Quarter to Date Sales values, its Period over Period % change (in this case % QoQ) and Year over Year % Change. QTD measures the performance of a metric from the start of the current quarter up to the present day.

All the calculations for QTD are similar to MTD but instead of ‘month’ use ‘quarter’.

You can check all of them in the Tableau workbook.

Table YTD

This is the table that shows YTD — Year to Date Sales values, its Period over Period % change (in this case % YoY). YTD measures the performance of a metric from the start of the current year up to the present day.

For the table instead of % PoP we’ll put MIN(NULL) to have the line but not to put values in it.

All the calculations are similar to MTD but use ‘year’ instead of ‘month’.

You can check all of them in the Tableau workbook.

Tables all Together

To create a full table we’ll use all the one we previously created and put them into the horizontal container one by one. Make 0 paddings and apply Fit → ‘Entire view’.

Between these tables you can put Blank objects with grey background 0 paddings and 1pt width.

Useful sources:

  1. Cedric Chin, Commoncog: “The Amazon Weekly Business Review (WBR)” — Describes Amazon’s WBR meeting cadence and its role in Amazon’s data-driven ( The Amazon Weekly Business Review (via Bezos’s Shadow) — Commoncog ).
  2. Paul Duvall, Mastering Weekly Business Reviews — Highlights how WBR is used as a mechanism to analyze trends and drive account (Mastering Weekly Business Reviews: Insights from Amazon’s Iconic WBR) (Mastering Weekly Business Reviews: Insights from Amazon’s Iconic WBR)†L56-L59】.
  3. Holistics.io Blog: “How Amazon Uses Input Metrics” — Explains Amazon’s focus on controllable input metrics vs. output metrics (How Amazon Uses Input Metrics) (Input Metrics for Business Growth: A Guide to Defining and Measuring Key Drivers).
  4. WorkingBackwards.com, “Input Metrics & Weekly Business Review” — Defines input and output metrics (controllable inputs that improve customer experience vs. lagging outputs (Input Metrics for Business Growth: A Guide to Defining and Measuring Key Drivers). Also outlines Amazon’s practice of reviewing metrics weekly, and how this fits into broader monthly/quarterly (Amazon Operating Cadence — Working Backwards).
  5. The North (thenorth.io): “Input metrics vs Output metrics” — Provides a simple overview of inputs (actions you control) vs outputs (results you want) (Input metrics vs Output metrics — The North) (Input metrics vs Output metrics — The North).

Sign up to discover human stories that deepen your understanding of the world.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Anastasiya Kuznetsova
Anastasiya Kuznetsova

Written by Anastasiya Kuznetsova

Write about Data Visualization, BI and Tableau. Love sociology, space and urban analytics.

No responses yet

Write a response