Goal
Surface how long the lowest CardMarket listing has been live. A listing sitting unsold for months signals the market disagrees with that price — it may not represent a real floor. Feeds into the Opportunity Score (#91) as a price reliability signal: stale cheap listings are discounted.
Design notes
- CardMarket listing pages expose the listing date per row — scrape alongside price in the existing CardMarket source
- Track
listingAge (days since posted) for the lowest 1–3 listings
- Surface as a staleness indicator in the side panel: "lowest listing posted 180 days ago"
- Flag listings older than a configurable threshold (e.g. 90 days) as potentially stale
Open questions
- Does CardMarket reliably expose listing dates in the scraped HTML? Needs verification before committing to this approach.
- Store raw listing date or age-in-days at sync time? Raw date is more flexible for retrospective analysis.
Role in Opportunity Score (#91)
Feeds stalenessSignal in OpportunityScore. A stale listing at a low price is not real market willingness to transact — the longer it has sat unsold, the more the apparent "deal" is discounted. Fresh listings at low prices are a stronger signal.
Blocks
Goal
Surface how long the lowest CardMarket listing has been live. A listing sitting unsold for months signals the market disagrees with that price — it may not represent a real floor. Feeds into the Opportunity Score (#91) as a price reliability signal: stale cheap listings are discounted.
Design notes
listingAge(days since posted) for the lowest 1–3 listingsOpen questions
Role in Opportunity Score (#91)
Feeds
stalenessSignalinOpportunityScore. A stale listing at a low price is not real market willingness to transact — the longer it has sat unsold, the more the apparent "deal" is discounted. Fresh listings at low prices are a stronger signal.Blocks