Livestreams & show cockpit
Use WhatCopilot livestreams history and the show cockpit: prepare lineup from inventory, project auction/floor/target prices, generate a sell timeline, then review plan vs actual after CSV import.
Livestreams covers two surfaces: the **imported history table** (`/app/livestreams`) and the **show cockpit** (`/app/livestreams/[id]`), which is the operational hub for preparing and reviewing a scheduled Whatnot live.
Two surfaces
History list
- Path: `/app/livestreams`
- Source: CSV aggregates (livestream_id)
- Rank by net revenue, orders, buyers
- Multi-select → Analyze with Orion
- Open prep when a calendar slot is linked
Show cockpit
- Path: `/app/livestreams/[calendar-event-id]`
- Source: calendar slot + lineup
- Prepare products, prices, order
- Sidebar: Prepare vs Review
- Ask Orion about this show plan
Cockpit sections
The left sidebar groups the page by intent so you always know what each block is for.
| Group | Section | Intent |
|---|---|---|
| Prepare | Slot | When and why this show runs (title, times, theme, notes) |
| Prepare | Lineup | What you plan to sell and at which prices |
| Prepare | Timeline | Suggested order across the scheduled window |
| Review | Results | Imported livestream KPIs after the show |
| Review | Debrief | Plan vs what actually sold |
Tutorial: connect inventory
Stock first
Build Inventory for the same Whatnot shop (manual, from sold SKUs, or inventory CSV). Unit COGS unlocks projected prices.
Open the show cockpit
From Calendar, click the event → `/app/livestreams/[id]`. Ensure the event’s shop matches the inventory shop.
Connect inventory
In Lineup, click Connect inventory, tick the lots for this show, then Add selected. Items already in the lineup are hidden.
Or add a manual product
Use Add manual product for a one-off lot (title, optional SKU/category, quantity, unit COGS). Prices fill in automatically.
Tune prices
Edit auction start, floor, and target (+10%) inline, then Save on the row. Roles (opener / peak / filler / closer / VIP bait) can be set manually too.
Projected prices
When you add a lot, WhatCopilot proposes three levels from COGS so you know your floor before you open auctions:
- **Floor (profitable)** ≈ `unit_cogs / (1 − 0.10)` — break-even after ~10% fee buffer
- **Target (+10%)** = `floor × 1.10` — modest net margin goal
- **Auction start** ≈ `35% of floor` (min step 1), optionally capped by the 25th percentile of past auction starts for that SKU/category
- COGS = $10 → floor ≈ $11.11 → target ≈ $12.22 → auction start ≈ $4
- If past auctions for that SKU often opened near $3, auction start may be capped lower.
Suggestion algorithm
Generate timeline suggestions computes an explainable score per product × hour inside your slot, then places lots greedily on ~20-minute windows.
Signals (shop history from imports)
- Hour heat — when your shop sells most (order timestamps)
- SKU / category × hour fit — which product types convert in which hours
- Velocity — revenue strength of the SKU
- Margin score — net vs COGS when available
- Stock pressure — prioritize low / critical on-hand quantities
- Top-buyer hours — when high spenders tend to buy (closers / VIP)
- Novelty — new SKUs with little history are steered away from blind peak placement
Score shape
`score(item, hour) = w_hour·heat + w_fit·fit + w_margin·margin + w_velocity·velocity + w_stock·stock + w_buyer·buyerHour + w_novelty·novelty − w_risk·underFloorRisk`
Default weights favor fit + heat + margin/velocity, with smaller weights for stock, buyers, and novelty. Each placement stores a `score_breakdown` you (and Orion) can inspect.
Show placement rules
- Early window → openers (known lots, energy)
- Peak heat hours → headliners (velocity / margin)
- Softer hours → fillers and controlled novelty tests
- Late window → closers / VIP bait when top-buyer overlap is strong
Results & debrief
- Import the Seller Weekly Orders Report after the show (Imports)
- On Results, confirm auto-match or manually link the imported livestream
- Review KPI cards (orders, unique buyers, estimated duration, buyer / net revenue)
- Open Debrief to see which planned lots sold, units, net, and vs floor / target
Ask Orion about the plan
From the cockpit, Ask Orion opens a conversation with your event id and lineup. Orion calls `suggestLiveLineup` to read the same structured coach pack (insights, scores, prices — no raw CSV). It may call `proposeLiveLineupChanges` with real `itemId`s; **you** confirm Apply in the UI. Orion never writes the lineup. Set `recompute=true` only when you ask to refresh engine suggestions.
History table features
- Account filter; search by title / id
- Columns: live, orders, unique buyers, estimated duration (tooltip), buyer revenue, net revenue
- Default sort: net revenue; multi-select → Analyze with Orion
- Open prep when the livestream is linked to a calendar event
Limits
- No real-time Whatnot API — prep is offline; results arrive with the weekly CSV lag
- Demo cockpit is read-only
- Matching lineup to sales uses SKU first, then product title
- Estimated duration on history is not the official stream length
Related
- Calendar — create the slot that opens the cockpit
- Inventory — stock + COGS to connect
- Imports — Seller Weekly CSV
- Statistics — sales-by-hour heat
- Orion — coach on the structured plan
FAQ
- What is the difference between /app/livestreams and /app/livestreams/[id]?
- The list is imported CSV history (ranked KPIs). The detail page is the show cockpit for a calendar event: lineup, pricing, timeline, then results/debrief once linked.
- Is livestream duration exact?
- On the history table, duration is estimated from order activity in the CSV, not the official Whatnot show length. The cockpit timeline uses your calendar start/end.
- How are auction start, floor, and target calculated?
- From unit COGS: floor ≈ COGS / (1 − 10% fees), target = floor × 1.10, auction start ≈ 35% of floor (capped by historical auction p25 when available). All three remain editable.
- Can I use the cockpit in demo mode?
- Yes, read-only. Demo shows seeded lineups and timelines; create/edit/suggest writes are blocked.