A personal baseball card collection tracker with live eBay market pricing and AI-powered card identification.
Collection view — search, filter, and sort across your entire collection
Card detail — full card info with a live price history chart
- AI card identification — Drop a photo of a card; Claude Vision auto-fills player, team, year, set, and card number
- Live market pricing — Pulls recent sold listings from the eBay Browse API and computes a median market value
- Price history chart — Tracks value over time with an auto-scaled SVG chart; stale prices refresh automatically in the background
- Collection management — Search, filter by team/condition, and sort by year, player, or value
| Layer | Tech |
|---|---|
| Frontend | React 19, React Router v7, Vite |
| Backend | FastAPI, SQLAlchemy, PostgreSQL |
| Background tasks | Celery + Redis |
| Pricing | eBay Browse API (OAuth2) |
| AI | Anthropic Claude Vision API |
Refreshing a card's price kicks off a Celery task that queries eBay for recent sold listings matching the card's player, year, set, and condition. It filters outliers and computes the median, then appends the result to the card's price history. Cards not updated in 24+ hours are refreshed automatically on a Celery beat schedule.

