LMNT — Retail & POS — Dashboard specification

About this document

Canonical structure: This file follows the Brainforge dashboard specification templateknowledge/delivery/service-lines/strategy-analytics/templates/dashboard-specification-template.md. That template is the source of truth for section order, metric authority, and §9 tile patterns (including optional stacked Chart type / Rows / Columns and Data sources tables). This LMNT document is a filled example for the retail & POS Omni pilot, not a fork of the template.

This specification is business- and customer-facing: it is meant for LMNT leaders, retail operations, finance alignment, and partners who need a single place to see what dashboards will include, how metrics are defined, what data sits underneath, and how often it refreshes. Technical builders (Omni, data engineering) use the same document for implementation.

What it contains: Program intent; Omni Topics and Snowflake objects in tabular form; metric authority; formatting rules; freshness options (hourly, daily, weekly, ad hoc); dashboard-by-dashboard tiles; and sign-off (§12).

How to use it: Read §1 for scope and data alignment, §3–§4 for metrics and display standards, §5 for freshness and exports, §9 for each dashboard. Appendices A–B summarize design principles and a QA checklist.

Ownership: LMNT and Brainforge maintain the approved revision together; any distributed copy (for example a Google Doc) should match that revision after stakeholder review (§12).


Specification template

Status: In stakeholder review (pre-dashboard build)
Prepared for: LMNT — Phil (BizOps / exec), Will / Russell (Retail), leadership
Prepared by: Brainforge
Last updated: 2026-04-08

ArtifactLink / path
Data Platform Documentation (Core Metrics)Google Sheet — Core Metrics tab
Locked metric definitions (repo mirror)METRIC_DEFINITIONS_LOCKED.md
Establishing Omni (Accelerator) — retail / POS contextlmnt-omni-accelerator-ramp-up-memo.md (as referenced in program memos)
POS pilot spec (format reference)Google Doc
Program / pilot tracker (confirm retail tabs)Google Sheet
Linear project (Omni pilot)[URL — Omni pilot project]

1. Engagement summary

1.1 Program intent

LMNT is building governed Omni dashboards on Snowflake so retail stakeholders can answer recurring questions from retail marts without exporting CSVs or reconciling ad hoc spreadsheets. This document specifies what dashboards to build for the retail and POS slice of the pilot, which metrics and cuts each tile uses, and how definitions align with operational reporting (Emerson shares, Target direct, in-store POS).

The spec covers reporting on both:

  1. Retail sales: LMNT → retailers (sell-in / shipment / authorized orders where modeled).
  2. POS sales: retailers → end purchasers (sell-through / store scan data where available).

As of the last refresh noted in source material, retail sales data from Emerson was still in flight; build with what is available in RETAIL marts and document gaps explicitly in §9 and §10.

1.2 Omni Topics (semantic model alignment)

Builds in Omni should align to these Topics and their primary Snowflake objects. Exact Topic YAML names follow the Omni model sync (e.g. Retail/*.topic.yaml).

Omni Topic (representative name)Primary Snowflake object(s)Role in this program
Retail Store Overview (Daily)RETAIL_SKU_DAILY_SUMMARYDaily SKU / retailer comparisons; SDLW / WoW / MoM / YoY
Retail Weekly Sales SummaryRETAIL_WEEKLY_SALES_SUMMARYWeekly rollups; store health; WoW / SWLY
Retail Sales / Inventory PerformanceRETAIL_FCT_SALES, RETAIL_FCT_INVENTORY, related inventory summariesSell-through and inventory where modeled
Retail Velocity & Sell-throughRETAIL_FCT_VELOCITY_SELLTHROUGH, RETAIL_PRODUCT_PERFORMANCE_SUMMARYVelocity leaderboard and trends

1.3 Snowflake tables (schema RETAIL)

Objects below are exposed through the Omni semantic model (sync path). Use this table as the inventory for which tables power which questions; tile-level detail stays in §9.

Snowflake objectTypeRole in this program
RETAIL_DAILY_SALES_SUMMARYSummaryDaily POS rollups; as-of date for dashboard header
RETAIL_WEEKLY_SALES_SUMMARYSummaryWeekly retailer and category views; store health metrics
RETAIL_MONTHLY_SALES_SUMMARYSummaryMonthly comparisons where used
RETAIL_SKU_DAILY_SUMMARYSummarySKU-level daily comparisons; Executive Pulse; SKU drill-down
RETAIL_PRODUCT_PERFORMANCE_SUMMARYSummarySKU performance; velocity context
RETAIL_WEEKLY_INVENTORY_SUMMARYSummaryWeekly inventory rollups
RETAIL_INVENTORY_DAILY_SUMMARYSummaryDaily inventory
RETAIL_FCT_SALESFactPOS / sales facts; Target proxy for purchasing where noted
RETAIL_FCT_WALMART_OMNI_SALESFactWalmart authorized / Omni-channel purchase and sales fields
RETAIL_FCT_VELOCITY_SELLTHROUGHFactVelocity and sell-through
RETAIL_FCT_INVENTORYFactInventory facts
RETAIL_FCT_INVENTORY_BY_LOCATIONFactLocation-level inventory
RETAIL_DIM_STORESDimensionGeography, store attributes
RETAIL_DIM_PRODUCTSDimensionSKU / category
RETAIL_DIM_CALENDARDimensionCalendar and retail week alignment

1.4 Stakeholders and primary questions

StakeholderRole in pilot
PhilBizOps / exec: pulse, comparability across retailers
Will / RussellRetail: Walmart vs Target, velocity, geography, SKU detail
LeadershipDirectional performance, expansion / concentration

Questions this pilot should answer (non-exhaustive; tie tiles in §9 back to these):

  1. How do Walmart and Target compare on POS and store health, and what reporting differences explain deltas?
  2. What is POS performance by retailer, category, and SKU — daily and weekly — including WoW / MoM / YoY?
  3. How does performance vary by region and state (where geography exists)?
  4. What is velocity by SKU and retailer, and how is it trending?
  5. What does SKU-level daily detail look like for drill-down (wireframe-aligned)?
  6. How much are retailers purchasing (sell-in / authorized orders) vs POS, and what is order cadence where data allows?
  7. What does a net revenue bridge look like structurally — even when some lines are post-pilot?

1.5 Data scope, folder, and upstream sources

ItemDetail
Omni folderLMNT — Retail Sales and POS Performance
Snowflake schemaRETAIL — full object list in §1.3
Emerson / retailer feedsUpstream tables (e.g. WALMART_*, TARGET_*) land in the warehouse and feed RETAIL marts; §9 “reporting differences” documents Walmart vs Target behavior where it affects interpretation

1.6 Definition authority

SourceRole
Data Platform Documentation (Core Metrics tab)Wins for metric names, formulas, and business definitions.
Locked metric definitions (METRIC_DEFINITIONS_LOCKED.md)Technical mirror of the sheet; must stay aligned.
This specificationDescribes dashboards, tiles, filters, and convenience copies of definitions. If text here drifts, reconcile to the sheet and locked file.

1.7 Legacy reporting inventory vs Omni pilot dashboards

Purpose: Track what Omni replaces or parallels. Action: LMNT or Brainforge to add rows (file names, owners) in the client review copy as inventory is confirmed.

Existing artifact (as documented or linked)Primary metrics / purposeRefresh / grain (if known)Omni pilot dashboard that supersedes or parallels
POS pilot Google Doc (wireframes)SKU daily layout, executive viewsSee docDashboard 1, 5
Emerson / Target / Walmart source feedsRaw POS and store salesVendor / daily§9 tiles (via RETAIL marts)
Ad hoc spreadsheets / exportsOne-off cutsVariesReplaced by governed Topics once live
[TBD — Source Medium / legacy BI][TBD][TBD][TBD]

1.8 Delivery tracking

Work is tracked in the Linear project linked under Related artifacts. Dashboard build order: Dashboards 1–2 first, then 3, 4, 5; 6–7 as specified in §9 (subject to data readiness).


2. Dashboard design guidelines (applies to all dashboards in §9)

  • Glanceability: Headline KPIs and comparisons visible without scrolling past the first screen where possible; dense tables grouped in clear sections.
  • Consistency: Abbreviations, date formats, and currency match §4 unless a dashboard override is stated.
  • Honest comparisons: WoW / MoM / YoY and retailer comparisons use the same basis per metric definition in the Data Platform sheet; where bases differ (Walmart vs Target), call it out in Notes and in §9 reporting-differences tiles.
  • Density: Executive Pulse is tables-first by design; operational dashboards may add charts (trends, maps) where specified.

3. Metrics and definitions (Data Platform sheet and locked file)

The Data Platform Documentation (Core Metrics) and METRIC_DEFINITIONS_LOCKED.md are one definition set — keep them aligned. This section does not replace them.

Metrics referenced by this spec (representative)

Metric name (as in sheet / mart)Notes for builders
total_pos_amountPOS sales $; compare fields SDLW, SDLM, SDLY; WoW / MoM / YoY %
total_unitsUnit comparisons parallel to sales where modeled
weekly_pos, prior_week_pos, swly_posWeekly retailer rollups
active_stores, new_stores, churned_storesStore health
pos_velocity_per_store, avg_daily_unitsVelocity dashboard
auth_based_qty, auth_net_sales_amountWalmart Omni purchasing
return_amount, net_sales_amountBridge components where available

4. Global formatting

Defaults for all dashboards unless §9 specifies an override.

ElementConvention
Currency$ in titles and labels; whole dollars — round to nearest dollar, no decimals
CountsIntegers with thousands separators
Percentages% with one decimal where specified; state denominator in Notes when ambiguous
DatesMM/DD/YYYY
AbbreviationsCapitalized except “period over period” phrases (YoY, WoW, MTD, etc.)
Text casingSentence case for descriptions; title case for axis labels

Date and grain (global):

  • Primary date field: business_date / week_end_date as appropriate per Topic — document in Omni so all tiles default consistently.
  • Default time window (filter): Last 12 months, adjustable by month / week / day.
  • Retail week: Sat–Fri EST (stated in header). Time zone: EST.
  • Header element: As-of timestamp from the relevant mart (typically MAX(business_date) from RETAIL_DAILY_SALES_SUMMARY when daily) plus a label that states the refresh cadence agreed in §5.1 and “Week = Sat–Fri EST.”

Dashboard-level filters (default across §9 unless overridden):

FilterDefault
Date rangeLast 12 months (adjustable)
RetailerAll

5. Data freshness, caching, and scheduled exports

5.1 Freshness and latency

Standard cadence options (pick what the pipeline and stakeholders support; document the choice in the row below and in the dashboard header):

CadenceMeaningTypical use
HourlyMart or extract refreshed up to roughly every hourNear–real-time monitoring, high-change feeds
DailyRefreshed once per business day (specific time TBD with LMNT)Default for retail POS marts in this pilot
WeeklyRefreshed on a fixed weekdaySlower-moving summaries or manual staging
Ad hocOn-demand or manual refreshOne-off analysis, backfills, or pre-go-live loads

This pilot — agreed target (fill in):

TopicSelection
Target cadence for RETAIL marts exposed in Omni[ Hourly / Daily / Weekly / Ad hoc — circle one or combine by feed ]
As-of rule in UIe.g. “Data through [date]” from MAX(business_date) or equivalent at chosen grain
  • Source pipeline: Emerson / retailer feeds → Snowflake RETAIL marts → Omni Topics.
  • Known lag: Retailer-specific feed delays — document in §9 Notes when a tile is sensitive to lag.

5.2 Caching and performance

  • Tool behavior: Omni query caching per Improving query performance with caching.
  • Expected interaction latency: Filter changes should return within normal Omni interactive bounds; heavy SKU tables may use pagination or limits as implemented.

5.3 Scheduled exports

No scheduled exports for this pilot unless stakeholders add a row later:

ExportAudienceCadenceContentsOwner

6. Visualization tool — documentation and rationale

ResourceLinkWhy this structure
Omni documentation homedocs.omni.coSingle entry for workbooks, dashboards, topics, and AI features.
Analyze & buildAnalyze & build in OmniRetail folder holds workbook groups by domain (Executive, Velocity, Purchasing).

Omni (additional rows):

ResourceLink
Topics & semantic modelCurating datasets with topics
Editing & publishingEditing & publishing content

7. Tool-specific implementation notes

Omni

Tableau / Looker / Power BI

  • Not in scope for this pilot unless LMNT adds a row to Related artifacts.

8. Access, training, and rollout

TopicDetail
Access / permissions[Omni folder: LMNT — Retail Sales and POS Performance; who can view vs edit]
Training[Live session, Loom, or office hours — TBD]
Rollout plan[Pilot users first — TBD]
Support channel[Slack / email — TBD]

9. Dashboard specifications

Structure: Dashboard → Section → Tile. Tiles use either a compact field table or a stacked layout (Chart type / Rows / Columns on separate lines + Data sources table) per the dashboard specification template §9.


Dashboard 1 — Executive Pulse

Why this dashboard exists

Daily and weekly comparison tables (no charts) for POS sales and units by retailer and category — the operational “pulse” for Phil and retail leads.

Primary audience

  • Phil (BizOps / exec), Will / Russell (Retail)

Primary questions (tie to §1.4)

  1. What is POS today vs same day last week / month / year by retailer and category?
  2. What is the weekly snapshot vs prior week and same week last year?

Dashboard-level filters

FilterScopeDefaultNotes
Date rangeDashboardLast 12 months (slice to latest day/week in tiles)Tiles may fix MAX(business_date) or latest week
RetailerDashboardAll
CategoryDashboardAllWhere applicable

Dashboard-specific formatting

ElementOverride
Conditional deltasGreen if positive, red if negative on WoW / MoM / YoY % (sales and units)

Section 1.1 — Daily POS by retailer (sales)

Purpose: One row per retailer for the latest business date with comparison columns.

Section-level filters: Inherit dashboard; tiles may force latest date.

Tile 1.1a — Daily by retailer (sales)
FieldDetail
Chart typeTable (pivot)
ColumnsDate; Total Sales (total_pos_amount @ MAX date); SDLW (sdlw_pos); WoW % (wow_pct_pos); SDLM (sdlm_pos); MoM % (mom_pct_pos); SDLY (sdly_pos); YoY % (yoy_pct_pos)
RowsRetailer (Walmart, Target, Vitamin Shoppe, Costco CA)
SortRetailer (custom order) or by Total Sales DESC — confirm with stakeholders
FormatsDate MM/DD/YYYY; $ whole dollars; % one decimal; WoW/MoM/YoY conditional per §9 Dashboard 1 override
Data sourceRETAIL_SKU_DAILY_SUMMARY (roll up to retailer; comparison fields on SKU grain) with RETAIL_DAILY_SALES_SUMMARY for as-of daily totals where applicable
Tile-level filtersbusiness_date = MAX(business_date)
NotesWoW % formula: POS this week / POS last week (per Data Platform); same logic family for MoM / YoY
Tile 1.1b — Daily by retailer (units)
FieldDetail
Chart typeTable (pivot)
ColumnsParallel to 1.1a using total_units, sdlw_units, wow_pct_units, sdlm_units, mom_pct_units, sdly_units, yoy_pct_units
RowsRetailer
SortSame as 1.1a
FormatsFull integers (no $); thousands separators
Data sourceSame as 1.1a (unit fields)
Tile-level filtersbusiness_date = MAX(business_date)
NotesList per SKU, per retailer in detailed exports if needed — main tile is retailer rollup

Section 1.2 — Daily by category (sales and units)

Purpose: Same comparison columns as Tile 1.1a, rows = category (Drink Mix, Sparkling, Variety Packs).

Tile 1.2a — Daily by category (sales)
FieldDetail
Chart typeTable
ColumnsSame set as Tile 1.1a (sales)
RowsCategory
SortBy Total Sales DESC or category order
Formats§4 + Dashboard 1 conditional %
Data sourceRETAIL_SKU_DAILY_SUMMARY rolled to category
Tile-level filtersbusiness_date = MAX(business_date)
Notes
Tile 1.2b — Daily by category (units)
FieldDetail
Chart typeTable
ColumnsSame as 1.1b
RowsCategory
SortBy units or category order
FormatsInteger units
Data sourceSame as 1.2a (units)
Tile-level filtersbusiness_date = MAX(business_date)
Notes

Section 1.3 — Daily by retailer × category (sales and units)

Purpose: Nested breakdown for retailer and category (sales and units).

Tile 1.3a — Daily retailer × category (sales)
FieldDetail
Chart typeTable (nested / grouped rows)
ColumnsSame comparison columns as Tile 1.1a
RowsRetailer, Category (nested)
SortRetailer, then Category
Formats§4 + conditional %
Data sourceRETAIL_SKU_DAILY_SUMMARY
Tile-level filtersbusiness_date = MAX(business_date)
Notes
Tile 1.3b — Daily retailer × category (units)
FieldDetail
Chart typeTable
ColumnsSame as 1.1b
RowsRetailer, Category
SortRetailer, Category
FormatsIntegers
Data sourceSame as 1.3a (units)
Tile-level filtersbusiness_date = MAX(business_date)
Notes

Section 1.4 — Weekly by retailer (sales and units)

Purpose: Latest completed week vs prior week and same week last year.

Tile 1.4a — Weekly by retailer (sales)
FieldDetail
Chart typeTable
ColumnsLatest Week (weekly_pos @ MAX week_end_date); Week Prior (prior_week_pos); WoW % (wow_pct_pos weekly); SWLY (swly_pos); YoY % (yoy_pct_pos weekly)
RowsRetailer
SortBy Latest Week DESC or fixed retailer order
Formats$ whole; % one decimal
Data sourceRETAIL_WEEKLY_SALES_SUMMARY (grain: source × week_start_date × metric_name × value — pivot in Omni); or roll weekly comparisons from RETAIL_SKU_DAILY_SUMMARY
Tile-level filtersLatest week in range
NotesConfirm week boundaries vs Sat–Fri EST in Topic
Tile 1.4b — Weekly by retailer (units)
FieldDetail
Chart typeTable
ColumnsParallel unit fields to 1.4a
RowsRetailer
SortSame as 1.4a
FormatsIntegers
Data sourceSame as 1.4a
Tile-level filtersLatest week
Notes

Section 1.5 — Weekly by category and weekly retailer × category

Purpose: Same patterns as Dashboard 1 Sections 1.2–1.3 but weekly fields.

Tiles 1.5a–1.5d
TileDescription
1.5aWeekly by category (sales) — same columns as 1.4a, rows = category
1.5bWeekly by category (units) — same as 1.4b, rows = category
1.5cWeekly retailer × category (sales) — nested rows
1.5dWeekly retailer × category (units) — nested rows

Data source: RETAIL_WEEKLY_SALES_SUMMARY (and rollups as needed).

Known gaps and caveats (Dashboard 1)

  • Emerson feed completeness for all retailers on a given day — may produce blanks; label in header or footnote if needed.

Out of scope for this pilot (Dashboard 1)

  • Chart visualizations (explicitly tables-only for this dashboard).

Dashboard 2 — Walmart vs Target & performance summary

Why this dashboard exists

Trend and scorecard view for retail leadership: Walmart vs Target head-to-head, reporting differences, store health, period trends, and placement for the net revenue bridge reference (see Dashboard 7 for the standalone bridge tile set).

Primary audience

  • Will / Russell, Phil, leadership

Primary questions (tie to §1.4)

  1. How does Target perform vs Walmart on POS and stores for a given day or week?
  2. What reporting differences (calendar, recognition, promo) should a reader know when comparing?
  3. What are multi-period POS trends by retailer and category?

Dashboard-level filters

FilterScopeDefaultNotes
Date rangeDashboardLast 12 months
RetailerSection 2a–2cWalmart, TargetWhere section requires
CategoryDashboardAllFor trend sections

Section 2.1 — Walmart vs Target head-to-head

Tile 2.1a — Scorecards + comparison table
FieldDetail
Chart typeSide-by-side scorecard pair + table
Columns (scorecards)Metrics: POS Sales — Latest Day; WoW; POS Units — Latest Day; WoW; POS Sales — Latest Week; WoW; Active Stores; WoW; Store Rank; Avg Sales/Store; WoW — per Walmart and Target
Rows (comparison table)Period rows: Latest Day, Latest Week, MTD, YTD, last 3 months by month
Columns (comparison table)Walmart (), Combined ($), Walmart share %, Target share %
SortPeriod order (chronological / logical)
Formats$ whole; % as specified; WoW on scorecards aligned to weekly/daily context
Data sourceRETAIL_DAILY_SALES_SUMMARY, RETAIL_WEEKLY_SALES_SUMMARY; retailer IN ('Walmart','Target')
Tile-level filtersLatest day / week per field definitions
NotesFirst visible section on this dashboard; answers pilot head-to-head questions

Section 2.2 — Reporting differences callout

Tile 2.2a — Data definitions panel
FieldDetail
Chart typeText / static table (pinned or collapsible “Data definitions”)
ColumnsDimension; Walmart; Target
RowsData source; Week end date; Sales recognition timing; Returns/refunds; Promo split; Store geography
SortN/A (fixed order)
FormatsPlain text; sentence case
Data sourceDocumented metadata (Emerson WALMART_*, TARGET_* provenance) — update when engineering resolves joins
Tile-level filtersNone
NotesTransparency panel, not a KPI; see original spec for row-level detail (e.g. WM_WK_END_DT vs SALES_DATE, promo fields on Target)

Section 2.3 — Store health

Tile 2.3a — Store health scorecards
FieldDetail
Chart typeScorecard row (~5 cards) + small breakout table
ColumnsTotal Stores (num_stores); Active (active_stores); Churned (churned_stores); New (new_stores); Stores With Sales (stores_with_sales)
RowsCard metrics; breakout = same by retailer
SortN/A
FormatsInteger counts
Data sourceRETAIL_WEEKLY_SALES_SUMMARY
Tile-level filtersLatest week
NotesDefinitions: active = sale in last 365 days; churned = active last week not this week; new = first sale this week — confirm in Data Platform

Tile 2.4a — Period trend table + spark line
FieldDetail
Chart typeTable + spark line column
ColumnsMTD POS (); Prior Quarter; QoQ %; YTD POS ($); Prior YTD; YoY %; spark: daily POS last 30 days
RowsRetailer
SortRetailer
Formats$ whole; % one decimal
Data sourceRETAIL_DAILY_SALES_SUMMARY / rollups
Tile-level filtersRespects dashboard date
NotesSpark = daily POS trend per retailer

Section 2.5 — POS by category

FieldDetail
Chart typeSame as 2.4a
ColumnsSame period columns
RowsCategory (Drink Mix, Sparkling, Other, Unknown)
SortBy MTD or custom
FormatsSame as 2.4a
Data sourceSame marts, category grain
Tile-level filters
Notes

Layout notes (Dashboard 2)

  • Top: Tiles 2.1a (head-to-head) + 2.2a (reporting differences).
  • Next: 2.3a (store health).
  • Main body: 2.4a, 2.5a (trends).
  • Net revenue bridge: Built as Dashboard 7 (standalone); may be linked or embedded from this workbook for narrative continuity.

Known gaps and caveats (Dashboard 2)

  • Target store geography limited vs Walmart until feeds extend.

Out of scope for this pilot (Dashboard 2)

  • None beyond deferred items in §10.

Dashboard 3 — Geography & regional sales

Why this dashboard exists

Regional and state-level POS and store view — NE vs CA, etc. — where geography is available.

Primary questions (tie to §1.4)

  1. How do sales and stores differ by US region?
  2. What does the state map and state detail show for concentration?

Dashboard-level filters

FilterDefaultNotes
CategoryAll
Date rangeLast 12 months
RetailerWalmartOnly retailer with reliable geo in source material; label clearly

Section 3.1 — Sales by region

Tile 3.1a — Regional table
FieldDetail
Chart typeTable
ColumnsTotal Sales ($), Total Units, # Stores, Avg Sales/Store, WoW %, YoY %
RowsUS Region (us_region calculated on RETAIL_DIM_STORES.STATE_CODE)
SortTotal Sales DESC
Formats§4
Data sourceRETAIL_DIM_STORES + sales facts
Tile-level filtersRetailer (default Walmart)
NotesRegion mapping: NE, SE, Midwest, Southwest, West — states per original spec

Section 3.2 — State map

Tile 3.2a — US map
FieldDetail
Chart typeMap (US states)
ColumnsColor by measure
RowsState
SortN/A
FormatsColor scale light → dark by SUM(total_sales_amount)
Data sourceRETAIL_DIM_STORES / STATE_CODE
Tile-level filtersRetailer (default Walmart), Category, Date
NotesAnnotation: “Geographic data available for Walmart stores only. Target store geography not in Emerson share — post-pilot.”

Section 3.3 — State detail + drill

Tile 3.3a — State table
FieldDetail
Chart typeTable
ColumnsRegion, Total Sales ($), Total Units, # Stores, Avg Sales/Store, Stores with 0 Sales
RowsState (sort by sales DESC)
SortSales DESC
Formats§4
Data sourceStore and sales marts
Tile-level filtersSame as map
NotesDrill: state → store list (stores in state with sales and units)

Known gaps and caveats (Dashboard 3)

  • Target geo may be missing or partial — do not imply national coverage for Target on map.

Dashboard 4 — POS velocity by SKU & retailer

Why this dashboard exists

Velocity (units per store per day) as the leading indicator of retail health — by SKU and retailer.

Primary question (tie to §1.4)

What is POS velocity by SKU and retailer, and how is it trending?

Dashboard-level filters

FilterDefault
RetailerAll
CategoryAll
DateLast 30 days (default for velocity signal)

Section 4.1 — Velocity leaderboard

Tile 4.1a — Ranked table
FieldDetail
Chart typeTable
ColumnsSKU (item_description); Category; Retailer; Avg Daily Units/Store (pos_velocity_per_store); Total Units; Total POS Sales ($); # Stores Selling; # Stores Carrying; % Stores Selling; Avg Daily Units overall (avg_daily_units)
RowsSKU (one row per product × retailer or as modeled)
Sortpos_velocity_per_store DESC (default)
FormatsVelocity 0.00; counts integer; $ whole
Data sourceRETAIL_PRODUCT_PERFORMANCE_SUMMARY, RETAIL_FCT_SALES, RETAIL_FCT_VELOCITY_SELLTHROUGH
Tile-level filtersRetailer, Category, Date
NotesPrimary sort = velocity

Section 4.2 — Heat table

Tile 4.2a — Velocity by retailer × SKU
FieldDetail
Chart typePivot / heat table
ColumnsRetailer (Walmart, Target, Vitamin Shoppe, Costco CA)
RowsSKU
Valuesavg_daily_units at SKU × Retailer
SortBy total velocity or SKU name
FormatsHeat: low = light, high = dark green
Data sourceRETAIL_FCT_SALES aggregated SKU × Retailer
Tile-level filtersDate, Category
NotesSurfaces SKUs that diverge materially by retailer

Section 4.3 — Velocity trend

Tile 4.3a — Line chart
FieldDetail
Chart typeLine
ColumnsWeek (X)
Rows / SeriesTop 5 SKUs by velocity (configurable)
Yavg_daily_units (per store)
SortWeek ascending
FormatsLine series
Data sourceWeekly rollups from velocity / sales facts
Tile-level filtersRetailer; Category
NotesLast 12 weeks typical window

Layout notes (Dashboard 4)

  • Order: 4.1a top → 4.2a4.3a bottom.
  • Title: POS Velocity by SKU & Retailer.

Dashboard 5 — Category & SKU drill-down

Why this dashboard exists

Flat SKU daily table aligned to Phil’s SKU_Daily wireframe — full comparison columns for POS $ and units (daily and weekly).

Section 5.1 — SKU daily table

Tile 5.1a — SKU daily flat table
FieldDetail
Chart typeFlat table (wide; horizontal scroll expected)
ColumnsDate; SKU; Retailer; Category; POS Latest Date ; WoW %; SDLM ; YoY %; Units columns (parallel); Sales Latest Week; Week Prior; WoW % weekly; SWLY; YoY weekly; Units weekly columns (see original column list)
RowsOne row per Date × SKU × Retailer (grain)
SortDate DESC, then Retailer, SKU; optional sort by volume
Formatsk** where original spec used $k for POS columns; units full integers; % conditional green/red
Data sourceRETAIL_SKU_DAILY_SUMMARY
Tile-level filtersRetailer, Category, Date (page bar)
NotesConditional formatting on all % columns; title Category & SKU Drill-down

Known gaps and caveats (Dashboard 5)

  • Column naming in Omni should match wireframe after UAT.

Dashboard 6 — Retailer purchasing & order cadence

Why this dashboard exists

Purchasing (what LMNT ships / authorized orders) vs POS — reorder patterns and cadence. Uses sales / Omni facts as specified; PO granularity may be incomplete.

Primary question (tie to §1.4)

How much is each retailer purchasing, how frequently, and what discounts/promo splits are visible?


Section 6.1 — Retailer purchasing summary

Tile 6.1a — Purchasing summary table
FieldDetail
Chart typeTable
ColumnsUnits Purchased (auth_based_qty Walmart / total_quantity others); Sales Value ($); # POs (purchase_order_count); Avg Order Size; Avg Weeks Between Orders; Last Order Date; MTD; Prior Month; MoM %
RowsRetailer
SortBy Sales Value or retailer
FormatsCounts integer; $ whole; % one decimal
Data sourceRETAIL_FCT_WALMART_OMNI_SALES (Walmart); RETAIL_FCT_SALES (Target proxy until explicit PO data)
Tile-level filtersTime period: 7d, 30d, week, month, year
NotesGap: PO count and cadence need OMS / Emerson — flag in model audit (e.g. Gap 8). Walmart: auth-based fields; Target: shipped POS as proxy

Section 6.2 — Purchasing frequency trend

Tile 6.2a — Weekly bar chart
FieldDetail
Chart typeBar (weekly)
ColumnsWeek
Rows / SeriesUnits purchased by retailer (stacked or grouped)
SortWeek ascending
FormatsLast 52 weeks typical
Data sourcePurchasing rollups
Tile-level filtersRetailer
NotesGaps in bars may indicate stockout or distribution loss

Section 6.3 — Order cadence by SKU

Tile 6.3a — Nested table
FieldDetail
Chart typeTable
ColumnsUnits Purchased; Avg Weekly Run Rate; Last Week With Activity; Weeks Since Last Order; Status (Active / Slowing / Stalled)
RowsRetailer, SKU (nested)
SortBy status severity or weeks since order
FormatsStatus colors: Active green, Slowing yellow, Stalled red
Data sourceFacts + calculated fields
Tile-level filtersRetailer, Category, Date
NotesThresholds: Active <4 wks; Slowing 4–8; Stalled >8

Section 6.4 — Discounts against sales

Tile 6.4a — Promo and discount table
FieldDetail
Chart typeTable
ColumnsGross Sales; Promo Sales; Regular Sales; Promo % of Sales; Discounts; Chargebacks; Trade Spend / Slotting
RowsRetailer
SortRetailer
Formats$ whole; % one decimal; “—” for post-pilot columns
Data sourceTarget: PROMO_SALE_AMOUNT, REGULAR_SALE_AMOUNT, etc. from TARGET_DAILY_SALES_TCIN_LOC path; other retailers as modeled
Tile-level filtersPeriod
NotesDiscounts, chargebacks, trade spend post-pilot — show “—” and tooltip “Post-pilot scope” per BI Tool Memo

Layout notes (Dashboard 6)

  • Top: 6.1a summary.
  • Below: 6.2a trend.
  • 6.3a and 6.4a side-by-side or stacked.
  • Title: Retailer Purchasing & Order Cadence.
  • Top note: “Purchasing data: Walmart uses authorized order amounts (Omni). Other retailers use shipped POS as proxy. PO count and exact cadence pending OMS data.”

Known gaps and caveats (Dashboard 6)

  • PO count, cadence, and trade-spend lines depend on future sourcing.

Dashboard 7 — Net revenue bridge

Why this dashboard exists

Structured walk from gross POS toward net revenue — rows in place even when some measures are post-pilot so users see the roadmap.

Section 7.1 — Bridge table

Tile 7.1a — Waterfall / signed table

Chart type
Waterfall or table with +/− rows.

Rows
Bridge line items in order: Gross POS Sales → Returns → = Net Sales → Discounts → Chargebacks → Trade Spend / Slotting → = Net Revenue.

Columns
Current Month (), Change ($).

FieldDetail
SortFixed bridge order
Formats$ whole; post-pilot rows “—” + tooltip
Tile-level filtersMonth
NotesBuild all rows now; do not suppress post-pilot lines — tooltip: “Post-pilot scope — requires trade spend and chargeback data from LMNT finance systems.”

Data sources (Snowflake)

ObjectNotes
RETAIL_DAILY_SALES_SUMMARYGross POS, returns, net sales — in current warehouse / Omni model.
RETAIL_FCT_CHARGEBACKSPost-pilot — not in current sync; add when dbt delivers tables (see Gap 7 in model audit).
RETAIL_FCT_TRADE_SPENDPost-pilot — not in current sync; add when dbt delivers tables (see Gap 7 in model audit).

Layout notes (Dashboard 7)

  • Standalone dashboard or linked from Dashboard 2 narrative.
  • Title: Net Revenue Bridge.

Known gaps and caveats (Dashboard 7)

  • Net revenue and deduction lines pending data per BI Tool Memo and warehouse gaps (e.g. Gap 7 in model audit).

10. Deferred scope (outside this pilot)

ItemReasonFollow-up
Full trade spend, chargebacks, slotting in bridge and discount tilesData not in current Omni sync / needs finance systemsAdd tables in warehouse + Topic; new spec revision
Target store geography on par with WalmartNot in Emerson shareFeed / modeling post-pilot
Exact PO count and order cadence for all retailersOMS / Emerson gapsGap 8 / OMS integration
RETAIL_FCT_CHARGEBACKS, RETAIL_FCT_TRADE_SPENDNot in current sync under Omni pathdbt / sync when ready

11. Acceptance criteria

This pilot is accepted when:

  1. Users in §1.4 can answer the listed primary questions using the published dashboards.
  2. All metrics trace to the Data Platform sheet; nothing in §3 contradicts the sheet.
  3. Freshness and caching (§5) match what stakeholders were told.
  4. Access and rollout (§8) are executed for the agreed pilot group.
  5. §9 is build-complete: every section and tile documents chart type, Columns, Rows, Sort, and filters at the right level.
  6. §12 sign-off checklist is complete.

12. Review, open questions, and sign-off

12.1 Open questions

TopicQuestionDecisionOwner
Omni Topic naming vs Retail/*.topic.yamlConfirm final published names
$k vs whole dollars on SKU tableAlign wireframe to §4 global rounding
Walmart fiscal week vs Sat–Fri labelSingle definition in Data Platform

12.2 Sign-off

  • Client sponsor or stakeholder — approved: [name, date]
  • Analytics build owner — approved: [name, date]
  • Brainforge delivery lead — approved: [name, date]
  • Client data or IT owner (if required) — approved: [name, date]

Appendix A — Why these dashboard practices matter

Reference only. Principles are stated in business language and tied to Brainforge dashboard delivery.

Glanceability and focus — Stephen Few, Information Dashboard Design
Busy teams need to see whether KPIs are healthy without reading a narrative. Specs list sections and tiles so builders know what must be visible at first glance versus drill-down.

Clear message before chart choice — Cole Nussbaumer Knaflic, Storytelling with Data
§1.4 primary questions and per-dashboard “why” text come before the tile table.

Patterns that match the domain — Wexler, Shaffer, Cotgreave, The Big Book of Dashboards
Retail norms (trend + ranking + detail) — Dashboard → Section → Tile makes handoff explicit.

Honest numbers and scales — Edward Tufte, The Visual Display of Quantitative Information; Alberto Cairo, The Functional Art
Formats, Notes, and Data Platform alignment keep finance and ops aligned.

Color and attention — Colin Ware, Visual Thinking for Design
Document color rules in Notes (e.g. conditional WoW %) for accessibility and consistency.

Omni documentation — visualization and dashboard building


Appendix B — Pre-handoff QA checklist

  • Metrics match Data Platform sheet (spot-check).
  • Freshness and caching behavior match §5.
  • Scheduled exports (if any) verified.
  • Dashboard / section / tile filters behave as documented.
  • Access matches §8 for pilot users.
  • §12 sign-off complete.