Collected price observations → deterministic derivation of a price positioning map + empty price bands (whitespace). 100% of all price claims specify source and observation date.
This skill is an analysis pattern. The act of collecting prices is out of scope — data can be brought in with any tool (web collection MCP, search API, internal sheets, manual paste). The skill's value lies in structuring and interpreting the collected prices in a reproducible way. Therefore, it works identically in any market or currency even without a specific collection tool.
When to use
- When you need to decide the entry price bandfor your product/brand
- When looking for empty price bands (whitespace) in the competitive price distribution
- When organizing representative brands/items by price band into a table and drawing a positioning map
- When consolidating할 때
Input — normalized price observations
It takes only one artifact from the collection stage. CSV or JSON, one row per observation. For required/optional columns and examples, see references/input-schema.md .
| Field | Required | 뜻 |
|---|---|---|
brand |
O | Brand/business name |
item |
O | Item/SKU/plan name |
price |
O | Observed price (actual selling price) |
currency |
O | Currency code (KRW, USD, etc.) |
source_url |
O | Source URL |
observed_at |
O | Observation date (YYYY-MM-DD) |
category · tier_hint · value_metric |
(Optional) subcategory, band hint, value scale |
When dividing collection among multiple workers, just pass each worker the collection contractsaying "collect in this column format" (tool is free). The contract text can be copied as-is into
references/input-schema.md.
Deterministic workflow (6 steps)
-
Scope definition — One line for the market to analyze + one currency. If candidate entry bands are already determined, use them as thresholds (e.g., low price 50k or less, mid price 50–150k, premium 150k or more); if not, automatically band by data quantiles.
-
Normalization — Fit observations to the above schema, and separate rows with non-numeric prices or missing required values into an exclusion list (do not discard; record the reason). If currencies are mixed, analyze only the most frequent currency and leave the rest as data gaps.
-
Calculation (deterministic) — Count, share, min, p25, median, p75, max, mean, and standard deviation per band, outliers marked by IQR, and the largest empty interval on the price axis (whitespace). The same input always produces the same output. Do not do it by hand; use the analyzer.
python3 scripts/positioning.py observations.csv \ --bands "저가:-50000,중가:50000-150000,프리미엄:150000-" \ --market "3040 남성 패션 (KR)" --format md --out pricing-landscape.md--bandsIf omitted,--quantiles N(default 3) automatically bands the data by quantile.- Uses only the standard library, with no network, environment variables, or external execution whatsoever (it reads only the data file and writes only the result file).
-
Interpretation — Attach meaning to the numbers (this is the human's job). Read the value scale, price psychology, and switching costs, and judge whether an empty price range is a real opportunityor a desert with no demand. The 7 principles are
references/methodology.md. -
Verification — Check whether every price claim has a source and observation date, whether estimates and facts are distinguished, and whether data gaps are stated. The criteria are
references/evidence-and-honesty.md. -
Output —
positioning.json(fixed schema) andpricing-landscape.md(fixed sections). The format and fields arereferences/output-spec.md.
Output (fixed format)
positioning.json— A machine-readable schema containing band statistics, whitespace, outliers, value-scale distribution, data gaps, and flags (schema_versionfixed).pricing-landscape.md— A human-readable report of the band table + whitespace + data gaps + Red/Yellow flags. The analyst adds entry price range recommendations with supporting rationale.
Both outputs produce the same result from the same input by the analyzer. Only the interpretation sentences are added by a human, and added sentences must always carry an evidence label.
Absolute constraints
- Collection is not this skill's job. Do not scrape prices within the skill. Input is received from outside.
- Source and observation date for every price claim. Prices without a source are excluded from analysis or marked as weak signals.
- Separate estimates from facts —
[Data]·[Estimate]·[Assumption]·[Opinion]labels. Do not write estimates as if they were facts. - No evaluative vocabulary — Instead of "good, bad, cheap, expensive," speak with numbers and observations.
- Do not hide data gaps. It is better to leave blanks as gaps than to make them up.
- Maintain determinism — No random or time-dependent values. Dates come from the data's observation date.
Handoff
positioning.jsonThe slide creator cites the bands and whitespace directly in the positioning map slide, and the entry price range recommendations are passed as input to the decision card (kanban, report).
Reference files
| File | When to read | Purpose |
|---|---|---|
references/input-schema.md |
When drafting the collection contract | Normalized observation schema + tool-agnostic collection contract wording |
references/methodology.md |
Interpretation stage | The 7 principles of price analysis (value scale, tiers, price psychology, switching costs, whitespace, map, recommendations) |
references/output-spec.md |
Output stage | positioning.json schema + pricing-landscape.md template + deterministic rules |
references/evidence-and-honesty.md |
Verification step | Evidence labels, quantification, observation date, data gaps, flag rules |