BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Full-stack NBA player-stat forecasting app. Projects performance against posted lines, then grades every projection against the box score. Next.js, Supabase, 20 scheduled jobs.
翻訳待ち
Loading the full README.
Read the full README ↗A full-stack NBA player-prop analytics engine. Prizm pulls live prop lines from sportsbooks every day, scores each one with an empirically-calibrated confidence model, grades its own past predictions against real box scores, and surfaces the highest-conviction picks and parlays through a Next.js dashboard.
Live: prizmproject.vercel.app
Every game day, on an automated schedule:
LOCK / PLAY / LEAN against stat-specific thresholds tuned on historical hit rates.The result is a self-correcting loop: predictions are logged, graded, and fed back into per-player bias and opponent-leak tables that sharpen the next day's scores.
The engine (lib/confidence.ts) is a transparent, deterministic weighted model — not a black box. Each stat type gets its own weight set, and scores are built from:
Thresholds and weights are backtested against a library of historical prop lines and graded outcomes, not hand-waved.
The Odds API ──> /api/props ──> Supabase (props + synthetic alts + snapshot)
│
ESPN box scores ──> /api/gamelogs ────┤
▼
/api/enrich ──> confidence model v6 ──> scored props
│
/api/feed (parlays) /api/grade ──> hit/miss/DNP
│ │
▼ ▼
Next.js dashboard /api/results (daily hit rates)
/api/player-bias, /api/opponent-leaks
Stack: Next.js 16 (App Router) · React 19 · TypeScript · Supabase (PostgreSQL) · Tailwind + shadcn/ui · Recharts · Vercel (20 scheduled cron jobs) · Python (offline backtesting & weight optimization)
Key directories:
app/ — dashboard pages: props board, feed (parlays), edge finder, performance, trendsapp/api/ — the ingest → enrich → grade pipeline, each route triggered by a Vercel cronlib/confidence.ts — the confidence enginelib/odds-api.ts / lib/espn-gamelogs.ts — live data adaptersscripts/ — Python backtesting, calibration, weight optimization, and the Kalshi edge finderscripts/kalshi_edges/ — bridges Prizm's model probabilities to Kalshi NBA markets to find priced edgesPrizm keeps an honest scoreboard. Every prediction is snapshotted before tip-off and graded after the final whistle:
prop_grades — individual results (hit / miss / DNP)prop_results — aggregated daily hit rates by confidence labelplayer_line_bias / opponent_stat_leaks — systematic biases mined from the full game-log history and reapplied as score adjustmentsThis makes the model falsifiable — you can see whether a LOCK actually locks.
npm install
cp .env.example .env.local # add Supabase + The Odds API keys
npm run dev # http://localhost:3000
npm test # vitest
The scheduled pipeline runs on Vercel cron (see vercel.json); locally you can hit the /api/* routes directly to seed, enrich, and grade.
MIT