Retail OS — Modular Retail Platform
A modular omnichannel platform for grocery retailers, piloted on a 78-year-old wholesaler with zero digital presence.
Retail OS — one modular platform, from the consumer storefront to the retail-media dashboard, sharing a single design system.
Problem
Gomla Market has run 30+ grocery branches across Egypt since 1948, and today it has no cart, no app, no loyalty program — just a static site and a WhatsApp number. McKinsey's 2026 MENA grocery survey found that shoppers who try Q-commerce apps and go back to buying offline cite high prices, poor UX, and limited range — not slow delivery. So the real problem wasn't "Gomla needs an app." It was: how does a physically-scaled, digitally-absent retailer get online without copying the exact playbook that's already losing shoppers.
Role
Solo, end-to-end. I ran this as a self-directed product design project — strategy, research, UX, and design system work — using Gomla as a real pilot and Spinneys Egypt as a second retailer, brought in specifically to pressure-test whether anything I designed would actually survive a change of brand. I scoped it as 12 sprints inside a hard 2–4 week window, closer to how a lean team gets forced to prioritize than an open-ended side project.
The Hard Decision
The obvious move was to chase Talabat Mart's 20–30 minute delivery. I didn't. The research said the churn problem is price, UX, and assortment — not speed — so I built the strategy around what Gomla actually has (30+ existing branches) instead of a delivery war it can't win, fulfilling from branches instead of building dark stores it doesn't need. The harder call was inside Retail Media: the campaign builder's audience targeting is deliberately locked until a retailer's loyalty data is mature enough to target reliably — shown, not hidden, with the actual reason attached. It's a less impressive-looking MVP than "we do everything Amazon Ads does." I chose it anyway, because targeting without enough loyalty data isn't precision, it's a guess wearing a dashboard.
The campaign builder's audience step — locked, not hidden, with the real reason shown.
What I Built
A four-sided platform — customer, retailer, store, brand — sharing one design system, built around a Weekly Basket feature that turned out to be a real gap, not just a nice idea: reordering and personalization were unconfirmed for every competitor I researched, including well-funded ones. Retail Media got the same fidelity as the consumer app — a full campaign builder, sponsored placements built into the actual product cards shoppers see, and a measurement dashboard that visibly flags which numbers it can trust and which it can't yet. Store Operations and Retail Admin stayed at wireframe depth on purpose: enough to prove the operational thinking (substitution rules, fulfillment queue) without spending the whole timeline polishing screens nobody's hiring me to ship.
Weekly Basket, with partial availability shown honestly rather than glossed over.
Every metric flagged by confidence, not just totals.
Result
There's no real launch, so there are no real metrics — every number in this project is labeled a hypothesis, not a fact, because I'd rather say that plainly than fake a dashboard. What I can actually show: the same core consumer screens, reconfigured for Spinneys Egypt using only color, type, and content swaps — no component was rebuilt. That's the checkable proof this is a platform, not a Gomla-shaped app pretending to scale.
Same design system, same components, different brand — the actual scalability proof.
What I Learned
The hard part was never a single screen — it was resisting the urge to polish every surface equally and instead tiering fidelity the way a real team is forced to. A senior portfolio piece isn't the one with the most screens finished. It's the one where every screen that isn't fully finished has a reason you can say out loud.