Storefront revenue engine
I owned the apparel category's P&L and rebuilt how it allocated attention and how it governed supply — two systems, one outcome: the storefront's discovery lifted sharply.
The result
One star, two systems
The problem
A surface nobody had engineered
- Lowest GMV contribution in the category. The storefront was deprioritized, and buyers defaulted to search instead of curated browsing.
- No performance tracking. Decisions ran on a visits-based proxy, not actual engagement — so nothing could be tuned with intent.
- Top brands leaking value. Price drift against offline distributors, recurring stockouts, and listing gaps eroded conversion and margin.
What I built
Two systems, layered
System 1 runs in two steps — allocation picks the page, ranking orders what's on it. System 2 governs what's eligible to be there at all.
1a · Storefront allocation
Decide which shelf a buyer lands on — by category, by intent, by pool.
- Separated storefront real estate by category (apparel vs footwear), then by buyer intent mode (brand-led vs category-led), then across reliability, value and freshness pools.
- Multiple collection types, each with metric-based eligibility, removal guardrails, a target segment, and one success KPI.
- A multi-cohort buyer-segmentation engine, with primary / secondary / fallback routing via CRM deep-links — this is where cohort personalisation actually happens: it decides which page a buyer is routed to, not the order of products once they're on it.
- A/B-tested layouts — which callouts, creative, and positioning convert for which brand and category — with the winners fed back into the architecture.
Artifact · storefront allocation — which page a buyer lands on
1b · Product ranking
Once a buyer is on a page, decide what order the products sit in — downstream of 1a, not part of it.
- A ranking algorithm — internally "listing algorithm v1" — ran on every page load, on top of whatever page allocation had already put the buyer on.
- Two stages: score on six weighted inputs, re-rank with brand/category/price rules and a reserved quota for new product. Cohort/segment personalisation is not part of this — it already happened upstream, in 1a.
Artifact · the ranking algorithm — listing algorithm v1
2 · Pareto governance
Decide what's allowed to be seen — and protect the margin behind it.
- Product lifecycle — Trial → Optimize → Scale → Throttle, each with a minimum visibility runway.
- Drift detection — price benchmarking against offline, stockout monitoring, new-arrival competitiveness, offer parity.
- Compliance-based visibility — premium real estate and guaranteed traffic tied to price, stock and listing standards.
- Non-negotiable guardrails — margin floor enforced, drift flags pull visibility immediately.
The outcome
The storefront started converting attention
- Star — collection CTR ~2.5×, the joint result of allocation and governance.
- CRM-routed CTR 0.9% → 2.4% from the multi-cohort routing.
- Revenue leakage from top brands −30%, with price competitiveness improved.
- Deployment 10 → 7 days — the CMS couldn't build these pages, so I specced the fix with the product team: page assembly in Retool matched to the wireframe, cuts moved into the CMS so picking a category, buyer affinity, and two or three rules built the list itself (replacing a manual pull-sort-upload per slot), and page cloning so apparel and footwear — same metric shape, different values — could ship in minutes, not a fresh build each time. Led 4 direct + ~12 indirect, +30–40% team efficiency.
The trade-off I made: rule-based governance over ML in v1, and I pulled visibility on margin-negative brands despite their GMV. I protected conversion quality and margin over short-term volume — and documented it, because that call is the judgment, not a side note.