A deployment-ready MVP for predicting undervalued Pokémon TCG cards across 30-day, 90-day, and 6-month horizons using transparent rule-based scoring.
/frontend— React + Vite + Tailwind dashboard./worker— Cloudflare Worker API + D1 scoring backend./worker/migrations— D1 schema migrations./worker/data— mock seed data for local bootstrap./wrangler.toml.example— Cloudflare deployment template.
upside_score =
momentum_score * 0.25catalyst_score * 0.30grading_score * 0.20volume_score * 0.15sentiment_score * 0.10
Confidence buckets:
high>= 75medium>= 55 and < 75low< 55
GET /api/cardsGET /api/predictionsGET /api/predictions/top?horizon=90d&limit=20GET /api/cards/:idPOST /api/ingest/mock-pricesPOST /api/score/run
Includes a scheduled handler as a cron placeholder for daily scoring workflows.
cd frontend
npm install
npm run devcd worker
npm install
cp ../wrangler.toml.example ../wrangler.toml
npm run db:migrate
npm run db:seed
npm run dev- Uses only mock/sample data (no paid APIs required).
- Code structure is prepared for future provider integrations (TCGPlayer, eBay, PSA, Reddit, Discord) via ingest jobs and adapters.
- Optional R2 bucket binding included for archived snapshots.
- Add provider-specific ingest adapters under
worker/src/providers/*. - Add simple auth for admin-only
POSTendpoints. - Persist scored snapshots to R2 for historical strategy comparisons.
- Replace mock sentiment inputs with derived Reddit/Discord metrics.