Loading...
Loading...
AI picks against real betting lines, settled publicly every night.
I architected and built this subscription sports-prediction SaaS end to end: a Next.js 16 front end, a standalone Python FastAPI prediction engine, and a custom win-probability model per sport. Picks for NFL, NBA, MLB, NHL, and MLS settle publicly every night against real lines. Live with paying subscribers at darkhorsewin.com.
Sports prediction products live or die on two things: whether the picks are honest, and whether the data is fresh. DarkHorse set out to grade AI picks across five leagues (NFL, NBA, MLB, NHL, MLS) against real betting lines and settle them publicly every night, with subscribers paying for the edge. The early version kept dying on infrastructure: the 300-second serverless function timeout killed full MLB simulation runs mid-flight, and nothing about prompt quality was measured.
I split the architecture in two. The Next.js 16 app handles everything user-facing, while a standalone Python FastAPI engine runs predictions on its own schedule, free of function timeouts; roughly 34 scheduled jobs keep scores, odds, and injuries flowing. The model is a custom logistic-regression win-probability implementation per sport, scoring a game in under 50ms, fast enough to re-run whole slates when lines move. For the AI layer I built a shadow-prompt A/B system: candidate prompts run against the live ones for 7 days and only get promoted if they prove out. Supabase Realtime pushes every settlement and line move to open screens with no polling, Stripe and Plaid handle subscriptions and ACH payouts, and the whole thing installs as a PWA with push.
DarkHorse is live at darkhorsewin.com with paying subscribers, 1,532 commits and 197 migrations deep, with 417+ engine tests guarding the model. Picks settle publicly every night, so the record is the marketing. The shadow-prompt system has promoted and killed several prompt generations on evidence instead of gut feel.
Have a project like this in mind?
START YOUR PROJECT