Scanners — getting cards INTO SlabTrack
SlabTrack supports four ingestion paths: PSA cert lookup (slabbed cards), AI vision (raw or unknown cards), bulk lookup (paste a list of cert numbers), and a desktop scanner integration for hardware-driven bulk ingestion.
1. PSA cert lookup
Fastest for slabbed cards. Type a PSA cert number → SlabTrack hits the PSA API → creates a card row with player, year, set, card number, parallel, grade, pop report.
- UI:
/admin/psa-lookupor the "Add Card" modal on/dashboard - Endpoint:
POST /api/psa/lookup-and-create - Backend: hits PSA's official API; caches results to avoid rate limits
- Auto-fills: front + back image (PSA's image), pop report, asking price = SCPro PSA10 (operator can override)
2. AI vision identification
Upload a card image → Claude or GPT-4 vision identifies the card → SlabTrack creates the row.
- UI:
/quick-scanor upload from/dashboard - Backend:
backend/services/scan/ - Required env:
OPENAI_API_KEYorANTHROPIC_API_KEY(either works) - Returns:
{ player, year, set_name, card_number, parallel, sport, confidence }+ suggested SCPro lookup keys - Cost: ~$0.005 per scan with Claude Haiku, ~$0.01 with GPT-4 mini. Both adequate.
3. Bulk cert lookup
Paste a newline-separated list of PSA cert numbers, batch-fetches every card.
- UI:
/admin/bulk-lookup - Endpoint:
POST /api/admin/bulk-cert-lookup - Workflow: paste 100 cert numbers, hit submit, SlabTrack queues them, results stream into the UI as each completes
4. Desktop scanner (slabtrack-scanner)
Separate Electron app at slabtrack-scanner repo. Integrates with Fujitsu fi-8170 ADF scanner via WIA + WinRT (PowerShell automation).
- Operator loads slabs into the ADF feeder
- App scans both sides of each slab as a single BMP
- Image pipeline: BMP → rotate → extend canvas → edge detect → extract individual cards → pad → JPG
- Posts each card image to SlabTrack's vision endpoint for ID
- Results stream into
/admin/scan-intelligence
Pricing fall-back chain
After a card is created, SlabTrack auto-fetches comp prices in this order:
- SportsCardsPro — most accurate for graded cards. Requires
SPORTSCARDSPRO_API_KEY. - eBay sold — recent 30-day completed sales. Requires
EBAY_APP_ID+ ID/cert. - Manual asking_price — operator hand-sets if both auto-comps return 0
The card-channels flow after ingest
New cards land in the personal channel by default. Operator routes them via Strategist or Triage.