How we calculate prices

The data pipeline behind every number on ScentLedger.

1. Data sources

The ScentLedger price guide is built from community-submitted listings — entries from publicly visible secondary-market sales channels including enthusiast trade groups, marketplace listings, and direct user submissions. Every record includes the listing price in its original currency, the stated bottle size, and a free-text fragrance name. No listing is sourced from a retailer's first-sale price, so the published numbers reflect what bottles are actually changing hands for, not what they cost new.

2. Canonicalization

Free-text fragrance names are notoriously messy: "BdC EdP", "Bleu de Chanel Eau de Parfum", and "chanel bleu edp" all describe the same product. ScentLedger maintains a curated registry of canonical fragrance entries, each with a stable ID, a canonical key, the brand, the launch year, the perfumer, and the official notes pyramid. Incoming listings are matched to canonical entries through a combination of fuzzy string matching, alias tables, and human review. Any listing that fails to match with confidence is held in a manual review queue and excluded from public stats until it's resolved.

3. Normalization and bucketing

Every matched listing is converted to two derived values: a total price in USD and a price-per-milliliter. Bottle sizes are normalized to standardized buckets that span the range from small decants through full retail presentations. Decant and partial-bottle listings are handled separately from full-bottle listings so that a small decant doesn't get averaged into a full-bottle comparison.

4. Aggregation

Within each (canonical fragrance × size bucket) cell we publish the median rather than the mean. The median is robust to outliers — a single unsealed-collector's-grail listing at five times the going rate doesn't drag the published number out of shape, and a single fire-sale doesn't either. Each cell also reports its sample count (so you can judge how thin or thick the data is) and the timestamp of the most recent observation.

5. Refresh cadence

The public guide is updated continuously as new listings arrive, and a new submission is typically reflected in the published medians within minutes. Historical price-history charts are rebuilt daily.

6. Vault tiers

A separate "vault" surface highlights fragrances that meet elevated criteria for scarcity or provenance. Vault inclusion is evaluated along independent dimensions rather than collapsed into a single tier, so a fragrance can qualify on one criterion, the other, or both. Vault entries are reported alongside the standard price guide and run through the same median-based pipeline.

7. Known limitations

ScentLedger reports central tendencies, not guarantees. Real-world resale prices vary with bottle condition, batch desirability, packaging completeness, and the specific buyer/seller pair. A page showing a $180 median for a 100 ml bottle is not a quote; it's a starting point for your own decision. Cells with very low sample counts (fewer than five observations) are flagged in the UI and should be treated as directional rather than authoritative.

8. Corrections

If a price looks obviously wrong, a fragrance is mis-canonicalized, or a brand entry is missing, use the feedback button on any page or email hello@scentledger.app. Real corrections from real people are how the dataset gets better.

See also: About ScentLedger.