Skip to content

A fashion marketplace that holds up at peak

A multi-seller fashion marketplace built around fast browsing, smart filtering, and a checkout that keeps up with high-volume drops.

RackmereSearch 900 labels6IO
Coats & jackets

1,842 pieces from 214 sellers · showing 14

Maison RevelEU 38 · UK 10Clear all
Sort: Match for you

Filters

2 on
Size · one scale
EU 34 · UK 66EU 36 · UK 812EU 38 · UK 1014EU 40 · UK 1213EU 42 · UK 149
Seller
Maison Revel26Aldous Row31Hollin & Vane27Studio Maréchal19Pellow Studio8
Colour
One size scaleEvery seller’s size chart is converted at upload, so a UK 10 finds every UK 10.
Drop · 19:00
Maison RevelBelted wool trench£540.00In UK 10
Maison RevelWide-lapel blazer£420.00In UK 10
Last one in UK 10
Maison RevelSingle-breasted overcoat£610.00In UK 10
Drop · 19:00
Maison RevelWaxed field jacket£360.00In UK 10
Maison RevelCollarless wool coat£575.00In UK 10
Drop · 19:00
Maison RevelBoxy check jacket£385.00In UK 10
Last one in UK 10
Maison RevelCar coat£520.00In UK 10
Maison RevelQuilted liner jacket£295.00In UK 10

The brief, in specifics

Industry
E-commerce & Retail
Duration
20 weeks
Cooperation model
Fixed price, phased
Services
Marketplace platformSearch & recommendationsCheckout
Integrations
ShopifyStripeKlaviyoShipStation
Technologies
Next.jsTypeScriptTailwind CSSAlgolia SearchAWS LambdaStripe Connect
Team
1 Project lead1 Product designer2 Frontend engineers1 Backend engineer1 QA engineer

Client name withheld under NDA. Engagement details are shown to the extent our agreement permits.

The problem

The hard problem

Listings from different sellers clashed, filtering rarely returned relevant results, and checkout struggled under peak flash-sale traffic.

Each seller invented their own sizing and attribute names, so a filter for a UK 10 missed most of the catalog and shoppers had learned not to filter. At the other end, checkout decremented stock after creating the payment intent, so during a drop the same unit could be sold several times and the reconciliation happened by refund.

We standardized the seller listing flow, added AI-assisted recommendations and filtering built on real shopping behavior, and hardened checkout for high-traffic drops.

Introduction

The system we were asked to build

Seller listings were inconsistent and checkout buckled during drops. We standardized the catalog and rebuilt discovery and checkout for scale.

A marketplace with about nine hundred sellers, growing by drops: limited releases that put a season's traffic into ninety seconds. Two of the previous four drops had failed at checkout, publicly, and the brands running them had started asking for guarantees. The engagement covered both halves of that: the catalog that made discovery poor, and the checkout that fell over when discovery worked.

Systems Integration

The solution

How the pieces fit

  1. 01

    Standardized seller onboarding and catalog structure

    Listings validate against one taxonomy at upload, with vendor size charts converted to a common scale, and an unmappable listing is refused at the door.

  2. 02

    Added AI recommendations trained on browsing and purchase signals

    Behavior signals were only usable once the catalog was standardized, so this ran after the taxonomy instead of in parallel with it.

  3. 03

    Rebuilt filtering around the attributes shoppers actually use

    Filters were rebuilt on the attributes shoppers actually use, which the standardized catalog made possible. The previous set filtered on fields most listings lacked.

  4. 04

    Load-hardened checkout for flash-sale traffic

    Checkout takes an atomic stock reservation before the payment intent, behind a queue that admits at a fixed rate, load-tested against a real drop's traffic shape.

Flash-Sale Resilient Checkout

Engineered to process tens of thousands of concurrent checkouts during high-demand product drops.

Drops put tens of thousands of people on one SKU in the same second. Inventory is decremented in Redis with an atomic reservation before the payment intent is created, so the stock check and the sale can't drift apart, and reservations expire if checkout is abandoned. The queue admits at a fixed rate instead of accepting everyone, and browsing stays fully cached so only the buying path touches origin.

What shipped
  • Atomic Redis reservation before the payment intent
  • Expiring holds so abandoned carts release stock
  • Rate-admitting queue; browsing served from cache
Autumn Outerwear drop

Opened 19:00 · first ten minutes · buying path only, browsing served from cache

Live · 19:10Thu 17 Sep 2026
Shoppers in the drop18,402queue and buying path
Checkouts a minute41219:09–19:10, reaching payment
Reached payment8,802every one accounted for →
Checkout success99.6%8,767 completed of 8,802
Units sold twice0reserved before charged

Reaching payment, minute by minute

queue admission 1,500/min · illustrative
admission rate
1,480
1,460
1,320
1,040
860
690
580
510
450
412
19:0019:0119:0219:0319:0419:0519:0619:0719:0819:09

Order of operations on the buying path

reserve, then charge
1. Queue admits at a fixed rateNot everyone at once: 1,500 a minute onto the buying path. Browsing never queues; it is served from cache.
2. Stock reserved atomicallyOne Redis operation checks and decrements the unit. If it's gone, the shopper hears it here, before any card.
3. Then the payment intentCreated only for a reserved unit, so a stock check and a sale can't drift apart.
4. Holds expireAn abandoned checkout gives its unit back after 10 minutes.

Every checkout that reached payment

19:00–19:10
StageCheckouts
Reached payment · stock reserved8,802
Completed · order written, stock sold8,767
Card declined by issuer · hold released21
Authentication not finished · hold expired14

Maison Revel in this drop

5 pieces · 1 held back by the standard
In stock41Sold6Left35Double-faced wool coat · not listed

Latest on the buying path

live
19:10:04RM-88214 · hold taken · Belted wool trench19:10:03RM-88197 · payment completed · 2 sellers19:10:01RM-87650 · hold expired · unit released
On screen

Operations through the first ten minutes of the Autumn Outerwear drop: 18,402 shoppers, 412 checkouts a minute, and a stage table that accounts for every one of the 8,802 that reached payment, 99.6% of them completed, with stock reserved before any card was charged.

RackmereSearch 900 labels6IO
Previewing as a shopper from Maison Revel Studio6 of 8 photographs liveNeeds work · score 0.88
in reviewin review
Tailoring · Jackets · MR-0388Maison RevelWide-lapel blazer£420.00
Size · converted from the label’s own chartLabel says “Taille 2”EU 36 · UK 8EU 38 · UK 10EU 40 · UK 12EU 42 · UK 14
Garment measurements · EU 38 · UK 10Filed the same way by every sellerChest96 cmShoulder41 cmSleeve62 cmLength71 cm
Add to bag

Dispatched by Maison Revel. Mix it with pieces from any other label: one bag, one payment.

Worn with this

From what shoppers viewed and bagged together · your slate, precomputed overnight · read at request
Maison RevelWide-leg trouser£365.00Bagged together
Cairn & ThistleCashmere scarf£120.00Viewed together
Pellow StudioCanvas tote£240.00Bagged together
Aldous RowDouble-breasted coat£935.00Viewed together
Cairn & ThistleLambswool crew-neck£190.00Bagged together

AI-Powered Recommendation Feed

On screen

The Maison Revel wide-lapel blazer at £420.00, previewed from the Studio: six of eight photographs live, the measurements every seller now files identically, and a row of pieces other shoppers viewed and bagged with it, read from a slate built overnight.

Personalized product recommendations based on shopper browsing and what gets carted together.

Recommendations are built from viewed-together and carted-together behavior instead of category tags, which is what surfaces the pairing a merchandiser wouldn't have thought to make. The model runs nightly on Lambda and writes a precomputed slate per shopper, so the feed is a lookup at request time. Cold-start shoppers get trending-in-your-size in place of a generic bestseller list.

What shipped
  • Viewed-together and carted-together signals, not category tags
  • Nightly precompute; request time is a lookup
  • Cold start falls back to trending in your size

Self-Serve Seller Catalog Studio

Standardizes product metadata, sizing, and multi-vendor inventory uploads.

Sellers were each inventing their own sizing and metadata. The studio validates against one taxonomy on upload, converts vendor size charts into a common scale, and refuses a listing that can't be mapped before it can pollute search. Bulk CSV imports are dry-run first and report exactly which rows would fail, so a seller fixes the file instead of the catalog.

What shipped
  • One taxonomy validated at upload; unmappable listings refused
  • Vendor size charts converted to a common scale
  • Dry-run bulk imports that report failing rows before writing
Listing quality

Every listing checked against the one catalog standard · unmappable listings are refused, not published

Dry-run an importThu 17 Sep 2026
Ready of all listings71 of 8471ready6needs work7blockedOuterwear22Tailoring18Knitwear26Accessories18

Not ready

13 of 84 · blocked first · score out of 0.92
All 84Not ready 13Blocked 7Needs work 6
PieceStatusWhat is missingStandard changedScore
Double-faced wool coatMR-0431 · OuterwearBlockedSleeve measurement missing+1Taille 2 → EU 38 · UK 100.61
Cropped bouclé jacketMR-0427 · OuterwearBlockedSize “S/M” cannot be mapped to the common scaleNo mapping0.74
Merino roll-neckMR-0519 · KnitwearBlockedCategory “Tops & more” is not in the taxonomy2 → EU 38 · UK 100.72
Cable-knit cardiganMR-0522 · KnitwearBlockedPhotographs 3 of 8, 4 needed to list+1Taille 2 → EU 38 · UK 100.75
Pleated wool trouserMR-0364 · TailoringBlockedInside leg measurement missing+1W28 → EU 38 · UK 100.68
Grained leather toteMR-0611 · AccessoriesBlockedHandle drop measurement missing+1One size → One size0.67
Silk twill scarfMR-0634 · AccessoriesBlockedCategory “Misc” is not in the taxonomy+290 × 90 → One size0.63
Wide-lapel blazerMR-0388 · TailoringNeeds workPhotographs 6 of 8Taille 2 → EU 38 · UK 100.88
Single-breasted overcoatMR-0409 · OuterwearNeeds workCare instructions missingTaille 2 → EU 38 · UK 100.87
Ribbed lambswool vestMR-0507 · KnitwearNeeds workPhotographs 7 of 8+12 → EU 38 · UK 100.83
Mohair crew-neckMR-0514 · KnitwearNeeds workColour “Rouge 04” not on the standard palette2 → EU 38 · UK 100.85
Wide-leg trouserMR-0371 · TailoringNeeds workPhotographs 5 of 8W28 → EU 38 · UK 100.86
Cashmere scarfMR-0640 · AccessoriesNeeds workColour “Biscuit” not on the standard palette+1One size → One size0.80

Last import · dry run

16 Sep 2026, 11:42
revel-autumn-rails.csv84 rows · 77 would write · nothing written yet
7 rows would be refused
row 31Sleeve measurement missingrow 38Size “S/M” cannot be mapped to the common scalerow 47Category “Tops & more” is not in the taxonomyrow 52Photographs 3 of 8, 4 needed to listrow 63Inside leg measurement missingrow 71Handle drop measurement missingrow 80Category “Misc” is not in the taxonomy
Size charts converted on upload
Taille 1 EU 36 · UK 8Taille 2 EU 38 · UK 10Taille 3 EU 40 · UK 12W28 EU 38 · UK 10S/MNo match · refused
On screen

The seller's listing quality screen: 71 of 84 listings ready, six needing work and seven blocked, each row naming what is missing and how the label's own size was converted, beside a dry-run import that lists the rows it would refuse before writing anything.

Process

Phase by phase

  1. Phase 1: Catalog & Drop Concurrency Audit

    Marketplace Infrastructure Analysis

    Audited seller catalog inconsistencies and flash-sale traffic spikes causing checkout bottlenecks during high-demand releases.

    • Catalog Standardization Spec
    • Traffic Spike Audit
    • Marketplace UX Benchmark
  2. Phase 2: Recommendation & Search Engine

    AI Personalization & Algolia Search

    Standardized seller product attributes and integrated AI recommendations trained on shopper browsing behavior and purchase history.

    • Standardized Catalog Schema
    • Algolia Search Layer
    • Recommendation Engine
  3. Phase 3: High-Traffic Checkout Hardening

    Serverless Scale & Stripe Connect

    Hardened checkout pipeline with AWS Lambda auto-scaling and Redis queueing for high-volume drops across multi-seller carts.

    • Flash-Sale Checkout Pipeline
    • Stripe Connect Engine
    • Concurrency Test Suite
  4. Phase 4: Seller Onboarding & Drop Launch

    Multi-Seller Rollout & Peak Performance

    Rolled out updated marketplace platform to 150+ sellers ahead of peak holiday drop season, logging 99.6% checkout success.

    • Seller Studio Tools
    • Drop Performance Dashboard
    • Production Sign-off
RackmereSearch 900 labels6IO
Your bag6 pieces from 4 sellers · one payment · each seller paid separately All 6 reserved for you · 8:41 left

Pieces by seller

Stock held for each piece before payment
Maison Revel· ships separately£785.00Wide-lapel blazerEU 38 · UK 10 · qty 1Reserved£420.00Wide-leg trouserEU 38 · UK 10 · qty 1Reserved£365.00
Aldous Row· ships separately£935.00Double-breasted coatEU 38 · UK 10 · qty 1Reserved£935.00
Cairn & Thistle· ships separately£310.00Lambswool crew-neckEU 38 · UK 10 · qty 1Reserved£190.00Cashmere scarfOne size · qty 1Reserved£120.00
Pellow Studio· ships separately£240.00Canvas toteOne size · qty 1Reserved£240.00

Payment

one charge · four transfers
Goods£2,270.00Delivery£18.00Total£2,288.00
How the goods are split
Maison Revel2 pieces · own transfer£785.00Aldous Row1 piece · own transfer£935.00Cairn & Thistle2 pieces · own transfer£310.00Pellow Studio1 piece · own transfer£240.00

Commission of 8% is taken from each seller’s payout, not added here. A return moves only that seller’s line.

Pay £2,288.00
On screen

One bag, six pieces, four sellers: £2,270.00 of goods plus £18.00 delivery, every piece reserved before payment, and the panel that splits the goods into the £785.00, £935.00, £310.00 and £240.00 each seller is separately paid.

What it carries now

99.6%

Peak checkout success

+24%

Add-to-cart rate

−55%

Seller onboarding time

Peak checkout success is completed orders over attempted orders during drops specifically, not across all trading. Add-to-cart is measured per session on the browse surfaces the recommendations changed. Seller onboarding time is from account creation to first published listing, median across sellers onboarded after launch.

Client name withheld under NDA. Figures are approximate, drawn from the engagement’s own reporting.

What the architecture settled

  • Flash-sale checkout hardening achieved 99.6% transaction success during high-volume drops.

    The success rate came from reserving before charging, not from more capacity: the old order of operations would have failed at any scale, just less visibly.

  • AI product recommendations quietly lifted add-to-cart rate by +24%.

    Recommendations worked because they were quiet: placed where a shopper was already browsing, never interrupting, which is why the lift showed up in add-to-cart and not in clicks.

  • Standardizing seller catalog onboarding cut seller setup time by 55%.

    Onboarding halved because the dry-run import reports failing rows before writing: sellers used to fix a catalog when they could have fixed a spreadsheet.

How the work was run

A cross-functional team of 5 worked on a fixed price, phased basis over 20 weeks, covering Marketplace platform, Search & recommendations, Checkout. We ran a standing mid-week checkpoint and written decisions in place of status meetings. Nothing shipped without a live demo first.

The catalog work went to the top forty sellers first, with the team sitting in on their listing process, because sellers route around a taxonomy imposed without that. Checkout was rebuilt against a load harness that replayed a real drop's traffic shape instead of a flat curve: the failure mode was always the spike, never the volume.

One listing, one standard

A listing that can't be mapped is refused, and the seller is told exactly why.

Three of Maison Revel’s listings as they were filed: one ready, one short of photographs, and the coat the standard held back from the drop. Switch fields off and on to see what makes a listing ready, what only needs work and what blocks it. Use the arrow keys once a tab is focused.

Filed in full. Switch a field to Missing or Filed, or change the photograph count.

Maison Revel · OuterwearBelted wool trenchMR-0412
  • Photographsunder 4 blocks · under 8 needs work8 of 8
  • Category in the taxonomyblocks“Coats” mapped
  • Size on the common scaleblocks“M” → EU 38 · UK 10
  • Garment measurementsblocksChest, shoulder, sleeve, length
  • Fabric compositionneeds workFiled
  • Color on the standard paletteneeds work“Camel”
  • Care instructionsneeds workFiled
Against the standard
ReadyPublished, found by every filter it should be, ranked at full weight.
Search score0.92 of 0.92 filed in fullWeights are illustrative; the rule is the one the Studio applies.
Why
  • Every field the standard asks for is filed.
What a shopper gets
  • On the shop and in dropsYes
  • Found by the EU 38 · UK 10 filterYes
  • In search, ranked at 0.92Yes

Why a listing is refused instead of let through: a filter for a UK 10 used to miss most of the catalog because each seller named sizes their own way. A listing that can't be mapped would put that back, so the standard stops it at upload and says exactly what's missing.

Architecture

From a drop opening to an order every seller is paid for

The old checkout created the payment intent first and took the stock afterward, so during a drop one unit could be sold several times and reconciled by refund. The order is now the other way around, proved against a load harness that replayed a real drop’s traffic shape instead of a flat curve.

  1. 01 · Trigger
    A drop opensA season's traffic arrives in ninety seconds. Browsing stays fully cached, so only the buying path touches origin.
  2. 02 · Queue
    Rate-admitting queueShoppers are admitted onto the buying path at a fixed rate, never all at once, on AWS Lambda capacity that scales out.
  3. 03 · Engine
    Atomic stock reservationInventory is decremented in Redis in one atomic step before the payment intent exists, so the stock check and the sale can't drift apart.
  4. 04 · State
    Expiring holdsA reservation that isn't paid for expires and its unit goes back on sale, so an abandoned checkout never strands stock.
  5. 05 · Delivery
    Multi-seller paymentOne charge for a bag filled by several sellers, split through Stripe Connect so each seller is paid for their own pieces.

What a brand running a drop needs to know

Drop integrity: no overselling, no stranded stock

Nobody is charged for stock that isn't held

The unit is reserved atomically before the payment intent is created, so the stock check and the sale can't drift apart and nothing is reconciled by refund afterward.

Abandoned checkouts give stock back

Reservations expire when a checkout is abandoned, so a shopper who walks away mid-drop doesn't quietly take a piece off sale for everyone else.

Tested against the spike, not the average

Checkout was rebuilt against a load harness replaying a real drop's traffic shape, behind a queue that admits at a fixed rate, because the failure was always the spike.

Running limited drops across hundreds of sellers? Scope your build in 3 minutes.

Scope your build
Have a project?

Let's talk

Running a large platform, shaping a first MVP, or getting a product ready for a funding round? Tell us where you are. We'll shape the process around it, and stay with you after launch.