Psm skill
To create PSM charts for the PSM questions asked in the Market Research Survey
npx -y skills add itsnagarajan/psm-skill --skill psm-skillAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Run a Van Westendorp Price Sensitivity Meter (PSM) analysis from survey data. Use this whenever a user drops or uploads a survey file (CSV/Excel) and wants pricing analysis, mentions "price sensitivity", "Van Westendorp", "PSM", "optimal price point", "acceptable price range", "OPP/IPP/PMC/PME", "willingness to pay" from the four PSM questions, or asks to find the right price from "too cheap / cheap / expensive / too expensive" survey responses. Also trigger when a user has pricing-survey columns and wants the curves, key price points, an interactive chart, an Excel workbook, or a Word/PDF report. Produces all three deliverables by default.
SKILL.md
5.8 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
Price Sensitivity Meter (Van Westendorp)
Turn a pricing survey into the four cumulative curves, the four key price points (PMC, OPP, IPP, PME) and the acceptable price range — then deliver an interactive chart, an Excel workbook, and a Word/PDF report.
A deterministic engine does all the math and the chart/Excel rendering. Your job is to wire it up to the user's file, sanity-check the column mapping, build the report, and explain the results. Do not re-implement the curve math yourself.
Workflow
1. Locate the data file
The user drops a CSV or Excel file. Find it under /mnt/user-data/uploads/.
The file needs one row per respondent and four price columns (the four PSM
questions). Extra columns (respondent ID, demographics, etc.) are fine and ignored.
If no file is present, check what the user has:
- They have raw responses but no formatted file → offer the blank input
template at
assets/psm_template.xlsx. Present it withpresent_filesso they can fill it in. It has the four correctly-named question columns (which makes auto-detection foolproof), an Instructions sheet, and an Example sheet. - They have nothing yet → point them to the template as a starting point for collecting responses, and briefly explain the four PSM questions.
2. Run the engine
python /path/to/skill/scripts/psm_analysis.py "<uploaded_file>" \
--outdir /mnt/user-data/outputs/psm --currency "$"
Set --currency to match the data ($, €, £, AED, etc.; it is only used
for cleaning and labels). The script auto-detects the four columns from header
keywords, strips currency symbols, drops blank/non-numeric rows, and flags
intransitive responses (those violating too_cheap ≤ cheap ≤ expensive ≤ too_expensive), excluding them by default.
It writes to the outdir:
results.json— price points, curves, diagnostics, the column mapping it chosepsm_curves.png— static chart (embed this in the report)psm_chart.html— self-contained interactive chartpsm_analysis.xlsx— Summary, Curves (+ native chart), Clean Data, Excluded
3. Verify the column mapping (important)
Read column_mapping from the script's stdout / results.json and confirm it
matched the right column to each role. If headers were vague, it falls back to
ordering the first four numeric columns by median. If the mapping looks wrong,
re-run with explicit overrides (accepts a header name or a 0-based index):
... --too-cheap "Q1" --cheap "Q2" --expensive "Q3" --too-expensive "Q4"
Also glance at n_analyzed, n_dropped_missing, and n_intransitive — a high
intransitive share signals a data-quality or column-mapping problem worth raising.
4. Present results
Show the interactive chart inline using the visualizer (show_widget) by reading
psm_chart.html content, OR present psm_chart.html as a file for download.
Give the four price points and the acceptable range in a short readable summary.
Pull interpretation language from references/methodology.md — especially the
OPP-vs-IPP reading and the standard caveats (PSM gives an acceptable band, not a
revenue-maximizing price or demand volume).
5. Build the deliverables the user asked for
By default produce all three. The Excel workbook and both charts already exist
from step 2. For the Word/PDF report, use the docx skill (and pdf skill if
PDF is requested) — read that skill first, then build a report that contains:
- Title + one-paragraph executive summary naming the recommended price (OPP) and the acceptable range (PMC–PME)
- A Key price points table (code, price, meaning) from
results.json - The embedded
psm_curves.png - A short Methodology section and a Caveats section (from
methodology.md) - Sample size and exclusions (
n_analyzed, dropped, intransitive)
Finally, call present_files with the report first, then the Excel and the
interactive HTML chart.
Output summary template
Use this structure when summarizing in chat:
Recommended price (OPP): <currency><price>
Acceptable range (PMC–PME): <currency><low> – <currency><high>
Indifference price (IPP): <currency><price>
Based on N = <n_analyzed> valid responses (<dropped> dropped, <intransitive> intransitive).
Notes & edge cases
- Currency / locale: pass the right
--currency; the cleaner removes thousands separators and stray symbols automatically. - Too few rows: the engine errors below 5 usable responses — relay that and ask for more data.
- Two-column "cheap/expensive" only data: PSM needs all four questions; if only two are present, explain that a full PSM isn't possible.
- Purchase-intent fields present: a revenue-optimizing extension
(Newton-Miller-Smith) becomes possible — see
references/methodology.md. Only pursue it if intent data genuinely exists; otherwise keep scope to classic PSM. - Blank input template:
assets/psm_template.xlsxis a ready-to-fill workbook whose headers match the engine's auto-detection. Offer it whenever a user needs to collect or reformat responses before analysis. - The four roles, intersections, and interpretation are documented in
references/methodology.md; read it before writing report narrative.