Power BI.
Retail reporting examples built around the questions leaders actually ask.
Multi-store performance dashboard
The problem
A chain of 120+ stores across eight districts had performance data but no single view of it. Total sales were flat at a 0.20% comp, which tells leadership almost nothing; the question is which stores are driving that and why. Store-level profit, traffic, conversion, and occupancy costs lived in separate reports, so identifying an underperforming location meant pulling several files and reconciling them by hand.
The approach
Built a single-page executive view with a KPI panel (sales, comp, transactions, traffic, AVT, conversion, UPT), ranked top and bottom ten stores by profit, and a store-level profit and loss bar chart across the full fleet. Cross-filtering slicers for quarter, region, district, store type, and sales volume tier let a district manager isolate their own stores without a separate report. Drill-through pages let you select any store in the top or bottom ten and see its profit alongside store type, average units on hand, and annual rent.
Sole contributor – built the data model, all measures, and the drill-through pages.

What it showed
The top ten stores generated $9.3M in profit while the bottom ten lost $3.4M — a $12.7M swing inside a fleet posting a roughly flat comp. The drill-through explains most of it: the bottom ten skew heavily toward Major Metro locations carrying $2.9M+ in annual rent, while several profitable College-format stores run on under $500K. The problem in those locations isn’t selling; it’s occupancy cost against the volume the format can support.
Profit by sales volume tier also runs counter to intuition; the lowest-volume tier contributes more total profit than the flagship tier, which is worth pairing with store counts before drawing a conclusion.
Markdown sell-through and weeks of supply
The problem
Markdown inventory is capital sitting in a warehouse, and a single national sell-through figure hides where it’s actually moving. A category clearing well overall can be badly stuck in two distribution centres, and by the time that surfaces in a monthly report, the season is over and the markdown has to be taken deeper.
The approach
Built a weekly-grain report across five distribution centres, two divisions, and eight categories, calculating markdown sell-through percentage and weeks of supply from units on hand against units sold. Reporting weekly rather than monthly keeps the view close enough to act on, and holding warehouse, division, and category on the same grain makes it possible to isolate whether a problem is regional, categorical, or specific to one combination.
Created with an artificial data source.

What it showed
Across 1.65M units, markdown sell-through ran 27.7% at 3.61 weeks of supply — but the spread underneath that is wide. Calgary cleared 33.0% at 3.03 weeks while Montreal managed 25.5% at 3.92, a difference of nearly a full week of supply on comparable inventory. By category, fleece cleared fastest at 34.5% and hanging apparel slowest at 23.7% with 4.22 weeks of supply.
The weekly view is where it gets useful. Vancouver’s hanging apparel hit 8.3% sell-through in a single week, sitting on twelve weeks of supply, while the same category in Montreal cleared 78.1% that week. That’s a distribution question, not a markdown-depth question, and a monthly average would have buried it entirely.

On Pace — hourly sales goal tracker
The problem
Hourly sales goals in most stores are set by dividing the day’s target by the number of hours open. That spreads the goal evenly across a day that is not even — a Saturday afternoon and a Tuesday at open carry the same number, so the team is chasing a goal that doesn’t match the floor in front of them. Building the sheet was also manual: I spent years hand-typing hourly goals into Excel every week, with eleven chained formulas per day tab referencing the cell before it across seven sheets.
The approach
Built in Power BI on a synthetic dataset modelled on a $5M store, with the goal logic written natively in DAX rather than typed into cells. Selecting a week loads that week’s daily forecast automatically, and each day’s goal is allocated hour by hour using the same day’s hourly pattern from last year, so peak hours carry more of the target. The cumulative hourly goal — eleven chained Excel formulas in the old version — collapses to a single measure. Conditional formatting highlights the day’s highest-volume hour so the team knows which hour matters most, and each day gets a printable sheet with hourly and cumulative goals plus blank columns for writing in actuals.
The piece I care most about is the per-day what-if adjustment. Head office can’t see a school PD day or a mall event; the store can miss Monday by $2,200 and a manager types it into Tuesday’s adjustment box, every goal, sheet and total recalculates instantly. Published via Power BI’s publish-to-web with interactions restricted to the slicers and adjustment boxes, so viewers can use the tool without breaking the layout.
Sole contributor: built the data model, all DAX measures, the what-if parameters, and the report layout.


What it showed
Allocating by last year’s hourly pattern produces goals that look nothing like an even split. A weekday morning hour and the late-afternoon peak can differ by more than double, which means the even-split method was simultaneously handing easy mornings an unreachable number and letting the store’s most important hour pass with a target well below what it should carry. Highlighting that hour is the cheapest intervention in the whole report — it costs nothing and tells the team exactly where to concentrate.
The adjustment feature changes who owns the week. Instead of a goal arriving from head office and sitting fixed while the gap widens, a manager can absorb a miss on Monday and redistribute it across the days still ahead.
Synthetic dataset modelled on a $5M store