Kaira · womenswear12 months to Sep 2026synthetic corpus

Where the ₹70.0L actually goes.

9,577 of 45,000 orders came back before anyone opened them. Your courier files it as remorse. Your own exchange records say a twelfth of it is a size chart that runs small.

live query
Show me the re-cutHow the attribution worksNo courier integration required
Every reason code on the manifest
REFUSED_COD•NO_LONGER_NEEDED•BOUGHT_ELSEWHERE•DUPLICATE_ORDER•CASH_NOT_READY•AMOUNT_DISPUTE•DAMAGED_TRANSIT•CONSIGNEE_MOVED•ADDR_INCOMPLETE•PIN_UNSERVICEABLE•PREMISES_CLOSED•
REFUSED_COD•NO_LONGER_NEEDED•BOUGHT_ELSEWHERE•DUPLICATE_ORDER•CASH_NOT_READY•AMOUNT_DISPUTE•DAMAGED_TRANSIT•CONSIGNEE_MOVED•ADDR_INCOMPLETE•PIN_UNSERVICEABLE•PREMISES_CLOSED•
Bust•Waist•Hip•Shoulder•Sleeve•Length•Rise•Inseam•Armhole•Neck drop•
Bust•Waist•Hip•Shoulder•Sleeve•Length•Rise•Inseam•Armhole•Neck drop•
The reason code you cannot file

Customer remorse.
Your size chart.

  1. 01↑

    11 reason codes on the manifest, and not one of them can say ran small.

  2. 02⌖

    A fit failure reaches you as REFUSED_COD — owner listed as checkout, marked rarely savable.

  3. 03∅

    So the fix gets budgeted as fraud, freight and address hygiene — and the pattern never changes.

Nobody in this list owns the number. That is the whole problem.

Merchandiser•Pattern maker•Sampling•Photoshoot•Listing ops•Customer care•Finance•
Merchandiser•Pattern maker•Sampling•Photoshoot•Listing ops•Customer care•Finance•
One number, two axes

All you have to do is change the cut

Same ₹70.0L. Same orders. The left column is the axis your courier hands you; the right is the one your returns desk already keeps.

What your courier tells you

REFUSED_COD
₹19.2L
NO_LONGER_NEEDED
₹8.8L
BOUGHT_ELSEWHERE
₹7.9L
DUPLICATE_ORDER
₹7.0L
CASH_NOT_READY
₹5.8L
AMOUNT_DISPUTE
₹5.7L
DAMAGED_TRANSIT
₹4.1L
CONSIGNEE_MOVED
₹3.1L

Every one of these is a delivery outcome. None is a product defect. The biggest bar, REFUSED_COD, is the bucket a customer lands in when the size was wrong and they never told you.

45,000
Orders in the corpus
21.3%
Came back undelivered
₹70.0L
Goods and freight written off
12%
Of it attributable to fit
How it works

Four passes over data you already own

Nothing here asks the shopper for anything, and nothing waits on a courier to add a reason code they have no way to observe.

01
Learn
Read what the brand already produces. No new instrumentation, no courier integration, no tagging pass over historical orders.
Order historyExchange reasonsSize chartsSKU specsCourier codesPose captures
02
Attribute
Per style, take the size-reason exchange rate off delivered orders and carry it onto that style’s RTO at its own cost of goods.
Per-style ratePropensity adjustCOGS + 2-way freightRank by rupees
03
Correct
Convert the leak into a centimetre offset and apply it where the mistake is actually made — at the size picker, before checkout.
Learned offsetSize pickerTry-on posePDP widget
04
Verify
Score the ranking against styles known to run small, then watch the corrected styles’ RTO rate separate from the rest.
Recall vs truthRTO deltaExchange decayHoldout styles
Transparent by construction

See why every rupee was attributed

Every rupee traces to an order

Click any style and the number decomposes into the exchanges that produced it — order id, size ordered, size kept, reason string.

The estimate is deliberately low

A 35% exchange propensity is the conservative end of the range. Raise it and the attributed figure goes up, not down. We show the floor.

Ground truth is never an input

Styles injected with a bad chart are marked in the table only to score the estimator. The attribution never sees the flag.

RTO ORDERSEXCHANGESATTRIBUTIONOFFSET cm→ SIZE PICKER
And while we were in there

40 address clusters returning at 67%

239 customer identities across 1,838 households, 633 orders, ₹3.2L written off — returning at 3.3× the 21% baseline. These are not fit failures. They are the same graph, asked a different question.

RING-024
74%
8 identities · 27 orders · ₹16k
RING-007
71%
9 identities · 31 orders · ₹16k
RING-011
75%
9 identities · 28 orders · ₹15k
RING-022
77%
9 identities · 22 orders · ₹14k
Where to fix it

Twelve styles carry most of it

Ranked by size-attributed cost. The offset is what the widget applies at the product page — a negative number means the garment runs small and the shopper should be sized up.

StyleRTOSize exch.AttributedOffset
Zoya Silk-Blend Midi Dresstruly small5819.9%₹27k−4.0cm
Kiara Silk-Blend Angrakhatruly small5215.6%₹22k−2.7cm
Noor Linen Kurtatruly small7017.5%₹22k−3.5cm
Saanvi Silk-Blend Midi Dresstruly small6412.9%₹21k−2.0cm
Kiara Cotton Anarkalitruly small6012.5%₹20k−2.3cm
Rehana Cotton A-Line Kurtatruly small7311.0%₹19k−1.9cm
Meher Georgette A-Line Kurtatruly small4815.3%₹18k−3.6cm
Kiara Khadi Angrakhatruly small6710.0%₹15k−1.9cm
Anaya Chanderi Straight Kurtatruly small4912.4%₹15k−2.6cm
Noor Georgette Anarkalitruly small4118.2%₹14k−3.7cm
Saanvi Linen Straight Kurtatruly small7313.3%₹13k−2.2cm
Meher Muslin Angrakhatruly small5417.4%₹12k−2.5cm
Try on the worst offender

Truly small is ground truth from the generator, shown only to validate the estimate. The model never sees it.

FAQ

The obvious objections

No. Everything on this page comes from a synthetic corpus of 45,000 orders generated for this project, where a known set of styles was deliberately given a bad size chart. That is the point: it is the only way to score the attribution against an answer key. On your catalogue the same pipeline runs, minus the answer key.

Because most shoppers who receive the wrong size never raise an exchange; they refuse the parcel, or keep it and never buy again. Counting only the exchanges you can see gives a ₹3.0L floor. Dividing by an assumed 35% propensity gives ₹8.5L. Both numbers are on the page, and the floor is defensible on its own.

It is a deliberately conservative assumption, not a measurement. Published apparel returns research puts the share of dissatisfied buyers who actually initiate a return well above that in most categories. If your real propensity is higher, the attributed figure shrinks; if it is lower, it grows. We picked the end of the range that makes our own case weaker.

Nothing. That is the design constraint. The attribution runs entirely on order history, exchange records and size charts — data the brand already owns. No new reason codes, no manifest changes, no integration.

It shifts the recommendation at the size picker on the product page, and feeds the try-on pose estimate. A −4.0cm offset on a style means the size chart overstates the garment by four centimetres at the binding measurement, so the shopper is guided up.

Against this corpus, ranking styles by attributed cost recovers 100% of the styles that were injected with a bad chart, and the total attributed sits under the true injected cost. Recall is the number worth watching; a ranking that surfaces the wrong styles wastes a pattern-making cycle.

Stop budgeting against reason codes.
Start reading your own returns.

The join takes an afternoon. The pattern correction takes a season. The freight you stop paying for compounds.