# Backstock Seasonal Intelligence

**Status**: Idea / Early Discovery
**Date**: 2026-04-02
**Origin**: Customer feedback from Autumn (Once Upon a Child - OUAC)
**Problem**: Current 1-bin-1-subcategory system doesn't fit stores that organize by gender/season/size instead of POS subcategories

---

## Background

Many OUAC locations (and likely other kids resale stores) organize backstock by **Gender + Season + Size** rather than by POS product subcategory. A single tote contains mixed clothing types (pants, shirts, dresses, outfits) all in the same gender/season/size combination. Forcing subcategory-level separation would multiply their tote count by 5-10x, which is physically impractical.

These stores work in seasonal cycles:
- **~March**: Pull Spring/Summer bins to floor, move Fall/Winter to storage
- **~September**: Pull Fall/Winter bins to floor, move Spring/Summer to storage
- The "flip" is a major operational event involving hundreds of bins over days/weeks
- Timing varies by region (Florida vs Minnesota)

---

## Phase 1: Category Groups (Near-Term Fix)

Allow stores to create **Category Groups** that map to multiple POS subcategories at once.

### How It Works
- Store creates a group: "All Girls Clothing" -> maps to Girls Pants, Girls Shirts, Girls Dresses, Girls Outfits, etc.
- Bin gets tagged with the group instead of a single subcategory
- Store then adds custom tags on top (Spring/Summer, 4T) for their own filtering
- Result: bin shows "All Girls Clothing" + "Spring/Summer" + "4T"
- Behind the scenes, system knows which DRS subcategories could be in that bin for reporting

### Data Model Changes Needed
- New table: `bsCategoryGroups` (id, storeDb/typeNum, name, color, textColor)
- New junction table: `bsCategoryGroupMembers` (groupId, subcategoryCode) - maps group to DRS subcategories
- Modify `bsBins.mainCategory` to support group references (or new column `categoryGroupId`)
- Reporting queries aggregate across all subcategories in the group

### UX
- Category management UI gets a "Create Group" option
- When creating a group, user picks from DRS subcategory list (checkbox multi-select)
- Bin creation/edit shows groups alongside individual subcategories
- Reports roll up data by group

### Benefits
- Stores tag bins the way they think (broad groups + custom tags)
- System still knows which DRS subcategories could be in the bin
- Reporting still works via group-to-subcategory mapping
- Relatively small code change, works within current architecture

---

## Phase 2: Season Tag on Bins

Add a **season** attribute to every bin.

### Season Values
- Spring/Summer
- Fall/Winter
- All-Season
- Untagged

### Detection
- Manual: user sets it when creating/editing a bin
- Auto-inferred: from creation date + store's seasonal calendar config
- From POS category: coats = FW, swimwear = SS (where deterministic)

### Store Seasonal Calendar
- Store-level config: when does each season start/end?
- Defaults by region, customizable per store
- Example: SS starts March 1, FW starts September 1

---

## Phase 3: Seasonal Dashboard

New view that shows bins through a seasonal lens instead of a flat list.

### Overview Panel
- Current season indicator
- Per-season stats:
  - Bin count (on-site vs off-site)
  - Estimated sell-through at current rate
  - Suggested pull/store date based on history
- Attention alerts:
  - Bins in 2nd+ season (consider markdown/liquidation)
  - Bins that never made it to floor last season
  - Storage capacity utilization

---

## Phase 4: Season-Aware Aging

Current age metric is linear (90 days = stale). For seasonal stores this creates noise.

### Seasonal Age Scoring
- **In-season, on floor**: Normal age tracking, monitor sell-through velocity
- **Off-season, in storage**: Age clock pauses - this is expected behavior
- **In-season, still in storage**: Warning - missing selling days
- **Multi-season survivor** (2+ seasons without emptying): Alert - items getting dated, consider liquidation

This single change eliminates most false "stale" alerts for seasonal stores.

---

## Phase 5: Seasonal Flip Planner

The killer operational feature. When the seasonal flip is approaching:

### Pull List Generation
- Prioritized by predicted sell-through rate (fastest sellers first)
- Grouped by size range for systematic floor filling
- Shows which off-site storage location each bin is in (minimize trips)
- Progress tracking: "142 of 380 SS bins moved to floor (37%)"

### Straggler Detection
- Flags bins from the OTHER season still on the floor
- "30 FW bins still on-site - move to storage?"

### Historical Comparison
- When did you start the flip last year?
- How many bins per season vs last year?

---

## Phase 6: Buy Cycle Intelligence

Connect DRS buy/sales data to seasonal bins for predictive insights.

### Examples
- "You're buying more SS Girls 4T than last year, but you have fewer bins" (capacity planning)
- "Last year's FW Boys 2T sold through in 38 days. At current buy rate, you'll have 52 days of inventory" (buying pacing)
- "Top-performing SS category: Girls Dresses (62% sell-through). Lowest: Boys Shorts (31%)" (buying focus)
- "Your Girls SS 4T bin has 3 months of inventory based on sell-through rate" (bin-level intelligence)

### Year-Over-Year Benchmarking
- Seasonal flip timing trends
- Bin count growth/shrinkage by season
- Average sell-through rate by season, trending over years
- Which categories are growing/declining

---

## Build Sequence (Recommended)

| Phase | Effort | Impact | Dependencies |
|-------|--------|--------|-------------|
| 1. Category Groups | Medium | High - unblocks OUAC customers immediately | None |
| 2. Season Tags | Small | Medium - foundation for everything below | None |
| 3. Seasonal Dashboard | Medium | High - new view, uses existing data | Phase 2 |
| 4. Season-Aware Aging | Small | High - eliminates #1 source of noise | Phase 2 |
| 5. Flip Planner | Large | Very High - operational game-changer | Phases 2, 3 |
| 6. Buy Intelligence | Large | Very High - predictive/strategic value | Phases 1, 2, DRS data pipeline |

Phases 1 and 2 can be built independently and in parallel.

---

## Open Questions

- How many OUAC stores operate this way vs subcategory-based? (Validate with more customers)
- Do Plato's Closet / other brands have similar seasonal patterns?
- Should category groups be per-store or shared across the platform?
- How granular should the seasonal calendar be? (2 seasons? 4 seasons? Custom?)
- What's the minimum viable seasonal intelligence that would re-engage Autumn?
