SlabTrack — the operator brain
SlabTrack is where every card in your collection lives, gets priced, gets routed, and gets monitored. It's the only app that talks to ALL the satellites; the satellites only know about themselves. Think of SlabTrack as your inventory + intelligence + control plane.
Top-level surfaces
| Page | What it's for |
|---|---|
/dashboard | Your full collection grid — every card, search, filter, bulk actions |
/console | The Operator Console — pulse, channels, quick actions (the front door) |
/command | Ecosystem Command Center — every platform tile, system health |
/bridge | Command Bridge — cross-channel state visualization |
/admin/strategist | Strategy Pipeline — whole-portfolio allocator |
/admin/lot-builder | Lot Builder — focused city-lot workflow |
/admin/triage | Triage — pick singles by price band |
/admin/sync-center | Sync Center — drift detection + reconciliation |
/admin/price-audit | Inventory pricing health vs SCPro/eBay |
/quick-price | One-card AI scan + comp lookup |
/your-business | Operator analytics — revenue, top performers, dead stock |
/auctions | Auction listings + bid management |
/showcase | Showcase Breaks management |
/repacks | Repack pack generator + management |
The card model
The cards table is the heart of SlabTrack. Every physical card you own has one row. Key columns:
| Column | Type | Purpose |
|---|---|---|
id | integer | Primary key. Cross-referenced everywhere as "slabtrackId" |
player / year / set_name / card_number / parallel | text | Identity |
grading_company / grade / cert_number | text | Grading info |
front_image_url / back_image_url / front_image_thumb | text | Cloudinary-hosted images |
asking_price | numeric | Operator's hand-set price (source of truth for sales) |
sportscardspro_psa10 ... sportscardspro_raw | numeric | Comp prices from SCPro |
ebay_avg / ebay_low / ebay_high | numeric | eBay sold comps |
listing_status | text | 'sold' means card has left inventory permanently |
sent_to / sent_at | text/ts | Legacy single-channel marker (being phased out by card_channels) |
is_keeper | bool | Personal collection flag — never auto-list |
is_graded / is_autographed / numbered_to | various | Identity flags |
Major features
Scanners
Three ingestion paths — see Scanners for full detail.
- PSA cert lookup: type a cert number → fetches PSA's API → creates a card row
- Vision ID: upload front/back image → OpenAI/Anthropic identifies player + year + set → creates row
- Bulk lookup: paste a list of cert numbers → batch-fetches
Pricing intelligence
- SportsCardsPro: PSA10/PSA9/raw price by player+set+card_number+parallel
- eBay scraping: last 30 days of sold comps
- Pop reports: PSA's grading population
- Comp source priority: SCPro → eBay sold → manual asking — see Pricing Intel
Strategist + allocator
Whole-portfolio routing engine. Full deep-dive.
Channels + Command Bridge
Cross-channel state. Channels + Bridge.
Consignment
SlabTrack supports consignment — cards owned by other people but managed by you. Tables: consignors, consignment_cards. Each card row has a join to a consignor; the operator handles listing + selling on the consignor's behalf and pays out their share.
Showcase Breaks + Repacks + Auctions
Three sales formats beyond direct-listing:
- Showcase Breaks: pre-built mixed-card "breaks" sold to multiple buyers, each gets a card slot. Random assignment via provably-fair.
- Repacks: sealed mystery packs with a randomized card mix at a fixed price. Buyer doesn't see contents.
- Auctions: timed bid system, currently manual + Whatnot-integrated.
Email + notifications
Resend-backed transactional email. Operator emails, consignor reports, buyer notifications. RESEND_API_KEY required.
Code references
- Backend:
slabtrack/backend/server.js+ 80+ route files inbackend/routes/ - Frontend:
slabtrack/frontend/src/pages/(60+ React pages) - Channels:
backend/services/channels/(one adapter per channel slug) - Strategist:
backend/services/strategist/ - Pricing:
backend/services/channel-scoring/+backend/services/pricing/