Boutique Inventory Management: AI for Size Runs and Reorders

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Boutique Inventory Management: AI for Size Runs and Reorders.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Boutique Inventory Management: AI for Size Runs and Reorders.

Export sales by size and colour, work out each size's share of sales, then set reorder rules by size: reorder core sizes when weeks of cover fall below supplier lead time plus a buffer, leave the edge sizes alone, and mark down broken runs first. AI does the sums and drafts the rules; you check them against your supplier terms.

A boutique's problem is rarely the total amount of stock. It is the wrong sizes: five mediums sold out in a month while an XL has sat untouched since spring. The size run (the set of sizes you hold for one style in one colour) is what you manage, and a spreadsheet plus an AI assistant is enough for a shop that buys a few dozen new styles a season.

Follow me on Instagram@sagnikteaches

Six terms that do most of the work

TermPlain meaningWhere the number comes from
Size runThe sizes you hold for one style and colour, such as XS to XLYour stock list
Size curveThe share of unit sales each size takesYour sales export, this season or last
Sell-throughUnits sold divided by units sold plus units still in stockSales export plus stock on hand
Weeks of coverUnits on hand divided by units sold per weekStock on hand and recent sales
Lead timeWeeks from placing a reorder to stock on the shelfYour supplier
Broken runA colour where two or more of the best-selling sizes are goneYour stock list

Sell-through is defined the same way in Shopify's inventory report, which is a useful check if you use it: items sold divided by items sold plus items still in inventory.

Connect on LinkedInSagnik Bhattacharya

Pull the export: one row per style, colour and size

Start with sales by variant, where a variant is one size-and-colour combination of a style. In Shopify the Analytics section has an Inventory category of reports. "Inventory sold daily by product" gives average items sold per day by variant, "Products by sell-through rate" gives the share sold, and "Inventory remaining per product" estimates the days until each variant runs out, calculated as ending quantity divided by average daily sales. Their tables carry product title, variant title and variant SKU columns, so each size-and-colour combination sits on its own row. Other tills have equivalents, usually called sales by item variant or by SKU. What you want in the end is one row per style, colour and size with units sold by week, units on hand, units on order, cost and price.

Subscribe on YouTube@sagnikteaches

If you relied on Stocky, Shopify's help page says it was no longer available after 31 August 2026, and that purchase orders now live in the Shopify admin: you save a draft, mark it Ordered, then create an inventory transfer to receive the stock. Shopify has pointed merchants to its Sidekick assistant for reorder suggestions. It works from your store's data, so it cannot know a supplier's minimums or lead times unless you tell it, which is why the rules below still matter. The Stocky alternative tutorial covers the purchase-order side in more depth.

Clean the size labels before any forecast

Exports are messier than the shelves. The same size appears under several spellings, and a forecast built on split labels understates every size. Ask the AI to list every distinct size label with a count and propose a mapping, then wait for your approval before it merges anything.

Labels in the exportTreat asWhy
S, Small, sm, "S " (trailing space)SFour spellings of one size
XL, X-Large, Extra LargeXLSame size
One size, OSOSOne-size items have no size curve; forecast them as a single line
S/M, M/LKeep as their own sizesA combined size is not S plus M
8, 10, 12 alongside XS to XLKeep on a separate scaleDo not mix number and letter scales for one style

The slip to catch is the fourth row: if the AI folds "S/M" into "S", size S looks stronger than it is and you reorder the wrong sizes. Also net out returns where your export shows them. A size that comes back often is not selling as well as it looks, and reading return reasons with AI shows how to find out why.

A reorder rule card you can print

Rules beat judgement calls made on a busy Saturday. Write them once, and the AI's job becomes applying them every week without drifting. The thresholds below are starting points to adjust, not industry standards.

  1. Core and edge. After four weeks of sales, a size that takes 15% or more of a style's unit sales is core. The rest are edge.
  2. Check by colour and size. Never by size alone; totals hide the colour that is running out.
  3. Reorder trigger. A core size whose weeks of cover fall below the supplier's lead time plus one week.
  4. Order up to. Five weeks of cover, and never beyond the end of the selling window minus the lead time.
  5. Colour gate. Reorder a colour only if it has sold at least 40% of its original units by week four.
  6. Edge sizes. Never reordered. They are sold through and then marked down.
  7. Cut-off. Stop reordering when the weeks left in the selling window are fewer than the lead time plus four. After the cut-off, a colour with two or more core sizes gone is a broken run and goes to the front of the markdown queue.
  8. Supplier minimums. If the order is under the minimum, wait a week or add to the colour with the best sell-through. Never pad with edge sizes.

One dress, two colours, five sizes, four weeks in

The main worked example uses invented but realistic numbers. A wrap dress arrived in Sage and Ink, 20 units of each, split XS 2, S 4, M 6, L 5, XL 3. Cost is $46 a unit, the price is $115 (a 60% margin), the supplier's lead time is three weeks, the minimum reorder is 6 units for the style, and the selling window is 16 weeks. This is the prompt, with the four-week data as CSV.

You are helping a boutique owner set reorders for one style. Apply these rules exactly:
1 core size = 15% or more of the style's unit sales, otherwise edge
2 check each colour and size separately
3 reorder a core size when weeks of cover is below lead time + 1 week
4 order up to 5 weeks of cover
5 reorder a colour only if it has sold 40% or more of its original units
6 never reorder edge sizes
Facts: lead time 3 weeks, minimum reorder 6 units for the style, 4 weeks of sales so far, 16-week selling window.
For every row show sold per week, weeks of cover, core or edge and the action with a quantity. Show your formula for the first two rows. Do not round until the final quantity. If a rule is ambiguous, say so instead of choosing.

colour,size,bought,sold_4_weeks,on_hand
Sage,XS,2,1,1
Sage,S,4,3,1
Sage,M,6,4,2
Sage,L,5,3,2
Sage,XL,3,1,2
Ink,XS,2,0,2
Ink,S,4,2,2
Ink,M,6,3,3
Ink,L,5,2,3
Ink,XL,3,0,3

A good reply looks like this (illustrative):

ColourSizeSold per weekWeeks of coverCore or edgeAction
SageXS0.254.0EdgeHold
SageS0.751.3CoreReorder 3
SageM1.002.0CoreReorder 3
SageL0.752.7CoreReorder 2
SageXL0.258.0EdgeHold
InkXS0.00no salesEdgeHold
InkS0.504.0CoreHold
InkM0.754.0CoreHold
InkL0.506.0CoreHold
InkXL0.00no salesEdgeHold

The reorder is 8 units, all Sage, which clears the minimum of 6. At $46 each that is $368; if all 8 sell at full price they bring in $920, a $552 margin. Ink holds because it has sold only 7 of its 20 units (35%) and still has four to six weeks of cover in every core size, so the colour gate on the card would block a reorder even if cover dipped.

Look at what the colour split reveals. Add the colours together and size L looks fine: 5 on hand at 1.25 sales a week is 4.0 weeks of cover, which is not below the trigger. Split by colour and Sage L has 2.7 weeks while Ink L has 6.0. Rule 2 on the card exists for exactly this, and it is the check a size-only summary never makes.

The export also tells you how the original buy compared with what customers wanted:

SizeShare of units boughtShare of units sold in 4 weeks
XS10%5.3%
S20%26.3%
M30%36.8%
L25%26.3%
XL15%5.3%

The two edge sizes were a quarter of the buy (10% plus 15%) and about a tenth of sales (5.3% plus 5.3%). That gap is the most useful finding in the export, and the section on next season's buy below turns it into a new size ratio.

Slips to catch in the first draft

The first draft of a reply like this usually needs two corrections. It may divide by three weeks instead of four, which turns Sage S from 0.75 sales a week into 1.0 and the order from 3 units to 4. It may also add a Sage XL "to keep the run complete", which breaks rule 6. Together with the same divisor error on M and L, those slips turn an 8-unit order into 13 units, and the total is where it shows: 13 units against 21 left on a style that has sold 19 in four weeks looks heavy. Ask for the formulas, recompute the first two rows yourself, and compare the order total with what you expect to sell over the lead time plus five weeks.

What a month-end check would have cost

Even a correct application at week four is late. Sage S has 1.3 weeks of cover and a three-week lead time, so it is out of stock for about 1.7 weeks (roughly 1.3 lost sales); Sage M is out for about a week (about 1.0); Sage L for a third of a week (about 0.25). That is around 2.5 units, or about $170 of margin at $69 a unit, lost to the calendar rather than to the rules. Checking weekly from week two would have flagged Sage S and M while they still had cover left.

Weeks five to twelve: weekly checks, holds and the last call

From week five the owner ran the check every Monday, and the first weekly run needed a fix. The export had no on-order column, so Sage S, M and L all showed under two weeks of cover and the draft suggested 11 more units on top of the 8 already on their way. Add an on_order column and define weeks of cover as on hand plus on order, divided by sales per week. With that fixed, and the week-four rates kept (0.75, 1.0 and 0.75 a week for Sage S, M and L), the next five checks ran like this (illustrative):

End of weekSage S / M / L on handOn orderWhat the rule card says
50 / 1 / 13 / 3 / 2Every core size at exactly 4.0 weeks of cover, which is not below the trigger: no order
60 / 0 / 13 / 3 / 2M needs 2. Under the minimum of 6, so hold and look again next week
73 / 3 / 2None (the first order landed)M needs 2 and L needs 2. Four units, still under the minimum: hold
82 / 2 / 1NoneS 2, M 3, L 3: eight units, so order. Due at the end of week 11
91 / 1 / 02 / 3 / 3Back to 4.0 weeks of cover everywhere: no order. Last week before the cut-off

The holds at weeks six and seven look free, because the first order was about to land, and they stopped a run of two-unit orders that the supplier's minimum would have refused anyway. Their real cost shows up in weeks ten and eleven, in the season read-back further down. Week nine was the last call: seven weeks were left, exactly the lead time plus four, so one more order was still allowed if the numbers had asked for it. From week ten the cut-off applied.

A second slip appears once sizes have sold out. If the AI recalculates sales per week from the latest four weeks, a week with an empty shelf counts as a week of no demand. Sage S sold 2 units in weeks five to eight but was on the shelf for only two of those weeks, so its rate was 1.0 a week, not 0.5. Tell the AI which weeks each size was out of stock, or keep the rates you set until a size has four in-stock weeks of new data.

By the end of week twelve the dress had split in two. Sage S, M and L, refilled by the second order, had 1.3 to 2.7 weeks of cover with four weeks of the window left, so they stayed at full price. Ink, held back by the colour gate, sold its last S in week ten and its last M in week eleven: a broken run, with XS 2, L 1 and XL 3 still on the rail. Add the one Sage XL left and seven units go to the markdown ladder further down.

Next season's buy: a size ratio from this season's sales

The edge sizes told the same story all season. Here is the dress at the end of week sixteen, counting full-price sales only across both colours (illustrative), set against the ratio bought for each colour this season and the ratio it points to:

SizeBought per 20 this seasonSold at full priceShare of full-price salesPer 20 next season
XS224.1%1
S41326.5%5
M61836.7%7
L51428.6%6
XL324.1%1

The sum behind the change is short. The new ratio moves three units per colour out of XS and XL and into S, M and L. This season six of the ten edge-size units ended on the markdown ladder or unsold, the last ones at the $58 floor price with $12 of margin, while S and M sold out at $115 in both colours with $69 of margin each. Each unit moved is worth up to $57, so six units across a two-colour style is up to $342 a season, if the extra core units sell as these did.

Make two adjustments before you take the ratio to a supplier. The core shares are understated, because S, M and L sat empty for seven size-weeks between them (a size-week is one size out of stock for one week), so round core sizes up, never down. And pool the curve across similar dresses before you change every order, then ask the AI to turn it into a buy for 36, 40 or 60 units and show its rounding, because a ratio applied to a small buy rounds badly.

Check how the supplier sells the style, too. If the dress only comes in packs of eight in a 1-2-2-2-1 ratio (one XS, two each of S, M and L, one XL), every pack is a quarter edge sizes, the same share as this season's buy, and the ratio cannot change unless you can buy single sizes or top packs up with them. Ask at the next buying appointment. The other half of the buying decision, which styles and colours to back at all, is covered in how boutiques use AI to spot trends before buying stock.

The end-of-season markdown ladder, with a margin floor

A markdown ladder is a timetable of price steps agreed before the season ends, so discounts are not improvised on a quiet afternoon. The margin floor is the lowest price any step may reach: the price that still leaves your minimum margin. Work it out as cost divided by one minus the minimum margin. With a 20% minimum and a $46 cost, the floor is $46 divided by 0.8, or $57.50, which for this dress is exactly half price.

Two rules decide what goes on the ladder. Broken runs and edge sizes go first, whatever their cover. A core size in a complete run goes on only when its weeks of cover are more than the weeks left, which kept Sage S, M and L at $115 until they sold out in week fifteen. The seven units that did go on fared like this (illustrative):

StepWhenPriceMargin a unitUnits soldMargin
25% offWeeks 13 and 14$87$412 (Ink XS, Ink L)$82
40% offWeeks 15 and 16$69$232 (Ink XL, Sage XL)$46
FloorWeeks 17 and 18$58$122 (Ink XS, Ink XL)$24
Off the shop floorWeek 19Trade buyer, sample sale or donationNone1 (Ink XL)None

The ladder earned $152 of margin on six units. Going straight to half price in week thirteen would have cleared the rail sooner but earned at most $84 (seven units at $12), and only if all seven sold. Prices round up to the next whole dollar, so $86.25 becomes $87 and $57.50 becomes $58: rounding down near the floor is how a ladder slips under it.

For the whole range, give the AI the rules and one row per style, colour and size, and have it lay out every step at once:

Plan end-of-season markdowns for the rows below. Rules:
1 margin floor 20%: the lowest allowed price is cost / 0.8. Never go below it.
2 steps: 25% off from week 13, 40% off from week 15, 50% off from week 17, each stopped at the floor
3 round every price up to the next whole dollar, never down
4 broken runs and edge sizes go on the ladder whatever their cover
5 any other row goes on only if its weeks of cover are more than the 4 weeks left
Show the floor and the three step prices for each row, and flag any step the floor stops.

style,colour,size,run,cost,price,on_hand,sold_per_week
Wrap dress,Ink,XS,broken,46,115,2,0
Linen trousers,Stone,M,complete,38,89,4,0.5
Knit cardigan,Oat,XL,edge,30,78,3,0.25
Printed blouse,Navy,S,complete,24,65,2,1

After corrections, the reply should read like this (illustrative):

RowFloorWeek 13Week 15Week 17Note
Wrap dress, Ink, XS$57.50$87$69$58Broken run
Linen trousers, Stone, M$47.50$67$54$48Floor stops step 3; half price would be $44.50
Knit cardigan, Oat, XL$37.50$59$47$39Edge size
Printed blouse, Navy, S$30.00No changeNo changeNo change2 weeks of cover, 4 weeks left: stays at $65

The first draft of a reply like this usually needs three corrections. It works out the floor as cost times 1.2, which is a 20% markup, not a 20% margin: for the trousers that gives $45.60, a 16.7% margin. Test one floor by hand, because the floor times 0.8 should give back the cost. It rounds $47.50 down to $47, a dollar under the floor. And it puts the blouse on the ladder because "every row gets step one", although rule 5 keeps it off. Ask it to re-check each row against the rules and list the rows it changed.

Whatever is still unsold after two weeks at the floor leaves the shop floor rather than going lower. Selling excess stock to trade buyers with AI-drafted offers covers one way out, and finding dead stock and slow movers with AI helps you spot next season's ladder candidates while there is still time to act.

Reading the season back: four numbers per style

When the season closes, put four numbers on one line for each style and compare them with last season, or with a style you ran the old way. For the wrap dress (illustrative):

MeasureHow to work it outWrap dress
Full-price sell-throughUnits sold at full price divided by units bought, reorders included49 of 56, or 87.5%
Core-size empty weeksWeeks a core size of a reordered colour sat at zero, up to week 127 size-weeks, about 5.75 lost sales
Units sold on the ladderMarkdown sales divided by units bought6 of 56, or 10.7%
Left after the floorUnits that went to a trade buyer, sample sale or donation1

The empty weeks are worth splitting. Weeks six and seven came from the late first order and cost about 2.5 sales, the figure worked out above; a check from week two removes most of them. Weeks ten and eleven came from the minimum: the holds pushed the second order to week eight, and with a three-week lead time it landed after S, M and L had run out, costing about 3.25 sales more. If that second group is the bigger one again next season, ask the supplier for a lower minimum or a shorter lead time on reorders, or raise the trigger by a week. Change one threshold at a time, at the end of a season, so you can tell which change did what.

Two habits keep the numbers honest. Recompute two rows of the AI's table in a spreadsheet every week and keep a tally of corrections; if the same slip turns up three weeks running, fix the prompt rather than the output. And read each number against the reason for its rule: if full-price sell-through rose and leftovers fell, the rules are earning their keep; if empty weeks rose, the trigger is too low or the colour gate too strict. Steadier lines such as basics and accessories suit a simpler fixed reorder point, and setting reorder points with AI covers that method.

Questions boutique owners ask about size runs and reorders

How many weeks of sales do I need before trusting a size curve?

Four weeks gives a first read for a fast style, but small numbers wobble: five sales in one size is not a trend. Pool similar styles (all wrap dresses, all knitwear) and last season's curve for the same product type for a steadier picture, and treat early numbers as a reason to look, not a reason to order big.

Should I reorder fashion styles at all?

Only when the style has enough selling window left for new stock to arrive and sell: the supplier's lead time plus about four weeks. Basics and core colours are usually worth reordering; trend-led pieces often are not. Write the cut-off rule on your card and apply it without exceptions.

Can ChatGPT or Claude read my POS export directly?

Usually, if you export a CSV and paste or upload it, but large files can be truncated or mis-summed. Work one style at a time, ask for the formulas it used, and check two rows by hand or in a spreadsheet. Leave customer details out; you only need product, size, colour and quantity columns.

What if I sell online and in the shop from one stock pool?

Use combined sales and combined stock, so weeks of cover reflects both channels. If your systems hold separate counts for each, add them in the export before the AI sees it, or you will end up reordering twice for the same demand.

Further reads

Sources: Shopify's help pages on inventory reports, the Stocky shutdown and purchase orders (checked October 2026).

Want your reorder rules set up properly?

On a 1:1 call we'll look at your sales export, set reorder rules that fit your suppliers' lead times, and build a weekly stock review your team can run without me.

Book a 1:1 call with me