Sample output from the Elasticity & Repricing Risk Analyzer 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  ·  Commercial Analytics  ·  Vol. II

Elasticity & Repricing Risk Study
Where Price Increases Get Absorbed — and Where They Cost Orders

Behavioral price-sensitivity estimation by SKU and customer segment, five-factor risk scoring of every repricing action, and a ranked execution sequence with expected revenue and margin effects. Companion to the Price & Margin Realization Study.
ANALYSIS WINDOW: SEP 1, 2024 – AUG 22, 2026 (23.7 MONTHS)  ·  PREPARED: AUG 26, 2026  ·  SOURCE: NETSUITE PRODUCTION (SUITEQL, LINE LEVEL)
0
Historic list-price changes
in 24 months (all 121 SKUs)
62–96%
Threshold-bunching in wholesale
accounts — high price-awareness
31–92%
Breakeven volume-loss tolerance
across the 14 repricing actions
$22.2K
Annualized GP from ranked plan
even if 5% of volume is lost

01Executive Summary

The elasticity question has a finding before it has a number: this business has never run the experiment. Across 121 SKUs, 3,236 lines and 23.7 months, list prices within every quantity tier were checked for change events — there are zero. Every SKU has sold at exactly one price per tier for two years. Classical elasticity (observed volume response to observed price change) is therefore not estimable from this data, and any report claiming otherwise from this dataset would be manufacturing numbers.

What the data does support — and what this study delivers — is a behavioral price-sensitivity model built from how customers demonstrably respond to the price structure that does exist: the five-tier quantity-break schedule. Customers who repeatedly land orders exactly on tier thresholds (5, 10, 15, 20 units) are provably price-aware — they engineer order sizes to capture breaks. Customers who buy odd quantities at list are price-takers. Combined with breakeven volume-loss tolerance (how much volume each repriced SKU can afford to lose before the increase backfires — computable exactly from margin structure), this bounds each action's true risk without pretending to a regression the data cannot support.

The headline results: price increases are most likely to be absorbed at retail (zero bunching, list-price takers, low ticket sizes) and on low-margin SKUs where breakeven tolerance is enormous (Estes Park Chair can lose 92% of volume and still profit from a +31% increase). They are most likely to cost orders in the high-bunching wholesale accounts (Pineapple Republic 96%, Panaderia 92%, Davis Supplies 92% threshold-bunching) — where buyers demonstrably manage to price structure. The ranked 14-action plan yields $24.8K/yr if no volume is lost, $22.2K/yr at −5%, $19.7K/yr at −10% — the plan is profitable under every plausible demand response.

Finding B — The absent experiment is itself the strategic insight

Two years of frozen prices through a period when supplier costs rose up to 100% means this business has been running a one-sided experiment: cost discovery without price discovery. The recommended Wave 1 actions double as instrumented price tests — executed with 90-day volume checkpoints, they generate the first real elasticity observations this account has ever produced, making every subsequent pricing decision better-informed.

Contents
02 — Why Classical Elasticity Is Not Estimable Here (Evidence) 03 — Behavioral Price-Sensitivity by Customer Segment 04 — Absorb vs. Cost-Orders: The Sensitivity Map 05 — Five-Factor Risk Scoring 06 — Ranked Opportunities with Expected Effects 07 — Execution Plan & Instrumentation 08 — Methodology, Assumptions & Limitations 09 — Appendix: Source Queries

02Why Classical Elasticity Is Not Estimable Here

Elasticity estimation requires price variation. The test: for every SKU × quantity-tier cell, count distinct realized unit prices (rounded to cents). If list prices ever moved, cells would show ≥2 distinct prices with a date boundary between them.

TestCells TestedCells with a Price ChangeImplication
Distinct unit prices per SKU × tier~4800No SKU's price ever changed within a tier
Monthly realized % of list (prior study)24 months0 trend breaks96.4–97.9% every month; no schedule drift
Discount/markup line items—0 rowsNo promotional price variation either
The only price variation in two years is the cross-sectional tier schedule itself — which is simultaneous with quantity choice and therefore identifies willingness-to-bunch, not demand elasticity.

What we use instead — three honest instruments:

① Threshold-bunching rate — share of wholesale lines (qty ≥5) landing on exact multiples of 5. Under price-indifference, order quantities would scatter; a buyer whose orders land on {5,10,15,20…} 90%+ of the time is engineering quantities to capture 1%-per-tier breaks — revealed price-awareness at the margin. ② Breakeven volume-loss tolerance — for each proposed increase, the exact volume loss at which the action stops adding gross profit: v* = 1 − GP₀ ÷ (R(1+p) − C). This is arithmetic, not estimation — it bounds how much elasticity the action can survive. ③ Cross-price-point margin dispersion — SKUs already selling successfully at 46–52% category margins prove the customer base tolerates those price levels for comparable goods; the 14 outliers are priced below what the same buyers demonstrably pay elsewhere in the catalog.

03Behavioral Price-Sensitivity by Customer Segment

Account / SegmentRepRevenue (2yr)Threshold-BunchingActive Months / 24Price-Sensitivity Read
Pineapple RepublicM. Fisher$203,43496%21Extreme — orders engineered to tiers
Panaderia Co.M. Fisher$224,00392%23Extreme
Davis SuppliesT. Dietrich$194,68092%23Extreme
Recreational OutfittersM. Fisher$131,60684%23High
Entenmanns LLCT. Dietrich$60,37681%14High, intermittent buyer
Realpoint inc.M. Fisher$158,75078%22High
Design Excellence Ltd.T. Dietrich$238,48776%24High, most consistent buyer
Jones ManufacturingT. Dietrich$316,49374%23High — largest account
Hugo LimitedT. Dietrich$77,96473%24High
KarmabitT. Dietrich$64,43369%20Moderate-high
Marshall IndustriesJ. Williams$121,56762%13Moderate, intermittent
Blockster Inc.T. Dietrich$52,7500%2Project buyer — one-off large orders
(Retail walk-in — 66 customers)—$254,616~0%24Price-takers — absorption likely
Threshold-bunching = share of wholesale lines (qty ≥5) landing on exact multiples of 5 (the tier thresholds). Retail walk-in customers buy 1–4 units at list with no quantity engineering — the classic price-taker profile.
Threshold-Bunching by Account — revealed price-awareness
Pineapple RepublicPanaderia Co. Davis SuppliesRecreational Outfitters Entenmanns LLCRealpoint inc. Design Excellence Ltd.Jones Manufacturing Hugo LimitedKarmabit Marshall IndustriesRetail walk-in (66 custs) 96%92% 92%84% 81%78% 76%74% 73%69% 62%~0% — price-takers 0% 100% of wholesale lines on a tier threshold
Every managed wholesale account bunches orders on tier thresholds at 62–96% — far beyond chance (~20% if quantities were random). These buyers demonstrably optimize against price structure. The retail segment shows no quantity engineering at all.
Interpretation discipline
Bunching proves buyers respond to structure (thresholds), not necessarily to level (a uniform +15% with tiers intact). A buyer who orders 20 units to get 6% off is optimizing within your menu; whether they defect at a higher menu is untested. High bunching therefore raises the risk score and the monitoring requirement — it does not prove defection. That is precisely why Wave 1 is instrumented as a test.

04Absorb vs. Cost-Orders: The Sensitivity Map

Likely to be absorbed

① Retail walk-in (both stores, $255K/2yr) — zero bunching, 1–4 unit tickets, no account relationship to renegotiate. A list increase on the 14 underpriced SKUs passes through ~66 anonymous small buyers. ② Ultra-low-margin SKUs with huge breakeven tolerance — Estes Park Chair (+31% price, survives 92% volume loss), Bindel Jacket (+25%, survives 70%), Black Leather Belt (+20%, survives 52%). The math is lopsided: when margin is 2.6%, almost any price is better than the current one, even if most buyers walk. ③ SKUs where the same buyers already pay category-median margins on comparable items — the increase moves the outlier to the price level its own customers already accept elsewhere in the basket.

Likely to cost orders

① The extreme-bunching trio — Pineapple Republic, Panaderia, Davis Supplies ($622K/2yr combined). These buyers audit price structure order-by-order; increases here need rep-led communication, not silent price-file edits. ② Single-account-dependent SKUs — Basil Lemon Hand Wash (62% of revenue from one account, 97% bunching), The Gentleman (62% top-account share): one defection erases the SKU's uplift. ③ Anything touching Jones Manufacturing ($316K, largest account, 74% bunching) without a conversation first.

Risk vs. Reward — 14 repricing actions (bubble = annualized revenue at stake)
$11K$7.3K$3.7K$0 30 (lower risk)Risk score (0–100)75 (higher risk) ACT FIRST SEQUENCE CAREFULLY Bindel Jacket The Gentleman Black Leather Jacket Estes Park Chair Brown Leather Satchel Salida BU / Basil Wash / Salida GR 3-Tone Eye Shadow
Vertical = annualized GP uplift under the conservative −5% volume case. Red bubbles = Wave 1 (risk < 45). Estes Park Chair and Brown Leather Satchel clear nearly as much value but carry account-concentration and consistency penalties — they are Wave 2 with rep involvement.

05Five-Factor Risk Scoring

Each action scored 0–100 (higher = riskier), 20 points per factor, all computed from account data — no judgment weights hidden in prose:

Factor (0–20)MeasuresComputation
Buying consistencyIs demand steady enough to detect a response?20 × (1 − active months ÷ 24)
Purchase frequencyWill we get feedback quickly?20 × (1 − min(lines/mo, 2) ÷ 2)
Customer dependencyCan one defection kill the SKU?20 × top-customer revenue share
Margin headroomHow defensible is the move?20 × (1 − margin gap ÷ 46pts) — bigger gap = more defensible = lower risk
Observed elasticity proxyDo this SKU's buyers demonstrably optimize on price?20 × (0.7 × bunching rate + 0.3 × wholesale revenue share)
SKUConsist.Freq.Depend.HeadroomElast.RiskProfile
Black Leather Jacket2.52.38.012.410.436
The Bindel Jacket4.24.47.84.516.237
The Gentleman0.80.212.39.515.538
Rhinestone Blouse6.77.38.611.311.345
Scarlet Shimmer5.89.59.910.410.146
Pro Essentials Brush Set6.77.38.68.516.047
Brown Leather Satchel6.78.28.29.816.149
Basil Lemon Hand Wash0.85.212.411.319.549
Estes Park Chair8.311.611.10.019.250
Salida Backpack BU6.79.59.57.316.750
Salida Backpack GR8.311.19.77.313.150
Aqua True Cream4.24.49.512.319.250
Black Leather Belt5.89.99.28.017.550
3-Tone Eye Shadow w/ Mirror6.78.68.712.319.556
Note what the scoring surfaces: Estes Park Chair — the biggest margin problem — carries the highest behavioral-elasticity proxy (100% of its wholesale lines bunch on thresholds) and 55% single-customer dependency. Its economics still justify action (92% breakeven tolerance), but silently, via price file, it is the wrong move; with a rep conversation, it is the right one.

06Ranked Opportunities with Expected Effects

Ranking = conservative annualized GP uplift (at −5% volume) ÷ risk score. Every action shown with its expected effect under three demand responses; v* = breakeven volume-loss tolerance (the action destroys value only beyond this).

#WaveSKUPrice ΔRiskΔGP @ 0% volΔGP @ −5%ΔGP @ −10%ΔRev @ −5%v* (breakeven)
1W1The Bindel Jacket+24.9%37$4,079$3,789$3,499+$3,05670%
2W1The Gentleman+20.0%38$3,653$3,218$2,782+$2,55742%
3W2Estes Park Chair+31.0%50$4,020$3,802$3,585+$3,17192%
4W2Brown Leather Satchel+17.9%49$3,489$3,094$2,698+$2,34044%
5W1Black Leather Jacket+14.0%36$2,610$2,212$1,814+$1,54733%
6W2Salida Backpack BU+21.3%50$1,220$1,110$1,000+$87355%
7W3†Basil Lemon Hand Wash+17.1%49$1,273$1,090$908+$83735%
8W2Salida Backpack GR+21.2%50$1,132$1,029$927+$80855%
9W3Pro Essentials Brush Set+21.6%47$661$589$517+$47546%
10W3Rhinestone Blouse+15.7%45$598$519$439+$37838%
11W3Aqua True Cream+15.5%50$622$522$422+$39031%
12W3Scarlet Shimmer+18.7%46$514$447$380+$35138%
13W3Black Leather Belt+20.4%50$479$434$388+$33852%
14W33-Tone Eye Shadow w/ Mirror+15.7%56$458$386$313+$29032%
Total — annualized$24,808$22,241$19,672+$17,411
Price Δ = the conservative half-gap increase from the prior study (closes half the distance to category-median margin). ΔGP = annualized gross-profit effect; ΔRev = annualized revenue effect at −5% volume. † Basil Lemon Hand Wash is W3 despite rank 7: 62% single-account dependency + 97% bunching means it must follow, not lead, the Panaderia/Davis conversations.
Reading v* correctly
Breakeven tolerance is the action's safety margin, not a prediction of loss. Estes Park Chair's v* of 92% means the +31% increase remains GP-positive unless more than 92% of unit volume disappears — a virtually unlosable bet economically. The risk score exists because "GP-positive" is not the only objective: a defected account stops buying other SKUs too. That cross-SKU contagion is why dependency and consistency are scored, and why high-v* actions can still be Wave 2.

07Execution Plan & Instrumentation

  1. Wave 1 (now) — Bindel Jacket, The Gentleman, Black Leather Jacket. Lowest risk scores (36–38), broad customer bases (18–25 buyers), $9.2K/yr conservative GP. Execute as silent price-file updates for retail; 30-day advance note to wholesale accounts. These three are also the instrumented elasticity test: measure repeat-order rate and average quantity per account at 90 days.
  2. Wave 2 (day 60, after Wave 1 checkpoint) — Estes Park Chair, Brown Leather Satchel, both Salida Backpacks. $9.0K/yr conservative. Estes Park Chair requires a rep-led conversation with its 55%-share account before the change lands — the SKU is nearly margin-free today, so even a negotiated partial increase wins. Frame: cost pass-through (unit cost is 95% of list).
  3. Wave 3 (day 120) — remaining seven Beauty/Apparel small SKUs, $4.0K/yr conservative. Basil Lemon Hand Wash strictly after the Panaderia and Davis Supplies review meetings — 62% dependency, 97% bunching.
  4. Instrument everything. The monitoring queries in §09 (Q5: monthly volume by repriced SKU × account; Q6: repeat-order flag) turn each wave into the price experiment this account has never run. After 6 months, real elasticity estimates replace the behavioral proxies in this report — re-run the model with observed post-change volumes.
  5. Protect the tier schedule during execution. Raise list; leave the 3/4/5/6% tier ladder intact. The bunching data shows wholesale buyers are attached to the structure; preserving it makes a level change legible and fair rather than arbitrary.
  6. Do not reprice via reps' discretion. The prior study proved pricing discipline is this account's superpower (one deviation in two years). Waves preserve that: price-file changes + scripted communication, never per-deal negotiation.

08Methodology, Assumptions & Limitations

What was measured

Universe identical to the prior study (CustInvc + CashSale product lines, elimination sub excluded, ≥5-line SKUs, delivery service excluded; 3,236 lines / $2.105M / 23.7 months; annualization ×0.507). Price-change scan: distinct realized unit prices per SKU × quantity-tier (0 change events found). Bunching: share of qty≥5 lines with qty ≡ 0 (mod 5). Dependency: top-customer share of SKU revenue. Consistency/frequency: active months of 24, lines per month. Headroom: gap to category-median margin (Apparel 46.2%, Beauty 51.9%, Home & Decor 48.6%). Scenario math: ΔGP(p, v) = (1−v)·(R(1+p) − C) − (R − C); v* solves ΔGP = 0.

Assumptions

(1) No true elasticity is claimed. All sensitivity reads are behavioral proxies (bunching, breakeven bounds, cross-price-point evidence); they bound but do not measure demand response. (2) Cost held constant in scenarios; costestimate is the cost of record. (3) Volume-loss scenarios (0/−5/−10%) applied uniformly per SKU; concentrated defection is addressed via the dependency factor and wave sequencing, not the scenario math. (4) Cross-SKU contagion (a defecting account dropping other SKUs) is managed procedurally (waves, rep conversations), not modeled. (5) The 5-unit bunching baseline under random ordering ≈ 20%; observed 62–96% is treated as deliberate optimization. (6) Half-gap price increases from the prior study carried over unchanged.

Limitations

With zero historic price events, this report's sensitivity model cannot be validated in-sample — it is falsifiable only by running Wave 1. That is by design: the plan's first wave doubles as its own validation experiment, and the 90-day checkpoints convert this report from estimate to measurement.

09Appendix: Source Queries

Q1 — Price-change event scan (the zero-events finding)
-- Distinct realized unit prices per SKU x quantity-tier; dp > 1 = a price change happened
SELECT s2.itm, i.itemid AS sku, s2.tier, s2.dp AS distinct_prices, s2.minp, s2.maxp
FROM (
  SELECT tl.item AS itm,
         CASE WHEN ABS(tl.quantity) >= 20 THEN 'T5' WHEN ABS(tl.quantity) >= 15 THEN 'T4'
              WHEN ABS(tl.quantity) >= 10 THEN 'T3' WHEN ABS(tl.quantity) >= 5 THEN 'T2'
              ELSE 'T1' END AS tier,
         COUNT(DISTINCT ROUND(ABS(tl.netamount / tl.quantity), 2)) AS dp,
         ROUND(MIN(ABS(tl.netamount / tl.quantity)), 2) AS minp,
         ROUND(MAX(ABS(tl.netamount / tl.quantity)), 2) AS maxp
  FROM transaction t
  JOIN transactionline tl ON tl.transaction = t.id
  JOIN item i2 ON i2.id = tl.item
  WHERE t.type IN ('CustInvc','CashSale') AND tl.mainline = 'F' AND tl.taxline = 'F'
    AND tl.subsidiary <> 4 AND tl.quantity <> 0 AND tl.netamount <> 0
    AND i2.itemtype IN ('InvtPart','Kit','Assembly','NonInvtPart') AND i2.id <> 284
  GROUP BY tl.item, CASE WHEN ABS(tl.quantity) >= 20 THEN 'T5' WHEN ABS(tl.quantity) >= 15 THEN 'T4'
              WHEN ABS(tl.quantity) >= 10 THEN 'T3' WHEN ABS(tl.quantity) >= 5 THEN 'T2' ELSE 'T1' END
) s2
JOIN item i ON i.id = s2.itm
WHERE s2.dp > 1
ORDER BY s2.dp DESC
-- Result in this account: ZERO ROWS. No SKU's price ever changed within a tier.
Q2 — Per-SKU behavioral metrics (frequency, coverage, bunching)
SELECT i.itemid AS sku, COUNT(*) AS ln, COUNT(DISTINCT t.entity) AS custs,
       COUNT(DISTINCT TO_CHAR(t.trandate,'YYYY-MM')) AS active_months,
       SUM(CASE WHEN ABS(tl.quantity) >= 5 THEN 1 ELSE 0 END) AS wholesale_lines,
       SUM(CASE WHEN ABS(tl.quantity) >= 5 AND MOD(ABS(tl.quantity),5) = 0
                THEN 1 ELSE 0 END) AS threshold_lines,   -- bunching numerator
       ROUND(SUM(ABS(tl.netamount)), 0) AS rev
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id
JOIN item i ON i.id = tl.item
WHERE /* standard universe filters */
GROUP BY i.itemid HAVING COUNT(*) >= 5
ORDER BY rev DESC
Q3 — Customer-dependency (top-account concentration per SKU)
SELECT sub.sku, ROUND(MAX(sub.crev) / SUM(sub.crev), 3) AS top1_share, COUNT(*) AS cust_count
FROM (
    SELECT i.itemid AS sku, t.entity AS cust, SUM(ABS(tl.netamount)) AS crev
    FROM transaction t
    JOIN transactionline tl ON tl.transaction = t.id
    JOIN item i ON i.id = tl.item
    WHERE /* standard universe filters */
    GROUP BY i.itemid, t.entity
) sub
GROUP BY sub.sku HAVING SUM(sub.crev) > 0
Q4 — Segment/account bunching & cadence (§03 table)
SELECT CASE WHEN c.salesrep IS NULL THEN '(RETAIL WALK-IN)' ELSE c.entityid END AS account,
       MAX(COALESCE(e.entityid,'-')) AS rep,
       COUNT(DISTINCT t.id) AS trx, COUNT(DISTINCT tl.item) AS skus,
       COUNT(DISTINCT TO_CHAR(t.trandate,'YYYY-MM')) AS active_months,
       SUM(CASE WHEN ABS(tl.quantity) >= 5 THEN 1 ELSE 0 END) AS ws_lines,
       SUM(CASE WHEN ABS(tl.quantity) >= 5 AND MOD(ABS(tl.quantity),5) = 0
                THEN 1 ELSE 0 END) AS threshold_lines,
       ROUND(SUM(ABS(tl.netamount)), 0) AS rev
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id
JOIN customer c ON c.id = t.entity
LEFT JOIN employee e ON e.id = c.salesrep
JOIN item i ON i.id = tl.item
WHERE /* standard universe filters */
GROUP BY CASE WHEN c.salesrep IS NULL THEN '(RETAIL WALK-IN)' ELSE c.entityid END
ORDER BY rev DESC
Q5 — Post-change monitoring: monthly volume by repriced SKU × account (standing control)
-- Run monthly after each wave; compare units/account to the pre-change baseline
SELECT TO_CHAR(t.trandate,'YYYY-MM') AS mo, i.itemid AS sku,
       CASE WHEN c.salesrep IS NULL THEN '(RETAIL)' ELSE c.entityid END AS account,
       SUM(ABS(tl.quantity)) AS units, COUNT(DISTINCT t.id) AS orders,
       ROUND(SUM(ABS(tl.netamount)), 2) AS rev
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id
JOIN customer c ON c.id = t.entity
JOIN item i ON i.id = tl.item
WHERE /* standard universe filters */
  AND i.itemid IN ( /* repriced SKU list for the active wave */ )
  AND t.trandate >= TO_DATE(/* wave go-live minus 6 months */, 'YYYY-MM-DD')
GROUP BY TO_CHAR(t.trandate,'YYYY-MM'), i.itemid,
         CASE WHEN c.salesrep IS NULL THEN '(RETAIL)' ELSE c.entityid END
ORDER BY 2, 3, 1
Q6 — Scenario & risk computation (performed in sandboxed JS, not SQL)
// Per SKU: R = annualized revenue, C = annualized cost, p = price increase, v = volume loss
deltaGP(p, v) = (1 - v) * (R*(1+p) - C) - (R - C)
vStar        = 1 - (R - C) / (R*(1+p) - C)          // breakeven volume-loss tolerance
risk (0-100) = 20*(1 - activeMonths/24)              // buying consistency
             + 20*(1 - min(linesPerMonth, 2)/2)      // purchase frequency
             + 20*(top1CustomerShare)                // customer dependency
             + 20*(1 - marginGapPts/46)              // margin headroom (defensibility)
             + 20*(0.7*bunchingRate + 0.3*wholesaleRevShare)  // elasticity proxy
rank score   = deltaGP(p, 0.05) / risk               // conservative uplift per risk point
DISCLAIMERS & LIMITATIONS. No demand elasticity has been econometrically estimated: zero price-change events exist in the analysis window, and all price-sensitivity classifications derive from behavioral proxies (tier-threshold bunching, breakeven arithmetic, cross-price-point comparison) that bound but do not measure demand response. Gross margin uses transactionline.costestimate, which may differ from posted COGS. Scenario effects assume uniform volume response and constant cost; concentrated-account defection and cross-SKU contagion are addressed through sequencing, not modeled. Price increases carried over from the companion Price & Margin Realization Study (half-gap to category-median margin). Annualization factor 0.507 (12 ÷ 23.7 months). Rep attribution via customer.salesrep. Prepared by Sonar AI from NetSuite production data, account TD3016323, Aug 26, 2026. Figures rounded; components may not sum exactly.
TD3016323 · COMMERCIAL ANALYTICS · SONAR AI