Strategic Coffee Shop Sales Performance Dashboard

This Power BI dashboard transforms raw coffee shop sales data into strategic insights, helping stakeholders pinpoint opportunities to enhance customer retention and drive profitability.

Project Documentation

1. Goal

It’s a well-known fact that acquiring new customers is far more costly than retaining existing ones. Coffee shops, in particular, rely on loyal patrons for steady revenue, so this project delivers a Power BI dashboard that transforms raw sales data into strategic insights, helping stakeholders pinpoint opportunities to enhance customer retention and drive profitability.

2. Process

A critical early phase involved developing a thorough understanding of the sales data and ensuring accurate metric calculations. We began by ingesting the Excel sales file into Power BI, creating a robust semantic layer and cleansing the data. Next, individual worksheets were crafted with targeted visuals—daily heatmaps for temporal trends, KPI cards for top-line metrics, bar and line charts for breakdowns by store and category, and decomposition trees for hierarchical analysis. These worksheets were then synthesized into a single, interactive dashboard featuring seamless cross-filtering. The final phase included rigorous validation of data accuracy, UI/UX refinements based on stakeholder feedback.

3. Insights

  1. Daily revenue patterns: Peaks between 8 AM and 10 AM, dips late morning to early afternoon, with a small mid‐afternoon rise before tapering off. Align staff and promotions accordingly to support the morning surge and counteract the afternoon slowdown.
  2. Category contributions: Coffee-based beverages consistently account for the largest share of revenue, highlighting their role as key sales drivers, while tea emerges as a strong challenger category.
  3. Top-selling products: Barista Espresso leads, followed by Brewed Chai Tea and Hot Chocolate. Gourmet Brewed Coffee’s position among the top four confirms that customers value classic favorites as well as richer, specialty brews.
  4. Location rankings: Hell’s Kitchen consistently ranked No. 1 in sales from January to June 2023, showing strong customer loyalty despite growing competition. Austria and Lower Manhattan swapped second and third places, but neither threatened the top spot.

Table of Contents

1. Project Summary

This document outlines the "Strategic Coffee Shop Sales Performance Dashboard," a Power BI-driven analytical solution designed to deliver comprehensive insights into coffee shop sales. Leveraging an Excel sales dataset, the dashboard integrates sophisticated visualizations, DAX-driven KPIs, and advanced interactive filtering. It serves as a pivotal tool for business users to explore sales trends, identify critical revenue drivers, and make strategically sound, data-backed decisions.

2. Scope & Project Environment

Scope:

  • Single-page interactive dashboard covering total sales, temporal trends, product/category contributions, and store‐level performance.

Project Environment:

  • Business Intelligence Platform: Microsoft Power BI Desktop
  • Primary Data Source: Microsoft Excel (file: "coffee shop sales file.xlsx")
  • Key Technical Components:
    • Power Query for ETL (Extract, Transform, Load) processes.
    • DAX (Data Analysis Expressions) for complex calculations and custom measures.
    • Relational Data Modeling within Power BI.

3. Data Sources & Data Gathering

Data Source, Structure & Modeling Highlights:

  • Source: Excel file “coffee shop sales file.xlsx” containing every transaction.
  • Key Fields:
    • transaction_id, date & time – for unique records and time-series/peak-hour analysis
    • store_id & store_location – to segment by outlet
    • product_id, category, type & detail – for drill-downs from high-level category to specific item
    • unit_price & transaction_qty – to calculate revenue and volumes
  • Modeling Approach: Imported into Power BI with supporting date and product dimension tables.

4. Data Integrity & Metrics

Data Integrity Protocols

Initial data profiling was conducted during development. The dashboard assumes a good standard of source data quality; however, robust error handling in DAX measures can mitigate minor inconsistencies.

Core Calculated Metrics (DAX-driven)

  • Total Sales:
    Total Sales = SUM(Transactions[Sales])
  • Date Table:
    Date Table = CALENDAR(MIN(Transactions[transaction_date]), MAX(Transactions[transaction_date]))
  • MoM Growth & Diff Sales:
    MOM Growth & Diff Sales = VAR month_diff = [CM Sales] - [PM Sales] VAR mom = month_diff / [PM Sales] VAR _sign = IF(month_diff > 0, "+", "") VAR _sign_trend = IF(month_diff > 0, "▲", "▼") RETURN _sign_trend & " " & _sign & FORMAT(mom, "#0.0%") & " | " & _sign & FORMAT(month_diff / 1000, "0.0k") & " vs LM"
  • new MoM Label:
    new MoM Label = VAR month_diff = [CM Sales] - [PM Sales] VAR mom = month_diff / [PM Sales] VAR _sign = IF(month_diff > 0, "+", "") VAR _sign_trend = IF(month_diff > 0, "▲", "▼") RETURN _sign_trend & " " & _sign & FORMAT(mom, "#0.0%")

5. Worksheet Components

Filter Panel

Purpose: Provides a single control to filter all visuals by a Month–Year selector, enabling viewers to focus on any period of interest.

  • Source Column: Month Year (e.g., “Jun 2025”)
  • Control Type: Dropdown or slicer with search enabled.
  • Behavior:
    • Selecting a month instantly updates every chart, KPI card, and matrix across the dashboard.
    • Supports multi-select for comparative analysis across multiple months.
Filter Panel showing Month Year slicer

Interactive Calendar Visualization

Interactive Calendar Visualization

Purpose: Granular day-by-day view of sales to spot daily patterns at a glance.

  • Key Setup:
  • Date-Table Columns:
    • DayName = FORMAT('Date'[Date], "DDD")
    • WeekNumber = WEEKNUM('Date'[Date], 2)
    • DayNumber = FORMAT('Date'[Date], "D")
    • WeekdaySortKey = WEEKDAY('Date'[Date], 2)
  • Matrix Heat-Map:
    • Rows: WeekNumber
    • Columns: DayName (sorted by WeekdaySortKey)
    • Values: DayNumber (for calendar grid) with conditional background by Total Sales (gradient from low→high)
  • Tooltips: Tooltip page built with cards showing “Date”, “Total Sales”, “Total Orders”, “Total Quantity Sold” plus MoM change measure. Assigned as the matrix’s tooltip so hovering any cell shows all three KPIs.

Strategic Key Performance Indicators (KPIs)

Strategic Key Performance Indicators (KPIs)

Purpose: Immediate, high-level overview of critical business health metrics.

Examples: Total Sales, Total Quantity Sold, Total Orders.

Features:

  • KPI Cards with MoM Comparison:
    • MTD Value vs. Last Month MTD via CM Sales & PM Sales measures
    • MoM Indicator (▲/▼ + % + Δ in “k”) using a single formatted measure
  • Daily Trend-Line Charts:
    • One mini-chart per KPI showing day-by-day values
    • Dynamic chart titles displaying current value + MoM % change

Sales Trend Over Time

Sales Trend Over Time

Purpose: Visualize daily sales fluctuations and quickly identify days performing above or below average.

Chart Setup:

  • Type: Column chart
  • X-Axis: transaction_date
  • Y-Axis: Total Sales

Key Features:

  • Constant Line – Daily Average:
    Daily Avg Sales = AVERAGEX( ALLSELECTED(Transactions[transaction_date]), [Total Sales] )
    Plotted as a constant horizontal line for quick baseline comparison.
  • Conditional Bar Coloring:
    Colour For Bars = IF( [Total Sales] > [Daily Avg Sales], "Above Average", "Below Average" )
    Applied as a rule in the chart’s color settings so bars above the average line stand out from those below.

Sales by Weekday/Time Period Analysis

Sales by Weekday/Time Period Analysis

Purpose: Reveal recurring sales peaks and troughs across days of the week and hours of the day for staffing and promotion planning.

Visual: Matrix Heat-Map

  • Rows: Transaction Hour (R)
  • Columns: Weekday Name (Mon–Sun)
  • Values: Total Sales, colored via a gradient scale (e.g. darkest for highest, lightest for lowest)

Key Features:

  • Gradient Color-Scale: Conditional formatting on the matrix cells (e.g. #6C260E → #D98D6C) to make high-volume slots pop.
  • Custom Tooltips: On hover, show a mini tooltip page containing:
    • R (hour)
    • Weekday
    • Total Sales
    • Total Orders
    • Total Quantity Sold
  • Drill-through Bar Charts:
    • Horizontal Bar by Hour: Sorted by sales volume, gradient-colored, no axes or grid clutter.
    • Vertical Bar by Weekday: Same styling, with data labels hidden behind matching font color for a clean look.

Store Location Performance Analysis

Store Location Performance Analysis

Purpose: Compare and benchmark sales across different locations.

Visual: Clustered bar chart

  • Custom Location Labels:
    Label for Store Location = SELECTEDVALUE(Transactions[store_location]) & " | " & FORMAT([Total Sales]/1000, "$0.00k")
    (e.g. “Hell’s Kitchen | $40.30k” above each bar via a zero-value “PlaceHolder” series.)
  • MoM Growth & Diff Sales: Reuse the “MOM Growth & Diff Sales” logic (▲/▼ + % + Δ) as the bar’s secondary data label. (e.g. ▲+21.7% | +7.2k vs LM)

Product & Category Sales Contribution

Product & Category Sales Contribution

Purpose: Reveal top revenue drivers for stocking and marketing focus.

Visuals: Two clustered bar charts (by Product Type and by Product Category)

  • Custom Labels:
    • Product Type:
      SELECTEDVALUE(...) & " | " & FORMAT([Total Sales]/1000, "$0.00k")
    • Product Category: similar measure
    • MoM % Change:
      new MoM Label = VAR diff = [CM Sales] - [PM Sales] VAR mom = diff / [PM Sales] RETURN IF(diff > 0, "▲ ", "▼ ") & FORMAT(mom, "#0.0%")
    • Placeholder Series: Zero-value bar to host these labels above each bar.

Sales by Weekday / Weekend

Sales by Weekday / Weekend

Purpose: Compare sales share on weekdays vs. weekends to tailor staffing and promotions.

Typical Visual: Donut chart

Key Features:

  • Weekday/Weekend Column (in Date table):
    Weekday / Weekend = IF( 'Date Table'[DayName] = "Sat" || 'Date Table'[DayName] = "Sun", "Weekend", "Weekday" )
  • Donut Setup:
    • Legend: Weekday/Weekend
    • Values: Total Sales
  • Formatting:
    • Title: “Sales by Weekday / Weekend”
    • Detail Labels: Category name + percentage
    • Slice Colors:
      • Weekday ⇒ #VA6239
      • Weekend ⇒ #95441F
    • Center Card: Total Sales card overlaid in the donut’s hole

6. Dashboard Architecture

Canvas & Color Palette

  • Canvas Size: 1400 px wide × 850 px high
  • Shape: “E” layout—three horizontal bars plus left spine
  • Colors:
    • Background/spine: #402B1E
    • Charts/dividers & highlights: #B36541 & #73361C

Zones & Layout

  1. Top Bar (KPIs):
    • Four cards (Total Sales, Total Quantity Sold, Total Orders, and a Sales sparkline showing daily changes + MoM % change as title)
  2. Middle Bar (MoM Trends):
    • Sales trend over the period (e.g., line chart with daily values and MoM annotation)
  3. Bottom Bar (Details):
    • Three visuals side-by-side:
      • Store-level MoM growth bar
      • Sales by product
      • Sales by product category
      • Sales by days/hours
  4. Left Spine (Filters & Nav):
    • Collapsible pane containing: date slicer, sales calendar, sales by weekend/weekday, sales by store location

Interactivity

  • Cross-filtering between visuals
  • Dynamic titles & annotations
  • Contextual tooltips with drill-through capability

7. Insights

Weekend Brunch Hours Drive Peak Traffic

Sales consistently surge between 7 AM and 10 AM on Saturdays and Sundays, making weekend brunch the café’s single highest-volume period. This pattern suggests that targeted “brunch specials”—such as limited‐time food bundles or drink pairings—could capitalize on the existing foot traffic surge and further increase average ticket value during these critical hours.

Coffee vs. Tea: The Unrivaled Category Leaders

Over the last six months, Coffee has maintained its leading share of total category revenue, followed by Tea in a distant but stable second. Together, these two categories contribute more than three‐quarters of all sales, with Bakery and Drinking Chocolate relegated to distant third and fourth. Because the Coffee vs. Tea ranking never wavers, strategic efforts (promotions, menu innovation, inventory prioritization) should focus on deeper differentiation within these two heavy‐hitting categories rather than attempting to elevate underperforming categories.

Top-Tier Products Reveal Customer Preferences

At the individual‐item level, Barista Espresso occupies the top spot, closely trailed by Brewed Chai Tea and Hot Chocolate; Gourmet Brewed Coffee rounds out the top four. The fact that these four items remain solidly in front—while the next‐ranked products sit markedly lower—confirms that classic espresso and tea offerings command the bulk of purchase decisions. Promotional calendars should therefore lean on these four best sellers (e.g., “Espresso Happy Hour” or “Chai Tea Latte Mondays”) to maximize incremental sales without diluting marketing spend across lower‐volume SKUs.

Stable Product Rankings with June 2023 Inflection

From January through May 2023, the top six products held their exact positions month over month. In June, two swaps occurred: Gourmet Brewed Coffee moved from fourth to third (overtaking Hot Chocolate), and Brewed Herbal Tea ascended from sixth to fifth (ahead of Brewed Black Tea). These June shifts—though isolated—signal that customer interest in premium/seasonal variants can quickly alter long‐standing ranking patterns. Monitoring promotional activity or seasonal menu changes around late spring may help explain these rank inversions and guide future assortment decisions.

Hell’s Kitchen’s Unshakeable Store-Location Lead

Hell’s Kitchen has been No. 1 in sales for all six months, never relinquishing its crown despite narrowing margins against Austria and Lower Manhattan (which periodically exchanged second and third place). This enduring top‐spot performance underscores Hell’s Kitchen’s strong local loyalty. By contrast, the flux between Austria and Lower Manhattan indicates that those locations—while close in revenue—have not established the same sustained customer base. Any expansion of marketing spend or localized promotions should protect Hell’s Kitchen’s position (e.g., loyalty‐member perks) while aiming to stabilize revenue for the mid-ranked locations.

Lifecycle Phases: Launch → Growth → Shakeout

Monthly sales volumes reveal a textbook enterprise life-cycle over the January–June 2023 window:

  • Launch (Jan–Feb): Modest, incremental revenue growth as awareness builds.
  • Growth (Mar–May): Significant month-over-month gains indicate accelerating customer adoption, likely driven by positive word-of-mouth or effective springtime promotions.
  • Shakeout (Jun): A slight revenue dip in June suggests increased market saturation or competitive pressure. To counteract this June slowdown and reignite growth, initiatives such as a mid-summer menu refresh, limited-edition beverage rollouts, or loyalty incentives could prompt another upward curve.

Consistent Intra-Month Revenue Dips

Across every month (except February’s 28-day cycle), sales fall below average during both the first seven days and the final three days. This symmetric pattern aligns with typical pay-cycle behavior: customers exhaust budgets at month-end then reallocate spending early in the following month. To smooth revenue, strategic “first-week” promotions—such as a small discount on brewed coffee—or “last-week” incentives (e.g., buy-one-get-one on pastry items) could mitigate the mid-month bulge and prevent abrupt troughs at period boundaries.

8. Key Skills & Tools

Power BI Data Modeling
Power Query (ETL)
DAX Calculations
Interactive Visualizations
Data Validation & QA
Business Insights

9. Project Assets & Downloads

For full technical documentation and implementation details, all queries, measures, and the dataset are hosted in a GitHub repository with detailed README files and inline comments:

View Repository

Get in Touch

Thank you for exploring my Strategic Coffee Shop Sales Performance Dashboard project. Please reach out for collaborations, further discussions, or implementation details.