Use when someone needs to find out how much customers will actually pay before setting or changing a price — e.g. "what's the most profitable price for this", "should I survey my list about pricing", "how do I test willingness to pay", "is Van Westendorp the right method", "we're just copying competitor prices".
Installs into .claude/skills of the current project.
Are you the author of Price Research?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/checkout-page-price-research)
---
name: price-research
description: Use when someone needs to find out how much customers will actually pay before setting or changing a price — e.g. "what's the most profitable price for this", "should I survey my list about pricing", "how do I test willingness to pay", "is Van Westendorp the right method", "we're just copying competitor prices".
---
# Price research
Find the profit-maximizing price with two one-question surveys and a correction step, instead of guessing, copying competitors, or averaging "what would you pay?" answers. The method combines an open question (which people overstate) with a randomized yes/no question (which is unbiased but coarse) to get an accurate demand curve cheaply.
## When to use
- Pricing a new product, plan, or course before launch
- Deciding whether to raise or lower an existing price
- The user proposes a "how much would you pay?" survey, Van Westendorp, or competitor matching
## When not to use
- Choosing the digits or presentation of a price already decided → the `pricing` skill
- Unable to get ~500 completed responses (30 per closed price × 7, the same again for the open survey, plus drop-off): the method needs volume; suggest a price A/B test instead
## Inputs
- Product description, images, or a demo (realism matters)
- Unit cost, reachable audience size, currency
- The lowest and highest price you can imagine charging
- Channels to recruit respondents (site, newsletter, customers, panel)
- Strategy: maximize profit now, volume/reach, or premium positioning
## Procedure
1. **Why not the usual methods.** Averaging open "how much would you pay?" answers overstates by a large margin (often ~50%). Asking "would you buy at $X?" alone is biased by the price acting as a quality cue. Competitor matching ignores your own demand. Van Westendorp gives an "acceptable range", not the profit-maximizing point. The lab-standard auction method (BDM) is accurate but requires selling the real product and is too costly for most teams.
2. **Build the price ladder.** Pick 7 prices with equal steps from the lowest to the highest plausible price ($20, $40 … $140). More steps need more respondents. †
3. **Write two surveys with identical product descriptions.** Survey A (open): "What is the most you would pay for [product]? (in $)". Survey B (closed): "Would you buy [product] for $X? Yes / No", where X is one ladder price chosen at random per respondent. Use a tool that supports random-subset questions (Qualtrics does) and a random link splitter to send 50% to each survey.
4. **Sample size.** At least 30 answers per closed price → 210 for B, the same for A, plus ~80 for drop-off ≈ 500 total. † Work back from your expected response rate: at 5%, a list of 10,000 yields ~500. Recruit existing or prospective customers first; panels are a fallback. Say "one quick question" and offer a reward (coupon, prize draw). Keep it open 2–3 weeks.
5. **Test before launch.** Preview both surveys, open the split link in incognito several times, confirm prices randomize, delete test answers.
6. **Clean.** Drop $0 and absurd answers from Survey A (the script drops anything above 5× the median; adjust with `--max-multiple`). †
7. **Correct.** `corrected = open_answer − mean(open) + mean(closed)`, where `mean(closed)` is the area under the yes-share curve across the ladder (the script uses the trapezoid rule, assuming 100% would buy at $0 and 0% one step above the top price). Each corrected value is an estimate of that respondent's willingness to pay; the distribution, not any single value, is what you use.
8. **Demand and profit.** For each ladder price: share of corrected values ≥ price; buyers = share × audience; profit = (price − unit cost) × buyers. Pick the maximum; the script also lists near-ties (within 10% of the best profit), refuses to recommend a price when none is profitable at the given cost or when any price (or the open survey) has fewer than 30 answers, and stops on any closed-survey answer that isn't a recognisable yes/no. *Audience* is the number of people who will actually see the offer (expected launch reach), not the size of the survey list. *Unit cost* is the marginal cost per sale; for digital products that is near $0 plus any per-sale fees, and the profit-maximizing price then equals the revenue-maximizing one. If two adjacent prices are within ~10% on profit, treat them as a tie and let strategy (step 9) or a live A/B test decide.
9. **Override by strategy.** A premium brand may choose a higher price at lower profit to attract future buyers; a reach-first launch may go lower. Say which you chose and why. †
Run `scripts/wtp_calc.py --open open.csv --closed closed.csv --cost 5 --audience 8000` (`open.csv`: column `wtp`; `closed.csv`: columns `price,answer`). Example output on synthetic data (230 open answers, 30 per price on a 7-step ladder):
```
Open survey: 230 answers, 3 dropped (<=0 or >5x median)
Closed survey: 210 answers across 7 prices
30.00 yes 96.7% n=30
60.00 yes 86.7% n=30
90.00 yes 40.0% n=30
120.00 yes 23.3% n=30
150.00 yes 13.3% n=30
180.00 yes 3.3% n=30
210.00 yes 0.0% n=30
mean_open = 125.59
mean_closed = 94.00
correction = mean_closed - mean_open = -31.59 (applied to every open answer)
corrected mean WTP = 94.00
price share willing buyers profit
30.00 83.7% 6696 167401
60.00 63.0% 5040 277181
90.00 42.3% 3383 287577
120.00 26.9% 2150 247225
150.00 17.2% 1374 199295
180.00 11.9% 952 166520
210.00 7.5% 599 122819
Profit-maximizing price: 90.00 (profit 287577 at cost 5, audience 8000)
Near-ties (within 10% of the best profit): 60.00 — treat as tied; decide by strategy or a live A/B test.
Override for strategy: a premium brand may pick a higher price; a reach-first launch a lower one.
```
## Output
| Item | Value |
|---|---|
| Price ladder | 7 prices, equal steps, range stated |
| Survey A / B wording | exact text |
| Sample plan | ≥30 per price; target ~500; channels; incentive; duration |
| Correction constants | mean_open, mean_closed, shift |
| Demand & profit table | per ladder price |
| Recommended price | with the strategy override, if any |
## Common mistakes
- Averaging "what would you pay?" answers — overstated; needs the closed-survey correction.
- Reaching for Van Westendorp — gives a range, not the profit-maximizing point.
- Uneven ladders ($20, $50, $100) — steps must be equal for the correction to hold.
- Too many prices for the sample (10 prices with 276 answers) — under 30 per price; use 7 and run longer.
- Thin product description — respondents price what they imagine; show images or a demo.
- Picking the top-profit price blindly when the brand is premium — state the strategic override.
## Quick reference
| Step | Rule |
|---|---|
| Ladder | 7 prices, equal steps, generous range |
| Split | 50/50 random to open vs closed; random price within closed |
| Sample | ≥30 per closed price, ~500 total |
| Clean | Drop 0 and outliers (>5× median) |
| Correct | open − mean(open) + mean(closed) |
| Choose | max (price − cost) × audience × share ≥ price, then apply strategy |
† No primary citation on file for this rule — a practitioner tip, not a measured finding.
Evidence and effect sizes: see [reference.md](reference.md).