Sample output from the Replenishment Engineering — Buffers Sized Against the Supplier, Not the Policy prompt in the Sonar AI Prompt Library, run against a NetSuite test account. Every name and number here is test data. Back to the post · The library
TD3016323 · Consolidated (ex-Elimination) · Companion to Inventory Two-Way Grading, 26 Aug 2026
Prepared 26 August 2026 · Demand: trailing 12 mo · Supplier performance: trailing 24 mo

The replenishment review that recommends almost no buying.
7 order signals. 7 cancellations. 2 transfers that beat purchases.

Demand forecast, reorder point, and safety stock were recalculated for all 130 active stocked lines from actual order history and measured supplier behavior — buffers sized against the supplier actually causing the variability, and against holding cost versus margin at risk per line, not a blanket service target. The result inverts the usual review: cash flows out of purchasing this cycle. Net PO effect is −$1,126.

130
Lines recalculated
Forecast + σ + ROP + SS each, from 12 monthly demand buckets
7
Genuine order signals
All configurator components/assemblies with live backorders
$4,364
Open PO value to cancel
7 inbound lines landing on already-overstocked SKUs
56
Lines suppressed
Grade C/D/E overstock — no replenishment until cover normalizes
Remaining 67 lines: position above recalculated reorder point — no action. Draft POs below total $3,238; cancellations release $4,364.
Ten of eleven suppliers deliver in 3 days, on time, every time — for them, safety stock above a week of demand is pure waste. The entire lead-time risk in this business lives in two suppliers and one un-vendored assembly family. Buffer those, and only those.

01Supplier reality — measured, not assumed

PO→receipt latency from 7,719 receipt lines over 24 months; promise performance from line-level expected receipt dates.
Supplier (id)Receipt linesQuoted lead (d) Measured lead (d)σ lead (d) Received vs promiseReliability class
The Apparel Co Inc. 11301,79233~1on timeMetronomic
Mac Oca & Co. 11401,47733~1on timeMetronomic
Generation N 11291,23833~25 open lines past promiseReliable — watch
Bedline 113398533~1on time¹Metronomic
Broyhill 113178433~1on timeMetronomic
Lotion Co 113573933~1on timeMetronomic
Health & Beauty Supplies 113834633~1on timeMetronomic
Hestra / Betty Black / Coleman 1127 · 1137 · 112820733~1on timeMetronomic
Flexsteel 1132206.16~5max quoted 37dVariable — thin data
Johnson Supply 38676024.3~25147 of 9 open lines past promiseErratic
Crown Equipment Corp. 35739—²~40~30received avg +36.8d past promise, max +92dErratic
¹ One −31d artifact (receipt dated before PO) excluded as a data-entry error.  ² Crown's promise dates average 29.8d before the PO date — promise data unusable; measured receipt latency used instead.
The buffer policy this measurement dictates

A blanket service-level policy would size every line's buffer identically per demand volatility. The measurement says otherwise: for the ten metronomic suppliers (99.5% of receipt volume), lead-time variability contributes almost nothing — safety stock is driven by demand noise across a 3-day window, i.e., a handful of units. For Johnson Supply and Crown Equipment, lead-time variance dominates the buffer equation (σLT of 14 and 30 days respectively). Those two suppliers feed exactly the component families now showing 35–40-unit backorders. The stockouts and the erratic suppliers are the same story.

02Recalculated buffers — the model and its inputs

Per line: forecast from 12 monthly buckets (zero-months included), σ from the same buckets, service level from unit economics, buffer from the supplier's measured σLT.

Service level is not a policy constant here — it is priced per line. Each line's critical ratio CR = Cu / (Cu + Co), where Cu = unit gross profit at risk (from realized 12-mo margin) and Co = holding cost over one exposure period (unit cost × 20%/yr × (lead + review)/365). High-margin lines with metronomic suppliers earn 97–99% implied service; low-margin lines earn less. Backpacks at 33% margin get z ≈ 1.3; a $400 mattress at 55% margin gets z ≈ 2.0. Nobody gets a blanket 95%.

Model componentFormula / source
Forecast (daily)12-mo unit sales ÷ 365.3 — invoices AND cash sales, elimination sub excluded
Demand σ (monthly)√(E[x²] − E[x]²) over 12 buckets including zero months — computed in sandbox because this instance's SuiteQL rejects STDDEV
σ over lead time√( LT·σ²d,daily + d²·σ²LT ) — the second term is the supplier's measured lead variance, and dominates for the two erratic suppliers
Service levelCR = GPunit / (GPunit + holding cost per exposure); z = Φ⁻¹(CR), floored at 0
Safety stock⌈z · σDLT⌉
Reorder point⌈d · LT⌉ + SS
Order-up-tod · (LT + 30-day review) + SS
Inventory positionon hand − committed − backordered + on order (all sites)
Suppression ruleLines graded C/D/E in the 26-Aug overstock review get NO replenishment regardless of ROP — excess cover must burn down first (56 lines)

Representative recalculations (full 130-line table in appendix)

Item (id)SupplierFcst/moσ/moCV Lead ±σ (d)Implied svcSSROP PositionAction
Basil Lemon Hand Wash 63H&B Supplies21.511.40.533 ±196.3%710149Transfer
Volumizing Shampoo 93Mac Oca24.915.10.613 ±198.7%1114138Hold
The Gentleman 131Apparel Co22.513.80.613 ±195.1%811166Hold
Patriarch Luxury Firm T B 238Bedline3.03.01.013 ±197.8%2335Hold
Ghost Whisperer BU L 259Hestra9.09.21.023 ±197.5%6783Hold
HDW001 component 17308Johnson Supply1.82.61.5024 ±1493.1%46−29Order
BLD100 component 17300Crown Equipment1.82.61.5040 ±3091.3%58−30Order
Sparkle and Glow 17638Mac Oca4.86.61.363 ±195.2%45154Suppress
CV = coefficient of variation (σ/mean). Positions are consolidated across sites. "Suppress" = position wildly above any defensible order-up-to level; line is in the overstock clearance program.
Where the recalculated safety stock actually goes — units of buffer by driver
Demand noise, 3-day suppliers (121 lines)
2–14 units/line
Lead-time variance, Johnson Supply (6)
σLT-driven
Lead-time variance, Crown Equipment (7)
σLT-driven
For the two erratic suppliers, the d²·σ²LT term contributes the majority of σ over lead time — the buffer is protecting against the supplier, not the customer.

03Transfers before purchases

Every shortage was checked against surplus at sister sites before any PO was drafted. Two shortages clear internally; component backorders cannot.
Item (id)Shortage siteShortSurplus siteAvailable thereTransfer qtyPO avoided $Action
Basil Lemon Hand Wash 6301: San Francisco (id 1) — avail 0, committed 20, backorder 1010+03: LA DC (id 5)9230540Transfer
Estes Park Chair 2801: San Francisco (id 1) — avail 1 vs open SO demand~503: LA DC (id 5)2361,845Transfer
Purchase spend avoided by transferring instead2,385
Evidence — item 63: demand 12 mo by site: LA DC 205 · Miami 50 · NY 3 → SF site shows qoh 20, committed 20, available 0, backordered 10 → LA DC holds 92 available against its own ROP of 10 → transfer 30 covers the backorder + SF cycle stock; LA retains 62 (>6× its ROP). No purchase required — consolidated position (149) is 15× the consolidated ROP.
Evidence — item 28: SF has 6 on hand, 5 committed, 1 available; open SO lines aged up to 82 days sit against this item (26-Aug stockout review) → LA DC holds 23 available → transfer 6. Note: item is grade-C overstocked consolidated — this is re-allocation, NOT replenishment. Its 2.7% realized margin remains flagged for pricing review before further investment.
Shortages that CANNOT clear internally

The component backorders (17300, 17304, 17307, 17308 — 35–40 units each at LA DC; 17307/17308 also 5 at Chicago) exist at only one stocking site or at zero across all sites. The Chicago backorders on 17307/17308 already have 10 units inbound on open Johnson Supply POs — received-late risk applies (7 of 9 Johnson open lines are past promise), so the draft POs below cover the LA DC exposure only, netting the inbound units. Cross-subsidiary sourcing was checked: the intercompany vendor pair (2088/2089) has 1 PO each in history — no active intercompany supply program exists for these items.

04Cancel before you buy — inbound POs landing on overstock

Seven open PO lines are inbound to lines graded C/D/E in the overstock review. Receiving them deepens the surplus.
Item (id)Inbound qtyUnit cost $Value $Current cover (mo)Recommendation
Grey Cotton Hoodie 1154030.551,22217.1Cancel or divert — 140 on hand vs 98/yr demand
FRM001 component 1730610185.001,85033Cancel — E-grade; 22 on hand, 8 sold/yr
HDW002 component 173091067.0067033Cancel — same basket as 17306
Brown Leather Satchel 1081299.9930035.3Cancel — D-grade clearance line
Black Leather Belt 105637.0022251.4Cancel — D-grade clearance line
Skinny Tinted 124180.008022.6Cancel — C-grade markdown line
Pink Plaid 121120.002028.4Cancel — C-grade markdown line
Total open-PO value released694,364

05Draft purchase orders — each with its evidence

Only the shortages that survive the transfer check and the suppression screen earn a PO. Every draft carries its demand signal, lead-time assumption, cash effect, and margin at risk.

Draft PO 1 — Johnson Supply (vendor 3867)

Line (id)QtyUnit $Ext $
FRM100 173072824.50686.00
HDW001 173082724.50661.50
PO total551,347.50
Demand signal: 40 units backordered each (35 LA DC + 5 Chicago) against live configurator sales; 12-mo consumption 21 units each, σ/mo 2.6 → Position: 15 on hand − 15 committed − 40 BO + 10/11 inbound = −30/−29, deepest shortage in the book → Lead assumption: 24d ± 14d measured (NOT the 3d quoted on old POs; 7 of 9 currently-open Johnson lines are past promise) → Sizing: order-up-to (8) − position (−30) = 38; drafted 28/27 net of the 10/11 units already inbound, counted once → Cash effect: −$1,347.50 now → Margin at risk if not ordered: these components gate assembly AS_SAF001 (realized GP ≈ $341/unit; $14.4K of open assembly GP traced in the 26-Aug stockout review). One blocked assembly repays the PO tenfold.

Draft PO 2 — Crown Equipment Corporation (vendor 357)

Line (id)QtyUnit $Ext $
BLD100 173004010.00400.00
ELC001 173044025.001,000.00
PO total801,400.00
Demand signal: 35 backordered each at LA DC; 21 consumed in 12 mo, demand present in 4 of last 12 months (lumpy, CV 1.5) → Position: 25 − 20 − 35 + 0 = −30, nothing inbound → Lead assumption: 40d ± 30d measured receipt latency; Crown's promise dates are unusable (average 29.8d before PO date — data-entry inversion), so the buffer is sized on measured behavior only → Sizing: order-up-to (10) − (−30) = 40 → Cash effect: −$1,400 now → Margin at risk if not ordered: same configurator program; assembly GP $341–$683/unit. With a 40±30-day supplier, waiting for the next review cycle risks a full quarter of blocked builds.

Build orders, not purchase orders — the un-vendored assemblies

AS_WHL001 (17315), AS_MBK001 (17316), AS_SAF001 (17317): zero on hand anywhere, demand in 3–4 of the last 12 months, open SO GP of $10.1K (17316) and $14.4K (17317) traced in the stockout review — customers PROVABLY wait ~42–45 days for these → no itemvendor record exists: these are assemblies; the replenishment instrument is a WORK ORDER against component stock, which is exactly what draft POs 1–2 protect → recommended builds: 17315 ×7, 17316 ×4, 17317 ×8 (order-up-to at 99.5% implied service — their margin dwarfs component holding cost).

Net cash effect of this review

ActionCash $
Draft PO 1 — Johnson Supply−1,347.50
Draft PO 2 — Crown Equipment−1,400.00
Open-PO cancellations (7 lines)+4,364.00
Transfers instead of purchases (2 moves)+2,385.00 avoided
Net purchasing cash this cycle (ex-avoidance)+1,616.50

The review pays for itself before a single markdown: cancellations release more cash than the two justified POs consume. Every other line in the book either holds (67 lines above their recalculated ROPs) or is suppressed pending the overstock burn-down (56 lines).

06What changed vs. the standing setup

The instance carries almost no native planning parameters — this review is not adjusting old numbers, it is installing first numbers.

Across all 568 item-location rows, reorder points and preferred stock levels are blank on effectively every line (isolated exceptions aside). NetSuite has not been generating demand-driven supply signals; replenishment has been manual and rhythm-based — which explains both the 11-SKU leather overstock ($389K excess, bought to rhythm not demand) and the component backorders (no ROP existed to trip). The recalculated ROPs and safety stocks in the appendix are ready to be entered as per-location reorderpoint / preferredstocklevel values, or held as the review workbook — either way, the account moves from zero planning parameters to measured ones.

Standing recommendations

1. Enter the recalculated ROP/SS for the 67 "hold" lines (they are correctly stocked today — the parameters make that survivable). 2. Keep the 56 suppressed lines OUT of any auto-replenishment until the clearance program (26-Aug review) burns cover below 12 months. 3. Put Johnson Supply and Crown Equipment on a promise-date compliance program — Crown's promise fields are so mis-entered they are unusable for planning; require real dates on every new PO line. 4. Re-run this review quarterly; with 3-day suppliers on 99.5% of volume, quarterly is sufficient. 5. Assign vendors (or confirm build-only status) for the assembly family so future reviews route them to work orders automatically.

07Method, sources & assumptions

All queries ran 26 Aug 2026 against the live instance. Reproducible as written.

Assumptions

ParameterValueRationale & sensitivity
Demand windowTrailing 12 months, monthly buckets, zero-months included in σIncludes seasonality in the variability estimate rather than modeling it; conservative for buffer sizing.
Supplier windowTrailing 24 months of receiptsDoubles the sample for the low-volume suppliers where variance matters most.
Holding rate20%/yrSame rate as the companion overstock review — consistent economics.
Review period30 daysOrder-up-to covers lead + review; halving it to 15d cuts order-up-to by ~2 units on fast movers.
Service levelNewsvendor critical ratio per line, capped 99.5%Unit GP from realized 12-mo margins; lines with unknown margin default to 40% of cost. No blanket target anywhere.
Lead-time σ floor1 day (metronomic suppliers)Receipts and POs are date-stamped same-day for most lines; a 1-day floor guards against false precision.
SuppressionC/D/E overstock grades (26-Aug review)Replenishing into a clearance program is self-defeating; grade-B lines remain eligible.
Crown promise datesDiscarded (avg −29.8d vs PO date)Physically impossible promises = data-entry inversion; measured receipt latency substituted.
Bedline −31d receiptExcluded as artifactSingle receipt dated before its PO.
Demo/add-on familiesExcluded (WS-*, IT-*, gift-wrap/add-on ids, drop-ship)Not replenishable inventory; itemized in the appendix exclusions list.

Known limitations

Read before entering parameters

Source queries (SuiteQL)

Q1 — Monthly demand buckets → mean, σ, months-active per item
SELECT m.item_id, COUNT(*) AS months_active,
       ROUND(AVG(m.qty),3) AS avg_mo, ROUND(AVG(m.qty*m.qty),3) AS avg_mo_sq,
       MAX(m.qty) AS max_mo, SUM(m.qty) AS total_12m
FROM (
  SELECT tl.item AS item_id, TO_CHAR(t.trandate,'YYYY-MM') AS mth,
         SUM(ABS(tl.quantity)) AS qty
  FROM transaction t
  JOIN transactionline tl ON tl.transaction = t.id
  WHERE t.type IN ('CustInvc','CashSale')
    AND tl.mainline='F' AND tl.taxline='F'
    AND tl.item IS NOT NULL AND tl.subsidiary <> 4
    AND t.trandate >= ADD_MONTHS(TRUNC(SYSDATE), -12)
  GROUP BY tl.item, TO_CHAR(t.trandate,'YYYY-MM')
) m
GROUP BY m.item_id
-- STDDEV() is rejected by this instance's SuiteQL ("Invalid or unsupported search").
-- σ = SQRT(AVG(x²) − AVG(x)²) computed in the sandbox over 12 buckets incl. zeros.
Q2 — Measured supplier lead time (PO→receipt, 24 mo)
SELECT po.entity AS vendor_id, v.companyname,
       COUNT(DISTINCT po.id) AS pos_received, COUNT(*) AS receipt_lines,
       ROUND(AVG(TRUNC(r.trandate)-TRUNC(po.trandate)),2) AS avg_lead,
       ROUND(AVG((TRUNC(r.trandate)-TRUNC(po.trandate))
               * (TRUNC(r.trandate)-TRUNC(po.trandate))),2) AS avg_lead_sq,
       MAX(TRUNC(r.trandate)-TRUNC(po.trandate)) AS max_lead,
       MIN(TRUNC(r.trandate)-TRUNC(po.trandate)) AS min_lead
FROM transaction r
JOIN transactionline rl ON rl.transaction=r.id AND rl.mainline='F' AND rl.item IS NOT NULL
JOIN transaction po ON rl.createdfrom=po.id AND po.type='PurchOrd'
JOIN vendor v ON v.id=po.entity
WHERE r.type='ItemRcpt' AND r.trandate >= ADD_MONTHS(TRUNC(SYSDATE),-24)
GROUP BY po.entity, v.companyname
-- ItemRcpt→PO lineage is on transactionline.createdfrom, line level.
Q3 — Quoted leads & promise aging per supplier (PO lines)
SELECT po.entity AS vendor_id, v.companyname, COUNT(*) AS po_lines,
       ROUND(AVG(TRUNC(pol.expectedreceiptdate)-TRUNC(po.trandate)),2) AS avg_quoted_lead,
       SUM(CASE WHEN pol.isclosed='F'
             AND ABS(pol.quantity)-NVL(pol.quantityshiprecv,0) > 0 THEN 1 ELSE 0 END) AS open_lines,
       SUM(CASE WHEN pol.isclosed='F'
             AND ABS(pol.quantity)-NVL(pol.quantityshiprecv,0) > 0
             AND pol.expectedreceiptdate < TRUNC(SYSDATE) THEN 1 ELSE 0 END) AS open_past_promise
FROM transaction po
JOIN transactionline pol ON pol.transaction=po.id AND pol.mainline='F' AND pol.item IS NOT NULL
JOIN vendor v ON v.id=po.entity
WHERE po.type='PurchOrd' AND po.trandate >= ADD_MONTHS(TRUNC(SYSDATE),-24)
GROUP BY po.entity, v.companyname
-- Companion query joins receipts to promised dates per item-vendor pair:
-- AVG(TRUNC(r.trandate) − TRUNC(pol.expectedreceiptdate)) = received-vs-promise.
Q4 — Item→vendor map with purchase price
SELECT iv.item, iv.vendor, v.companyname, iv.purchaseprice, iv.preferredvendor
FROM itemvendor iv
JOIN vendor v ON v.id = iv.vendor
WHERE iv.subsidiary = :primarySub OR iv.subsidiary IS NULL
Q5 — Per-location positions & the shortage screen
SELECT iil.item, iil.location, loc.name,
       iil.quantityonhand, iil.quantityavailable,
       NVL(iil.quantitycommitted,0) AS committed,
       NVL(iil.quantitybackordered,0) AS backordered,
       NVL(iil.quantityonorder,0) AS on_order
FROM inventoryitemlocations iil
JOIN location loc ON loc.id = iil.location
WHERE NVL(iil.quantitybackordered,0) > 0
   OR NVL(iil.quantitycommitted,0) > NVL(iil.quantityavailable,0)
-- Plus per-location 12-mo demand (Q1 grouped by tl.location) to direct transfers
-- from surplus sites that retain cover above their own ROP after the move.
Full 130-line recalculation table (id · vendor · fcst/mo · σ/mo · CV · lead±σ · CR · z · SS · ROP · order-up-to · position · shortfall · action)
Available as the review workbook — the appendix arrays were computed in-session
(evalJs, Acklam inverse-normal for z) and are reproducible from Q1–Q5 plus the
model formulas in §02. Request "export the replenishment workbook as CSV" to
regenerate the full table as a file.
Source: NetSuite account TD3016323 (production). Demand window 27 Aug 2025 – 26 Aug 2026; supplier window 24 months; queries executed 26 Aug 2026. Elimination subsidiary excluded. Margins per NetSuite order-entry cost estimates; supplier lead times measured from PO→ItemRcpt lineage. Read-only review — no purchase orders created, cancelled, or modified; no transfer orders entered; no item parameters changed. Draft PO quantities and transfer moves require purchasing review before entry. Service levels are implied by unit economics under stated assumptions, not contractual commitments. Companion document: Inventory Two-Way Grading, 26 Aug 2026.
Sonar AI · Inventory Intelligence