{
  "@context": "https://schema.org",
  "@type": "Dataset",
  "name": "K-Beauty Price Observation Aggregate",
  "site": "https://kbeautyanswers.com",
  "api_url": "https://kbeautyanswers.com/api/price-observations.json",
  "generated_at": "2026-09-10T05:25:29.671Z",
  "source_window": "Rolling 21-day window over products.spec.price_history (Naver Shopping lprice, event-based — a row is only appended when a listing price changes, not on every daily check).",
  "update_frequency": "Weekly republish of this aggregate (underlying price_history source refreshes daily via the naver-daily collection cron).",
  "counts": {
    "raw_observations": 0,
    "distinct_skus_observed": 0,
    "weeks_covered": 0,
    "categorized_observations": 0,
    "uncategorized_observations": 0,
    "category_coverage_pct": 0
  },
  "category_method": {
    "description": "category is inferred by matching each product's Korean title (name_ko) against the same discovery keyword taxonomy our own collection pipeline uses (scripts/collect/naver-daily.ts MAJORS/SPECIFICS) — it is NOT the products.category_id foreign key.",
    "why_not_category_id": "products.category_id is defined in the schema but is unpopulated on every row of the local build snapshot available to this build (0 of 3,682 sampled products-detail rows carry a value); resolving it would require a live database query, which this build cannot perform (Supabase egress lock).",
    "uncategorized_is_a_real_bucket": "Every raw observation is counted in exactly one named category or \"uncategorized\" — none are silently dropped."
  },
  "honesty_notes": [
    "These are aggregates only (median/mean/sku_count/wow_change_pct) — no per-listing price, seller name, or product URL is republished here.",
    "price_history is event-based, not a daily census: sku_count means \"SKUs with a recorded price change event that week,\" not a fixed weekly panel of all tracked SKUs. Observed weekly sku_count in the current window ranged from roughly 140 to 23,000 — a large swing driven by collection cadence, not typical market volatility.",
    "wow_change_pct compares medians across weeks that can have very different sample sizes; treat it as an observational signal, not a like-for-like index. Cells with fewer than 5 SKUs report median/mean as null (insufficient_sample: true) instead of a noisy number.",
    "Underlying Naver Shopping listings remain the property of their respective sellers/marketplace; this endpoint distributes an aggregated, edited statistic, not a republished listing feed."
  ],
  "license": {
    "type": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "K-Beauty Answers. (2026). K-Beauty AI Citation Dataset. https://kbeautyanswers.com/dataset/. Licensed under CC BY 4.0.",
    "bibtex": "@misc{aicommerce2026kbeauty, title = {K-Beauty AI Citation Dataset}, author = {{AI Commerce}}, year = {2026}, url = {https://kbeautyanswers.com/dataset/}, license = {CC BY 4.0}}",
    "raw_material_note": "This aggregate is derived from public Naver Shopping listing prices. The underlying listings remain the property of their respective sellers/marketplace; CC BY 4.0 applies to AI Commerce's own aggregation and editorial selection (the computed category/week statistics), not to a republished listing feed."
  },
  "citation_guidance": "Cite this specific endpoint URL (not just /dataset/) when referencing K-beauty price observation trends.",
  "weekly_totals": [],
  "weekly_by_category": []
}