Which SKUs get an AI video first? Rank by profit inside a fixed budget

Rank SKUs by 30-day gross margin and fill a fixed video budget at Sume prices: $0.625 Wan or $1.89 Seedance 2 clips plus $0.30 for captions and Timeline.

4 min readSume
All posts

When the video budget is smaller than the catalog, give the first clips to the SKUs that earn the most margin, not the ones that photograph best. A simple rule is to rank by 30-day gross margin (unit margin times units sold) and fund from the top until the money runs out. Cost per SKU is fixed arithmetic from Sume prices read 2026-10-05, so the cut-off is exact, not a guess.

Cost per SKU, from Sume prices

A 5 s, 720p, 9:16 clip costs $0.625 on Wan 3.0 or $1.89 on Seedance 2, per the Sume video price catalog (videos docs). Add $0.20 for a caption job (captions) and $0.10 for one Timeline render of under a minute (Timeline). That gives a unit cost of $0.925 on Wan or $2.19 on Seedance 2.

Unit cost and SKUs a $10 budget funds, Sume prices read 2026-10-05
TierClipCaptions + TimelineUnit costSKUs in $10
Wan 3.0 720p 5 s$0.625$0.30$0.92510
Seedance 2 720p 5 s$1.89$0.30$2.194

The ranking script

The script below holds six sample SKUs with invented unit margins and unit counts; replace them with your own sheet. It sorts by margin times units and stops when the next SKU would exceed the budget. It runs as plain Python with no dependencies.

SKUS = [  # (sku, unit margin USD, units sold last 30 days)
    ("mug-red", 6.0, 900), ("tote-navy", 9.0, 300), ("candle-xl", 14.0, 120),
    ("scarf-wool", 22.0, 80), ("lamp-desk", 31.0, 40), ("card-set", 2.5, 2000),
]
COST = {"wan-720-5s": 0.625, "seedance2-720-5s": 1.89}  # Sume billable USD


def plan(budget, tier):
    unit = COST[tier] + 0.20 + 0.10  # clip + captions + Timeline
    ranked = sorted(SKUS, key=lambda s: s[1] * s[2], reverse=True)
    picked, spent = [], 0.0
    for sku, margin, units in ranked:
        if spent + unit > budget:
            break
        picked.append(sku)
        spent += unit
    return picked, round(spent, 4)


if __name__ == "__main__":
    for tier in COST:
        print(tier, plan(10.0, tier))

Reading the output

With the sample sheet, the order is mug-red ($5,400 margin), card-set ($5,000), tote-navy ($2,700), scarf-wool ($1,760), candle-xl ($1,680) and lamp-desk ($1,240). The Wan tier funds all six sample SKUs for $5.55, though a $10 budget could cover ten. The Seedance 2 tier funds four SKUs at $2.19 each, $8.76 in total, so the first four of that list get the better clip and the last two wait.

The sort is deliberately blunt. It ignores whether a SKU already has a good video, seasonality, and how often the photo fails in motion. Treat the ranking as the default order and override it for items you know are launch-critical.

  • Re-run the plan after the pilot, using the real retake rate to raise the unit cost.
  • Spend the leftover on a second clip for the top two SKUs rather than a weaker clip for the tail.
  • Log actual spend per SKU from the usage ledger so next season's unit cost is measured.

For where this fits in the calendar, see the four-phase Black Friday plan; for adding media cost to channel profit, see profit per SKU across channels.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume