See what others miss. AI-scored NBA player props powered by real game data.
Translation pending
Sports & fitnessTypeScript · PythonGitHub @d-anielcodeOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
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.
Translation pending
Taken from the repository README
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