The RetailMax Case
CASE 01RETAIL Β· SPAIN

87 stores. Five systems that didn't talk to each other. A business that finally sees itself whole.

RetailMax Spain had sales, stock, and customer data scattered across five different systems, with no single unified view. Here's what we built on Microsoft Fabric β€” and what it actually cost, no gloss.

87 stores 5 data sources 797 GB consolidated 4 dashboards in production 2,840 customers segmented
The client

The same old problem, at chain scale

RetailMax is a retail chain with 87 physical stores in Spain and an active online channel. As with most operations of this size, each department had solved its own problem in isolation β€” and no one had the full picture.

SAP S/4HANA Corporate finance and inventory
91.8 GB
Magento Online store
38.1 GB
In-Store POS In-person sales, 87 stores
662 GB
Salesforce CRM Customers and loyalty
5 GB
Excel / SharePoint Whatever didn't fit anywhere else
0.1 GB

Bar length is proportional to data volume. In-store POS accounts for 83% of the total β€” the first data point that changes any capacity plan.

What they needed wasn't another report. It was the ability to answer, in real time, three questions that used to take days to resolve: How are sales performing by store and by channel? Where is stock running out before it's too late? Which customers are drifting away, and why?


How we approached it

Estimate, build, operate β€” in that order

The same path we follow with any client this size: first know what it will really cost and how much capacity is needed, then build it on real data, and finally leave it running with a monitoring plan in place β€” not just a good-looking dashboard on delivery day.

01

Estimate before committing

Before writing a single line of pipeline code, we sized Fabric capacity against RetailMax's actual data volume β€” not a generic pricing sheet. The result is delivered to the client in writing, with the real monthly cost, before any decision is made.

SKU F8 Β· 8 CU Β· €1,256/month Β· 797 GB estimated
02

Build on an architecture that can handle growth

A medallion architecture (Bronze β†’ Silver β†’ Gold) on Fabric, with quality validation at every layer, feeding a Direct Lake semantic model β€” Power BI reads production data without waiting on a refresh. On top of that, four dashboards and AI-assisted visuals that surface patterns without anyone having to go looking for them.

6 nightly loads Β· 00:30–06:00 Β· validation at every step
03

Keep capacity under watch, not on autopilot

Fabric's native monitoring app tracks consumption, storage, and saturation in near real time. We're upfront with the client about what it doesn't do out of the box β€” it doesn't generate automatic alerts on its own β€” and we set up a review cadence with a named owner.

Daily Β· weekly Β· monthly review

Results

What RetailMax sees today, every day

Four dashboards in production, each answering one of the questions that used to take days to resolve. Real screenshots from the live platform β€” click to enlarge.

Confidentiality note

In compliance with our information security policies and the confidentiality commitments made to the client, the company name, along with the data and databases shown in this case study, have been modified and anonymized. The nature and magnitude of the results faithfully reflect the work performed.

4
dashboards in production
2,840
customers segmented
293
VIP customers identified
87
stores with daily visibility
SALES 360
€2.63M
total sales
+14.2%
vs previous year
€1.94K
average ticket

Sales by store, region, and category, with year-over-year comparison that doesn't depend on a date filter.

Real screenshot Β· click to enlarge
STOCK ALERTS
13
SKUs out of stock
€10.97M
stock value
0.3%
stockout rate

Stockouts visible by store and category, with the decomposition tree showing where the risk is concentrated.

Real screenshot Β· click to enlarge
ONLINE VS IN-STORE
€222.58K
online sales
€1.27M
in-store sales
8.48%
online penetration

Channel comparison built on average ticket by category β€” the metric that actually proved reliable, after ruling out a margin metric that wasn't.

Real screenshot Β· click to enlarge
LOYALTY
293
VIP customers
306
No purchase, 90d
19.1%
retention rate

2,840 customers segmented, with AI flagging which profiles are churning β€” the Referral channel and the 30–44 age group carry the highest risk.

Real screenshot Β· click to enlarge

Not just dashboards

Findings nobody had to go looking for

The difference between a report and a business view: the latter flags the problem before you ask.

1.34Γ—

The Referral channel has a 13.5% inactivity rate β€” the channel that acquires the most customers also loses the most.

1.27Γ—

Customers aged 30–44 account for 12.7% of churn risk, the most exposed age segment.

5.8%β†’13.4%

The share of VIP customers ranges from 5.8% in Madrid to 13.4% in the Valencian Community and the Balearic Islands β€” same chain, very different behavior by region.


Deliverables

Every dashboard, with its own report

Beyond the dashboard, each department received an insights report ready to share with leadership β€” no one had to interpret a chart first.

PDF

Sales Report

Performance by store, region, and category, with the year-over-year comparison explained in figures.

PDF

Inventory Report

Stockouts by store and SKU, prioritized by category and impact on lost sales.

PDF

Channel Report

Online vs. physical store, with average ticket as the reliable comparison metric.

PDF

Loyalty Report

2,840 customers segmented, with churn risk factors explained by AI.


What's next

Optimize, don't promise

None of the figures in this section are a contractual promise. They are estimated ranges, based on typical optimization patterns for medallion architectures on Fabric, applied to RetailMax's actual data profile.

LeverWhy it appliesEstimated
Incremental load for POS POS accounts for 83% of the volume and is currently reprocessed in full every night. 15–30% nightly CU
Automated reframe Replaces the manual trigger after each load with an automatic one. Improves freshness
Spark autoscale Avoids over-provisioning capacity on lower-volume nights. 5–15% compute
Partition pruning Reduces the volume scanned per query as historical data grows. 10–20% notebook runtime

The actual savings depend on the implementation and on usage patterns once in production β€” and scaling capacity (F8 β†’ F16) only makes sense when consumption data calls for it, never ahead of demand.

What about your operation?

Does your business look like this?

If your sales, stock, or customer data is scattered across more systems than you can count from memory, you probably recognize the starting point. Let's talk about what your case would need β€” starting, as we did with RetailMax, by finding out what it really costs before building anything.

Email us β†’