Lists all strong player props to bet on today, ranked by hit rate and matchup context. No forced parlays or leg counts. Invoke for any NBA betting or picks request: "give me picks", "best props tonight", "what should I bet", "safe bets today", "NBA props", etc.
One mode: output all strong player props to bet on today, ranked by hit rate and context. No fixed parlay structure. No EV or odds required.
If the user attaches a file starting with # NBA DATA CONTEXT, the Python
scripts have already done all the work. Read these sections:
| Section | What to do with it |
|---|---|
## INJURY REPORT | Immediately disqualify OUT players; flag GTD players |
## PRE-CALCULATED TOP PICKS | Use as your candidate list — don't recalculate |
## TEAM GAME CONTEXT | Flag blowout_risk=True or low totals (<215) |
## OPPONENT MATCHUP PANEL | Flag picks where opponent def_rank ≤ 5 for pts/ast |
## FILTER SPLITS | Use L15 and L10 as recency signals; note B2B/home/away gaps |
## PLAYER PROFILES | Full season game logs for deeper review |
Skip all web fetching. Go straight to Filter & Rank.
Run python scripts/run_daily.py before sessions to enable this fast path.
Fetch the schedule to find all NBA games tonight:
https://www.nba.com/schedule or https://www.espn.com/nba/schedule"NBA games tonight [date]" if the above are slowPull injury report:
https://www.espn.com/nba/injuries"NBA injury report [date]"Build a working list: confirmed active players averaging ≥ 25 minutes per game with games tonight.
For each player on the active list, fetch their season game log:
https://www.statmuse.com/nba/player/{slug}/game-logThe 90% floor formula: Sort all games in the stat category from lowest to highest. The value at the 10th percentile position is what the player exceeds 90% of the time. Subtract 0.5 to create the line. Verify the hit rate is ≥ 90%.
Example: a player with 62 games whose 6th-lowest rebounds game = 9 rebounds → floor line = 8.5 reb → hit rate = 57/62 = 91.9%.
Stat categories to check for every player: Points, Rebounds, Assists, 3-Pointers Made, Blocks, Steals, PRA (combined).
Don't default to points only. A player clearing 1.5 threes in 93% of games is a stronger pick than a points over at 68%.
Apply these filters to every candidate prop:
| Filter | Threshold |
|---|---|
| Season hit rate | ≥ 85% to appear; 90%+ marked as top-tier |
| Last 10 hit rate | Note — flag if L10 < 70% despite strong season rate |
| Last 15 hit rate | Primary recency signal from FILTER SPLITS |
| Minutes per game | ≥ 25 MPG |
| Health | Active only — OUT excluded; GTD not in positive recommendations |
| Back-to-back | Flag ⚠️; if B2B hit rate < 70%, add caution note |
| Home/Away | If Away hit rate is >5% lower, note it |
| Opponent def rank | If ≤ 5 (elite): flag ⚠️ on pts/ast props |
| Blowout risk | If spread > 12, flag — star may rest in Q4 |
| Game total | If total < 215, note suppressed scoring environment for pts/pra |
| Recent form | Flag ⚠️ if player missed this line in last 1 or 2 games |
| Minimum line | pts ≥ 4.5, reb ≥ 3.5, ast ≥ 2.5, 3PM ≥ 0.5, blk ≥ 0.5, stl ≥ 0.5 |
Sort all passing picks by season hit rate descending. Within the same hit rate, prefer picks with stronger L10/L15 recency.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
TOP PLAYER PROPS — [date] ([N] qualifying props, best to worst)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[RANK]. [Player] — [Stat] OVER [Line]
Season: XX% (XX/XX games) | L10: XX% | L15: XX%
Last 10: [val, val, val, val, val, val, val, val, val, val]
Context: [Home/Away] | [B2B or Rested] | vs [OPP] def rank #XX
[⚠️ Recent dip: missed this line in last 2 games — proceed with caution]
[⚠️ B2B: B2B hit rate only XX%]
[⚠️ Elite defense: opp ranked #3 in pts allowed]
Why: [1 sentence — why this line is within their consistent floor]
[repeat for all qualifying picks, best to worst]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Show exactly how many games out of how many cleared the line: "Cleared in 54/62 games" not just "87%".
For every prop in the output, check whether the player missed the line in the last 1 or 2 games. This is a required check.
⚠️ Recent dip: missed this line in 2 of last 2 — caution⚠️ Recent dip: missed in last game despite strong season rateDo NOT remove a prop based on recent form alone — the season and L10/L15 numbers still matter most. The recent form flag is a caution layer only.