Install
openclaw skills install @leooooooow/discount-optimizerCalculate optimal discount levels based on unit cost, conversion targets, and inventory velocity so promos move product without destroying margin.
openclaw skills install @leooooooow/discount-optimizerDiscounts are a finance decision wearing a marketing costume. Every point off the price comes straight out of contribution margin, and a discount only pays for itself if it lifts unit volume by more than the margin it gives away. This skill builds discount levels from the unit economics upward — unit cost, platform fees, and contribution margin — then computes the break-even volume lift each depth requires, chooses a promo mechanic that fits the goal, and stress-tests against inventory velocity, so promotions move product without quietly destroying profit.
| Decision | Strong | Acceptable | Weak |
|---|---|---|---|
| Discount depth basis | Sized off contribution margin and a break-even lift target | Sized off gross margin, fees estimated | Taken off retail price with no margin math |
| Margin floor | Hard post-promo floor set (e.g. ≥15% CM) and enforced | Soft floor, occasional exceptions | "Just don't sell below cost" |
| Break-even volume lift | Computed via lift = d/(m−d) and compared to realistic demand | Rough rule of thumb (e.g. "needs ~2x") | Assumed any discount increases total profit |
| Promo type choice | Mechanic matched to goal (acquisition vs clearance vs AOV) | Default % off used everywhere | Whatever competitor is running |
| Inventory-velocity trigger | Discount depth scales with days-of-cover and holding cost | Discount when stock "feels old" | Same depth regardless of age/velocity |
| Platform-fee accounting | Commission + payment + affiliate + shipping all netted before margin | Commission only | Fees ignored ("they're small") |
| Stacking rules | Max stacked depth capped; coupons + auto-discount modeled together | One promo at a time enforced manually | Uncapped stacking, shopper finds the floor |
| Anchor price integrity | List price held; discounts time-boxed with clear end date | Occasional sales, list mostly stable | Permanent "sale" price = the real price |
| Promo end + exit | Defined end date and post-promo price plan | Vague "couple of weeks" | Open-ended, becomes the new normal |
Assemble unit economics. Pull selling price, COGS (landed unit cost including inbound freight and duties), and every variable cost per order: platform commission, payment processing, fulfillment/pick-pack, outbound shipping (or the shipping subsidy you eat), affiliate/creator commission, and returns reserve. Compute contribution margin in dollars and as a percent of price. This number — not gross margin — is what a discount eats into.
Set the margin floor and the goal. Decide the minimum acceptable post-promo contribution margin (a dollar and a percent). Separately, name the objective in one sentence: acquire new customers, raise AOV, clear specific inventory, defend share, or hit a launch-velocity threshold. The floor caps how deep you can go; the goal decides which mechanic and which success metric matter.
Compute the break-even volume lift for a candidate discount. Use required-lift % = d / (m − d), where m is contribution margin as a percent of price and d is the discount as a percent of price. This is the additional unit volume needed just to hold total contribution flat. If the required lift exceeds what the channel can plausibly deliver, the discount is too deep — shrink d or change the mechanic.
Choose the promo mechanic. Match the mechanic to the goal: % off for broad pull, $ off for high-ticket clarity, BOGO/B2G1 to move volume while protecting per-unit price perception, bundles to raise AOV and blend margin, spend thresholds to lift basket size, free-shipping thresholds to nudge AOV cheaply, flash/limited-time to create urgency without permanent markdown. See the promo-mechanics guide for fit and risks.
Factor platform fees, commissions, and coupons. Re-net the post-discount price through the full fee stack — commission is charged on the discounted price, but creator/affiliate commission and payment fees also apply, and coupons or platform vouchers may stack. Recompute contribution margin after the discount and after fees; that is the real m that must clear the floor. On TikTok Shop especially, model commission + voucher + affiliate together.
Stress-test against inventory velocity. Compare current days-of-cover (units on hand ÷ daily sell-through) to your target. For fast movers, prefer shallow discounts or none — you'll sell through anyway. For slow movers or aging stock, weigh the discount against the carrying cost of holding (capital, storage, obsolescence/markdown risk); deeper clearance is justified when holding cost over the expected sell-through window exceeds the extra margin a shallower discount would preserve.
Finalize, guardrail, and monitor. Lock the depth, mechanic, max stacked depth, start/end dates, and post-promo price. Set guardrails (margin floor, inventory cap, spend cap). After launch, track realized lift vs the break-even lift, blended contribution margin, sell-through, return rate, and new-vs-returning mix — and cut the promo if it's below break-even lift with no strategic payoff.
Unit economics (before any discount):
Total variable cost = 11.00 + 2.00 + 0.80 + 4.50 + 1.20 = $19.50
Contribution margin (CM):
So m ≈ 51% of price flows to contribution. Good headroom.
Break-even volume lift for a 20% discount:
Using required-lift = d / (m − d) with d = 0.20, m = 0.5113:
required-lift = 0.20 / (0.5113 − 0.20) = 0.20 / 0.3113 = 0.6425 → ~64.3%
You must sell ~64% more units just to keep total contribution flat. Verify by units:
Note the fee-driven nuance: the headline formula (which assumes fixed per-unit cost) says +64%; once you account for commission/payment scaling down with the lower price, the true break-even is a bit gentler at +54%. Either way, the promo needs roughly half-again to two-thirds more units to break even on profit. If TikTok Shop demand for this SKU can realistically jump 60%+ during a boosted/affiliate push, the 20% off is defensible; if a sale typically lifts units only 20–30%, this discount loses money and you should go shallower (e.g. 10%) or switch to a bundle.
Sanity check at 10% off (d=0.10, m=0.5113): required-lift = 0.10 / 0.4113 = 0.243 → ~24%. Far more achievable.
Situation: A seasonal accessory, 400 units on hand, selling only ~10 units/week → days-of-cover ≈ 400 ÷ (10/7) = 280 days of stock. The season ends in ~12 weeks; after that, demand collapses and you'll likely liquidate at a deep loss or write it off.
Unit economics:
Holding cost of doing nothing. Carrying cost ≈ capital + storage + obsolescence risk. Assume an annual carrying rate of 25% of unit cost (3% capital + 7% storage/handling + 15% obsolescence/markdown risk). Per unit per year = 0.25 × $7.00 = $1.75 → ~$0.034/week. Over 12 weeks that's only ~$0.40/unit in pure carrying — small. The real cost is obsolescence: units unsold at season end realize maybe $3.00 salvage (a clearance dump or write-down to near scrap), versus $7 cost — a ~$4.00 loss per unsold unit, plus the lost contribution you'd never recover.
The trade-off. At current velocity you'll sell ~120 of 400 units in 12 weeks, leaving ~280 units facing salvage. Expected end-state if you do nothing:
Now model a 30% clearance discount. New price = 24 × 0.70 = $16.80. Variable cost drops slightly with the lower price (commission/payment are %): assume $5.40. New CM$ = 16.80 − 7.00 − 5.40 = $4.40/unit (CM% = 26.2%, still well above zero contribution).
Required-lift on the formula (d=0.30, m=0.458): 0.30 / (0.458 − 0.30) = 0.30 / 0.158 = 1.90 → +190% just to break even on contribution alone. In a vacuum that looks brutal. But the clearance math is different — you're racing a salvage deadline, not protecting steady-state profit. Suppose 30% off triples velocity to ~30 units/week, selling ~360 units over 12 weeks:
Verdict: the deep discount nets ~$1,424 vs ~$200 by converting near-worthless future salvage units into positive (if thin) contribution now, before obsolescence destroys them. The break-even-lift formula alone would have rejected the 30% cut; the holding-/obsolescence-cost lens correctly justifies it. The rule: for aging inventory, the relevant comparison is discounted contribution now vs salvage value later, not discounted contribution vs full-price contribution.
d/(m−d).m, and remember commission is charged on the discounted price.d/(m−d) break-even formula with worked lookup tables, markdown-vs-margin confusion, fee/commission accounting, blended bundle margin, and holding-cost reasoning.