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.

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.
| Tier | Clip | Captions + Timeline | Unit cost | SKUs in $10 |
|---|---|---|---|---|
| Wan 3.0 720p 5 s | $0.625 | $0.30 | $0.925 | 10 |
| Seedance 2 720p 5 s | $1.89 | $0.30 | $2.19 | 4 |
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
- Who said what without speaker labels: STT per track, merge by time
Sume STT has no diarization. If each speaker has an own track, transcribe each and merge words by start time into labeled turns. Python, 1 cent a minute.
- AI Shorts lost views after Oct 2, 2026? Diagnose first
Not every drop is the originality update. A diagnosis order for AI Shorts: copied clips, sameness, labels, then ordinary causes, using only what YouTube says.
- Why TTS plus lip-sync avatars feel fake: Griffin's 2.4% vs 48%
Tavus says its older avatar stack passed as human 2.4% of the time and Griffin-Lite 48%. Here is what that means for TTS-then-lip-sync clips.
- Win-back video for lapsed customers: 30-second avatar script, cost
A win-back email clip made with a Sume avatar: what to say in 30 seconds, what not to promise, and the cost per lapsed account on standard, plus and max.
Written by Sume