Case study · Data product · Dashboard design

Sales Analytics

A sales analytics dashboard for a regional leader running 10 convenience stores — not just charts, but an alert inbox and action tracker that turn what the data shows into what the team does next.

DASHBOARDDATA VISUALIZATIONB2BDESIGN SYSTEMAI-ASSISTED BUILD
RoleProduct Designer & Design-Engineer
Statusv1 — shipped
StackNext.js 16 · React 19 · SagUI · Tailwind v4 · Claude
Timeline2026

10

Stores compared against targets and each other

2 yrs

Of daily sales, seeded so every number is repeatable

6

Alert types, each with a recommended action

0

Custom UI components — built entirely on SagUI

Overview

A regional sales leader responsible for ten convenience stores needs to answer the same questions every morning: what's selling, what isn't, which stores are slipping, and what's about to run out.

Sales Analytics answers those questions and then closes the loop. It surfaces the highest and lowest sellers, compares stores, raises inventory and sales alerts, and tracks the actions taken on them — built on the same master data as my MDM platform and entirely on the SagUI design system.

01 · The problem

Most retail dashboards stop at reporting. They show a red number and leave the manager to work out why, decide what to do, and remember to follow up — in a spreadsheet, an email thread, or not at all.

A dashboard earns its place when it shortens the distance between noticing a problem and fixing it.

02 · Designing for the regional lead

The primary user is a regional sales leader who scans broadly, then drills into one store or one SKU. Every page follows that rhythm: summary first, comparison second, detail on demand.

01

What changed since yesterday?

The dashboard leads with KPI cards and period-over-period deltas, filterable by 7, 30, 90 or 365 days and by store.

02

Where do I look first?

Alerts are ranked by severity — critical, warning, info — so the inbox is a to-do list, not a log.

03

What should I do about it?

Every alert carries a recommended action the lead can accept, adjust, or assign in a couple of clicks.

Sales overview dashboard: store and date-range filters, KPI cards for revenue, units sold, gross margin and 30 open alerts, and a revenue trend comparing this period with the previous one
Summary first — KPIs with period-over-period deltas, then the trend behind them.

03 · Information architecture

Six sections, each answering one question, with drill-down detail pages for individual stores and products.

01

Dashboard

Headline KPIs, trends, and the most urgent alerts at a glance.

02

Products

Best and worst sellers, biggest movers, and a category treemap. Per-SKU detail.

03

Stores

Targets, ranking, and per-store detail with its own trends and alerts.

04

Inventory

Stock status across stores — out, low, healthy, over — with days of cover.

05

Alerts

An inbox with status (open → acknowledged → actioned → resolved) and suggested actions.

06

Actions

A tracker for reorders, transfers, markdowns, notifications and tasks — owner, due date, status.

Products page with Highest selling, Lowest selling, Biggest movers and Category map tabs over a table of products with revenue, units, change, margin, cover and an Act button
Products — best and worst sellers, with an action on every row.
Store comparison: ten progress-to-target gauges, with Lubbock Tech Park in red at 64% while the others sit between 70% and 75%
Stores — the declining store stands out against target at a glance.

04 · From alert to action

The core design work was the alert model. Each alert type maps to a likely response, so the system can pre-fill the action and the lead only has to confirm.

01

Stockout → Transfer, then reorder

Critical. If another store has surplus, suggests transferring units from it first; otherwise a vendor reorder.

02

Low stock → Reorder

Warning, escalating to critical under three days of cover. Pre-fills the quantity to refill to shelf maximum.

03

Overstock → Markdown

Info. Suggests a 20% markdown for two weeks, or a transfer to a store that's short.

04

Slow mover → Promotion

Warning. Suggests a 15% promotion and a shelf-placement review with the vendor.

05

Surge → Chain-wide order

Info. Suggests an order covering two weeks of the new demand so a hot product doesn't sell out.

06

Store decline → Notify

Warning. Asks the store manager for a recovery plan this week.

Alert inbox with Needs attention, Action taken and Resolved tabs, severity and type filters, and a table of critical stockout and low-stock alerts each with a Review button
The alert inbox — sorted by severity, filterable by type, one click to review.

05 · Data with a story

Real sales data wasn't available, so I wrote a seeded generator that builds two years of daily sales and a stock snapshot from the MDM master data — 10 stores, 25 products, 16 categories, 10 vendors. The same seed always gives the same numbers, so design reviews and tests see identical results.

  • An energy drink surging chain-wide — and out of stock at two stores
  • A spinach salad in sharp decline — and overstocked
  • A tech-park store steadily losing traffic over the last quarter
  • An airport store that is consistently the busiest
Stock health page: KPI cards for 2 out of stock, 14 below reorder point, 12 overstocked and 216 healthy, above a table where the energy drink is out of stock at two stores with Reorder buttons
Inventory — the planted stockouts and overstock show up exactly where expected.

Planting these scenarios meant every screen had a real problem to surface, which made it possible to judge whether the design actually led the user to it.

06 · Built entirely on SagUI

The whole interface is composed from SagUI — AppShell, MetricCard, SortableDataTable, line, bar, donut, slope, waffle, treemap and activity-heatmap charts, Dialog, Toast, and the form controls. The app contains layout code, not custom components.

01

Tokens only

No hex values or Tailwind palette classes in app code, so light and dark themes work everywhere by default.

02

A skill as guardrail

A project skill gave Claude the rules — SagUI component first, documented props only, accessible labels on every chart.

03

Feedback into the system

Building a real product exposed gaps in SagUI — packaging, dark-theme chart styles, an inset AppShell — fixed upstream.

Read the SagUI case study →

07 · What's next

  • Connect to live POS and inventory feeds in place of generated data
  • Role-based views for store managers alongside the regional lead
  • Alert thresholds the lead can tune per store and category
  • Measure time from alert to resolved action as the product's success metric