Every morning at 9:15 AM, the system automatically collects the day's matchups, enriches them with historical and real-time data, and produces win probabilities for every game on the schedule.
Training and inference are completely decoupled. Python trains the model and exports the decision trees as plain JSON files. Node.js then walks those trees at request time using a custom pure-JS inference engine (rfPredict.js) — meaning the production server has zero Python dependencies and prediction latency stays low.
Honest accuracy estimates using temporal walk-forward cross-validation — the model only ever trains on past data and predicts forward, the same way it runs in production.
Beyond the model, Baseball Oracle is a full product — deployed, accessible on mobile, and designed for daily use during the MLB season.
Win probabilities auto-update each morning for every game on the schedule. The model competes RF vs. XGBoost on every training run and keeps the better-performing model.
Playwright with stealth plugin scrapes live moneyline odds from FanDuel, which are fed into a Kelly criterion calculator to size bets proportionally to edge.
Log bets directly in the app with client-side localStorage — no accounts, no server round-trips. Track outcomes, ROI, and bet history across the season.
Fully installable as a home-screen app via a service worker and manifest. Mobile-first responsive design with bottom navigation for quick daily access.