BetrPicks
Props
0
Betr Best
0
Obs saved
0
๐Ÿ“Š
Set filters, then click Fetch Lines
Hit Fetch Lines to load Betr standard props ranked by PP value
Hit Run Scan to find edges and build a slip
Distribution Curves

Enter a standard line to see the market prior curve. Add a player to overlay their historical distribution.

Season
Market
Player
Games
Standard line
Enter a standard line to view curveoptionally add a player to overlay historical data
Loading...
Payout Reference

Break-even probability is the per-leg win rate needed for EV = 0. Flex Play accounts for all partial payout tiers in the calculation.

Loadingโ€ฆ
API Reference
Railway: betr-picks-production.up.railway.app
MethodEndpointTriggered byDescriptionntfy?
GET/healthโ€”Ping โ€” returns {status: "ok"}โ€”
GET/screener-statusโ€”Last screener run time, edge count, backoff stateโ€”
GET/token-statusโ€”JWT validity and seconds until expiryโ€”
POST/refresh-tokenVercel "Refresh Token" btnUpdates in-memory JWT and PP_JWT_CACHE env var. Body: {token, exp}โ€”
POST/fetch-linesLines tab "Fetch Lines"Fetches one market+league from PP Screen. Saves prop_observations to Supabase. Body: {market, league, books, is_live, season}โ€”
POST/screenDirect call onlyFull screener scan across all SCAN_MARKETS. Returns edges. Sends ntfy push alert.โ˜…
GET/fantasy-linesFantasy tab "Fetch Lines"All Betr standard props from PP fantasy optimizer, sorted by value% descโ€”
GET/slip-builderSlip Builder "Run Scan"Full screener scan + fantasy fetch grouped by game with same-game complements. No alert sent.โ€”
GET/payout-referencePayout tabPayout reference table (perfect play + flex, all pick counts)โ€”
GET/discover-marketsDirect call onlyBatch-probes candidate market names across leagues. Returns hits (has Betr Alt) and misses. Add ?league=Soccer to scope to one league. Slow (~2-5 min full run).โ€”
Background Processes
โ˜…Screener loop
Runs every 6โ€“10 min (random jitter) during 8amโ€“10pm PT. Scans all SCAN_MARKETS (NBA, NCAAB, NHL, Soccer). Sends ntfy push on any edges found. 90s startup delay to absorb rapid Railway redeploys. 25-min backoff on PP rate limit.
External Dependencies
ServicePurposeNotes
Prop ProfessorProp line data + devigJWT (10 min TTL) via session cookie. Rotates on new browser login โ†’ urgent ntfy fires โ†’ tap Refresh Token on Vercel.
SupabasePostgres โ€” prop_observations, edgesLines tab writes prop_observations. Screener logs edges. CurvesTab reads game_logs (currently empty).
ntfy.shPush alerts to iOSTopic: betrounds. urgent = session expired. high = rate limited or 3+ edges. default = <3 edges.
RailwayFastAPI host + env varsPP_SESSION_TOKEN, PP_JWT_CACHE, SUPABASE_URL, SUPABASE_SERVICE_KEY, NTFY_TOPIC, VERCEL_URL
VercelNext.js frontendAuto-deploys from GitHub main. NEXT_PUBLIC_API_URL must point to Railway URL.