Net Position
-42,300 kg
Short across 8 wool types
P&L Exposure
−£186,400
At current replacement prices
Cash Outflow (4 wk)
£1.24M
73% with confirmed dates
Avg Stock Age
67 days
142 lots · £38k holding cost
Avg Margin (MTD)
11.3%
Weighted · up from 9.8% last month
Position Summary
Long/short by wool code against forward sales
| Wool Code | Required | In Stock | Net | Status |
|---|---|---|---|---|
| 64s NZ Fleece | 18,200 kg | 12,400 kg | -5,800 | Short |
| 60s AU Fleece | 24,500 kg | 8,100 kg | -16,400 | Short |
| 56s SA Crutch | 6,800 kg | 14,200 kg | +7,400 | Long |
| 70s NZ Lamb | 9,300 kg | 2,100 kg | -7,200 | Short |
| 58s AU Pieces | 5,400 kg | 11,600 kg | +6,200 | Long |
Stock Aging Distribution
By value held in warehouse
0-30 days
£412k
35%
31-60 days
£330k
28%
61-90 days
£259k
22%
90+ days
£177k
15%
Total stock value: £1,178,000 · Estimated holding cost: £38,200
Recent Margin Performance
Daily weighted margin including holding costs
| Date | Invoices | Revenue | Cost | Holding Cost | Raw Margin | Weighted Margin |
|---|---|---|---|---|---|---|
| 15 Mar | 4 | £84,200 | £72,600 | £1,240 | 13.8% | 12.3% |
| 14 Mar | 7 | £156,800 | £141,200 | £2,890 | 9.9% | 8.1% |
| 13 Mar | 3 | £61,400 | £52,100 | £980 | 15.1% | 13.5% |
| 12 Mar | 5 | £112,300 | £100,900 | £1,810 | 10.1% | 8.5% |
1 User Story 1: Blend Recipe Derivation
Blend Recipe Derivation
Average input proportions from historical blends by product and client
?
Story 1 Fallback behaviour
If fewer than 5 matching blends exist, all available matches are shown with a small sample warning. If no matches exist for this product/client, it falls back to the same product across all clients. Try selecting Botto Giuseppe + 70s NZ Lamb to see this.
Acceptance criteria: Falls back to showing blends for the same product across all clients when no match exists.
Got it
5 matching blends found for Schneider Group + 64s NZ Fleece
Average Recipe: 64s NZ Fleece for Schneider Group
Based on 5 blends (SS-4281, SS-4256, SS-4234, SS-4198, SS-4172) · Avg yield: 72.4%
H-8834 NZ 64s Fleece FNF
42%
42.0%
H-8821 NZ 64s Fleece BKN
24%
24.0%
H-8790 NZ 66s Fleece FNF
18%
18.0%
H-8756 AU 64s X-bred
11%
11.0%
H-8812 NZ 62s Pieces
5%
5.0%
| Blend (SS) | Date | Input Weight (kg) | Output Weight (kg) | Yield | # Input Lots | Client Link |
|---|---|---|---|---|---|---|
| SS-4281 | 28 Feb 2026 | 8,420 | 6,150 | 73.0% | 4 | Invoiced |
| SS-4256 | 14 Feb 2026 | 7,890 | 5,680 | 72.0% | 5 | Invoiced |
| SS-4234 | 30 Jan 2026 | 9,100 | 6,620 | 72.7% | 4 | Invoiced |
| SS-4198 | 12 Jan 2026 | 8,050 | 5,840 | 72.5% | 5 | Invoiced |
| SS-4172 | 18 Dec 2025 | 7,600 | 5,490 | 72.2% | 4 | Invoiced |
2 User Story 2: Stock Position Report (Long/Short)
Total Short
-42,300 kg
Across 8 wool types
Total Long
+31,800 kg
Across 5 wool types
Forward Sales
127
Open commitments
No Recipe
3
Sales with unknown position
Long/Short Position by Wool Code
Forward sales requirements vs current stock, net of allocations
WOOL_CLASS grouping is unreliable. Showing by specific WOOL_CODE. 3 sales flagged as "position unknown - no recipe history".
?
Story 2 Product grouping risk
WOOL_CLASS in JHP.WOOL is "airy fairy" (Pete's words) - different recipes get lumped under the same group, and the decision to create vs reuse a wool code is inconsistent. The dropdown lets you try WOOL_CLASS grouping but shows a warning. An open question is whether to propose a new taxonomy.
Pain point PP2 / PP7: Primary view groups by WOOL_CODE. WOOL_CLASS grouping is optional with accuracy warning.
Got it
| Wool Code | Division | Forward Required (kg) | In Stock (kg) | Allocated (kg) | Net Position (kg) | Status | |
|---|---|---|---|---|---|---|---|
| 60s AU Fleece | Scour | 24,500 | 8,100 | 3,200 | -19,600 | Short | |
| 64s NZ Fleece | Scour | 18,200 | 12,400 | 5,600 | -11,400 | Short | |
| 70s NZ Lamb | Scour | 9,300 | 2,100 | 800 | -8,000 | Short | |
| 62s NZ Bellies | Scour | 4,200 | 3,900 | 1,100 | -1,400 | Short | |
| 48s NZ Oddments | Merch | 1,200 | 16,800 | 400 | +15,200 | Long | |
| 56s SA Crutch | Scour | 6,800 | 14,200 | 2,800 | +4,600 | Long | |
| 58s AU Pieces | Merch | 5,400 | 11,600 | 2,400 | +3,800 | Long | |
| 66s NZ Fleece | Scour | 3,100 | 3,300 | 200 | 0 | Balanced | |
| 60s ZA Fleece No Recipe | Scour | 2,800 | ? | ? | unknown | No Data |
3 User Story 3: Profit & Loss Analysis
Total P&L Exposure
−£186,400
Cost to cover all short positions
Short Positions
4
Wool types below requirement
Avg Replacement Premium
+8.2%
Over current stock cost
Stale Prices
1
Replacement cost > 7 days old
P&L Impact - Short Position Replacement
Cost of covering short positions at current market replacement prices (GBP)
| Wool Code | Qty Short (kg) | Avg Stock Cost /kg | Replacement /kg | Premium | Total Exposure | Price Date |
|---|---|---|---|---|---|---|
| 60s AU Fleece | 19,600 | £4.82 | £5.31 | +10.2% | −£96,100 | 14 Mar |
| 64s NZ Fleece | 11,400 | £5.14 | £5.68 | +10.5% | −£61,600 | 14 Mar |
| 70s NZ Lamb | 8,000 | £6.20 | £6.48 | +4.5% | −£22,400 | 15 Mar |
| 62s NZ Bellies | 1,400 | £3.90 | £4.40 | +12.8% | −£6,300 | 8 Mar |
| Total | 40,400 kg | +8.2% avg | −£186,400 |
Exchange rates: NZD/GBP 0.4712 (contracted forward), AUD/GBP 0.5134 (spot) ·
62s NZ Bellies replacement price is 8 days old - update price
?
Story 3 Price staleness
Where SALE.Replacement_Cost is stale or missing, the report flags those rows for manual update. An open question is whether this price comes from a manual entry or an external feed.
Got it
Scenario Analysis
Adjust replacement prices to model different market conditions
Current Exposure
−£186,400
+5% Scenario
−£197,200
-5% Scenario
−£175,600
4 User Story 4: Cash Flow Forecasting
4-Week Outflow
£1.24M
Purchase commitments due
4-Week Inflow
£890k
Expected receivables
Net Cash Flow
−£350k
Next 4 weeks
Date Coverage
73%
Contracts with valid dates
Weekly Cash Flow Forecast
Purchase outflows and sale receivables by week (GBP)
27% of open purchase contracts are missing payment dates (£462k unscheduled). Data completeness degrades beyond week 8.
£340k
W/C 17 Mar
£290k
W/C 24 Mar
£310k
W/C 31 Mar
£300k
W/C 7 Apr
£260k
W/C 14 Apr
£220k
W/C 21 Apr
£180k
W/C 28 Apr
£150k
W/C 5 May
£120k
W/C 12 May
£90k
W/C 19 May
Purchase outflows
Sale receivables
Low confidence (fewer dated contracts)
Unscheduled Contracts
?
Story 4 Data quality surfacing
Pete flagged that payment/due dates on purchase contracts are "sometimes missing or wrong." Rather than silently excluding them, the platform surfaces these gaps so traders can fix them. The "data completeness" KPI (73%) tracks improvement over time.
Got it
Purchase contracts without valid payment or delivery dates
| PO Number | Supplier | Value (GBP) | Currency | Issue |
|---|---|---|---|---|
| PO-8834 | Canterbury Wool Growers (NZ) | £142,000 | NZD | No Delivery Date |
| PO-8821 | Cape Mohair (SA) | £98,400 | ZAR | No Payment Terms |
| PO-8799 | Lempriere (AU) | £86,200 | AUD | Delivery Date Past |
| PO-8776 | Segard Masurel (FR) | £74,800 | EUR | No Delivery Date |
| PO-8761 | NZ Merino Co (NZ) | £60,600 | NZD | Both Missing |
| Total unscheduled | £462,000 | |||
5 User Story 5: Stock Aging for Weighted Margin
Lots in Stock
142
Scoured + greasy
Average Age
67 days
Weighted by value
Over 90 Days
18 lots
£177k value · £12.4k holding cost
Total Holding Cost
£38,200
At 6.5% annual financing rate
Stock Aging Detail
All lots in warehouse, ordered by age (oldest first)
| Lot Number | Type | Wool Code | Weight (kg) | Value (GBP) | Receipt Date | Days | Holding Cost | Age |
|---|---|---|---|---|---|---|---|---|
| SS-4089 | Scoured | 48s NZ Oddments | 4,200 | £16,800 | 28 Nov 2025 | 108 | £326 | 90+ |
| H-8612 | Greasy | 56s SA Crutch | 6,800 | £24,500 | 5 Dec 2025 | 101 | £442 | 90+ |
| SS-4102 | Scoured | 58s AU Pieces | 3,600 | £14,400 | 12 Dec 2025 | 94 | £242 | 90+ |
| H-8645 | Greasy | 60s AU Fleece | 5,200 | £25,100 | 22 Dec 2025 | 84 | £376 | 61-90 |
| SS-4178 | Scoured | 64s NZ Fleece | 2,800 | £14,400 | 3 Jan 2026 | 72 | £185 | 61-90 |
| SS-4201 | Scoured | 70s NZ Lamb | 2,100 | £13,020 | 18 Jan 2026 | 57 | £132 | 31-60 |
| H-8701 | Greasy | 64s NZ Fleece | 8,400 | £40,320 | 28 Jan 2026 | 47 | £338 | 31-60 |
| SS-4256 | Scoured | 60s AU Fleece | 5,680 | £27,380 | 14 Feb 2026 | 30 | £147 | 0-30 |
| H-8756 | Greasy | 56s SA Crutch | 7,400 | £28,860 | 1 Mar 2026 | 15 | £77 | 0-30 |
| SS-4281 | Scoured | 64s NZ Fleece | 6,150 | £31,570 | 5 Mar 2026 | 11 | £62 | 0-30 |
Showing 10 of 142 lots · Financing rate: 6.5% p.a. · Cross-system mapping: SS lots matched via C-prefix CustomerRef in DEWSDB0
?
Story 5 Cross-system lot mapping
SS lot numbers in JHP don't map directly to DEWSDB0. The warehouse tracks scoured stock under C-prefix lots (1,070 of them), with the SS number in the CustomerRef field. The stored procedure joins via CustomerRef, not OurRef. 33% of stockDelivery records have orphaned BaleIDs (QA finding F5), so the report uses lot-level receipt dates.
Got it
6 User Story 6: Margin Report (Daily Production)
Today's Margin (Raw)
13.8%
4 invoices processed
Today's Margin (Weighted)
12.3%
After holding costs deducted
MTD Average
11.3%
Weighted margin, 15 days
vs Last Month
+1.5pp
Feb avg was 9.8%
Daily Margin Report
Invoice-level margin with holding cost adjustment · Refreshed daily at 06:45
| Invoice | Date | Client | Trader | Wool Code | Sale Price | Stock Cost | Holding Cost | Raw Margin | Weighted Margin |
|---|---|---|---|---|---|---|---|---|---|
| INV-22841 | 15 Mar | Schneider Group | pha | 64s NZ Fleece | £32,400 | £27,200 | £480 | 16.0% | 14.6% |
| INV-22840 | 15 Mar | Botto Giuseppe | kstirk | 60s AU Fleece | £24,800 | £21,900 | £380 | 11.7% | 10.2% |
| INV-22839 | 15 Mar | Abraham Moon | pha | 56s SA Crutch | £18,200 | £16,100 | £240 | 11.5% | 10.2% |
| INV-22838 | 15 Mar | Zegna | mwren | 70s NZ Lamb | £8,800 | £7,400 | £140 | 15.9% | 14.3% |
| INV-22835 | 14 Mar | Schofield & Smith | jov | 48s NZ Oddments | £12,600 | £12,100 | £326 | 4.0% | 1.4% |
| INV-22834 | 14 Mar | Schneider Group | pha | 64s NZ Fleece | £44,200 | £39,800 | £620 | 10.0% | 8.6% |
| INV-22833 | 14 Mar | Botto Giuseppe | kstirk | 60s AU Fleece | £38,600 | £34,200 | £540 | 11.4% | 10.0% |
| INV-22832 | 14 Mar | Südwolle Group | mwren | 66s NZ Fleece | £28,400 | £25,800 | £410 | 9.2% | 7.7% |
Showing 8 of 42 invoices this month · Highlighted row: weighted margin below 5% threshold · Cancelled invoices excluded
?
Story 6 Weighted margin explained
The "weighted margin" column deducts estimated holding costs (from Story 5) from the raw margin. INV-22835 shows 4.0% raw but only 1.4% weighted - the 48s NZ Oddments lot (SS-4089) has been in stock 108 days, eroding the margin through financing costs.
Dependency: Story 6 depends on Story 5 (Stock Aging) for holding cost data.
Got it