2026-05-15 · Quarterly Range Review

The Locked Range

61 SKUs · time-weighted share-of-revenue · re-run quarterly
61
Locked SKUs
Across 10 categories
58%
Last 30 days
R305k of R523k
72%
Last 12 months
R4,429k of R6,122k
68%
All-time
R5.85M of R8.63M
Methodology + cut criteria

Brand: Premium intimates — primarily women's, with a small men's underwear range. Anything she wears behind the bedroom door. Out: swimwear, festival, padel, dresses, men's pajamas, maternity, cotton lounge.

Metric: weighted_share = Σ(monthly_share × decay^month) / Σ(decay). Most recent month carries 6× the weight of 12 months ago. Smooths Mar/Apr trough, captures Feb V-Day peak.

Cut: Top products by weighted share until cumulative reaches 85% of catalog weighted share, plus all NEW launches under 90 days (probation), plus 2 operational exceptions (KAAL Gift Box, Crotchless Stockings).

Trend signals: r3 = revenue last 3 months · m3 = months 4–6 · o6 = months 7–12. Acceleration triggers when r3 ≥ (o6/2) × 1.5.

Re-run: Quarterly. Anything below 0.30% weighted share for 2 consecutive quarters AND under R150k all-time gets archived. Anything new crossing 0.50% gets promoted.

At a glance

Catalog signal

Monthly catalog revenue

By category

By action

The full range

61 SKUs
All 61
All trends
All categories
Sort: Share % All-time 12 months 30 days Velocity
Decision: All Undecided ✓ Confirmed ✗ Excluded ● Retired
Show: All ✓ In Locked Range 📷 In Shoot List

🤔 Still Deciding

0 SKUs · held in limbo — not full-price keepers, not cut
Graduate criteria (green = on track · red = heading for the cut) New launches (<90d): R5k r3 or R100/d velocity to lock in.   Seasonal/established: R2k+ last 30 days — proves life beyond the Feb spike.

Everything else

207 SKUs · ranked bad to worst

My Locked Range

61 locked
61 products · export CSV for GMC upload
Sort: All-time r3/mo 30d Stock Category Name
# Product Category All-time r3/mo 30d Stock Trend Source
0%
90%

Export Decisions

Download decisions.json and drop it in ~/BartonOS/projects/kaal/data/, then rebuild the dashboard to bake decisions in permanently.

decisions.json

    
Python snippet (for manual paste into build script)