Price guide
Sold-price medians and format breakdowns per title, SEO-friendly title/format landing pages, and confidence cues from listing volume.
Film Price Guide · physical media market intelligence
A full-stack data product for collectors: automated sold-listing ingestion, community signal, wave scoring, and a public web app — grounded in real comps, not asking prices.
Production snapshot · March 2026 · standalone portfolio (main app offline)
Each item below is a shipped feature in the RetroPrice codebase: PHP pages, APIs, cron jobs, and Python analyzers wired to PostgreSQL. This page describes them — no live app links.
Sold-price medians and format breakdowns per title, SEO-friendly title/format landing pages, and confidence cues from listing volume.
Fast lookup across the TMDB-backed catalog with enriched metadata (posters, years, cast) and deep links into comp history.
In-store “is this a deal?” flow: compare shelf price to recent sold medians across formats and conditions.
Automated poller surfaces underpriced listings from Goodwill’s online shop against internal comp thresholds.
Curated feed of hot physical media pre-orders and drops, cross-referenced with collector interest signals.
Long-form SEO guides (grading, hunting, format primers) generated from structured templates and JSON metadata.
0–100 heat scores blending eBay scarcity, Reddit velocity, and seasonality — with human-readable buy/sell/hold states.
Community shelves and watchlists: share what you own, track wants, and discover titles trending in the collector graph.
Versioned JSON endpoints for prices, heating-up titles, myth-bust stats, and integrator API keys with rate limits.
PHP handles the web app and API integrations; Python runs ML and heavy analysis. PostgreSQL stores JSONB listing payloads; Redis caches hot reads. A cron-driven pipeline runs twice daily.
┌─────────────────────────────────────────────────────────┐ │ Daily pipeline (cron) │ │ eBay crawl ──→ Reddit scan ──→ AI insights ──→ Wave │ │ (PHP) (PHP) (Python) analyzer │ │ ▼ ▼ │ │ ┌─────────────────┐ ┌──────────────┐│ │ │ PostgreSQL │ │ ML predict ││ │ └────────┬────────┘ └──────────────┘│ │ ▼ │ │ ┌─────────────────┐ │ │ │ PHP web app │ │ │ └─────────────────┘ │ └─────────────────────────────────────────────────────────┘
Every estimate traces back to sold-listing and auction data plus optional community signal.
| Format | Listings | Titles | Avg sold |
|---|---|---|---|
| DVD | 376,539 | 3,251 | $12.14 |
| Blu-ray | 293,176 | 2,177 | $18.21 |
| 4K UHD | 154,007 | 852 | $32.37 |
| LaserDisc | 73,453 | 747 | $42.05 |
| VHS | 4,538 | 939 | $22.03 |
| Title | Format | Avg sold |
|---|---|---|
| Akira (1988) | VHS | $1,543.99 |
| The Ballad of Buster Scruggs | Blu-ray | $1,293.44 |
| The Matrix (1999) | LaserDisc | $1,098.44 |
| The Iron Giant (1999) | LaserDisc | $446.10 |
Collection began August 2025 with twice-daily eBay batches (~100 catalog titles per run across formats).
price_history.eBay OAuth, Reddit, TMDB, rate limits, webhooks, public read APIs.
Cron ETL in PHP/Python, JSONB modeling, sitemaps at scale.
Feature engineering, scikit-learn pipelines, confidence blending.
Design system, Alpine.js, PWA, SEO title/format pages.
CSRF, sessions, deployment automation, backups and monitoring.
Physical media formats, grading, comps, collector guides.
The wave system maps numeric scores to collector-friendly states used across dashboards and alerts.
| Score | Status | Typical read |
|---|---|---|
| 75+ | Peak | Consider selling before cool-off |
| 60–74 | Heating up | Hold / watch momentum |
| 40–60 | Stable | Sideways market |
| 25–40 | Cooling | Wait for better entry |
| <25 | Bottom | Default state for most titles — hunt inflection |
A standalone long-form narrative lives in this folder as
case-study.md (metrics, pipeline phases, ML results, and lessons).
Additional repo docs: docs/how-we-built-film-price-guide.md,
docs/wave-analysis-system.md.