Inspiration
Sports betting is massive but often feels daunting, high-risk, and complex, lacking a safe space to practice strategies without risking money. We built an ethical educational tool to fill this gap. FanAssist simulates the volatility of real sports lines, turning a risky endeavor into a low-stakes learning platform that promotes responsible decision-making.
What it does
FanAssist is an interactive platform that simulates realistic sports betting scenarios for the NBA. It uses nba_api data combined with predictive modeling to generate dynamic lines and realistic picks, allowing users to practice various strategies (like Prizepicks). Users select picks and track real-time line movement powered by the simulation, instantly seeing the calculated payoff for immediate feedback on their choices. This teaches the core mechanics of odds, risk, and reward.
How we built it
Our architecture focused on delivering realistic, dynamic data modeling via a fast, modern stack:
Core Simulation Engine (Python/FastAPI): The simulation logic is built in Python. It utilizes historical game logs from the nba_api for training, applying Regression analysis and sophisticated Monte Carlo simulation techniques to forecast outcomes and model line volatility. This stateless, high-performance core is exposed via a FastAPI backend for low-latency communication.
Interactive Frontend (React/TypeScript): The user interface is a single-page application built with React and TypeScript for reliable logic and type safety. Tailwind CSS ensured a highly responsive, modern design for effective data visualization and interaction. All simulation inputs and outputs are handled instantly within the browser via the FastAPI API calls.
Challenges we ran into
Our primary challenge was achieving both realism and computational speed. Running the Monte Carlo simulation for enough trials to guarantee a statistically sound prediction was demanding. We spent significant effort optimizing the Python code to ensure the FastAPI endpoint could return dynamic lines quickly, even under load, as the application relies entirely on these rapid, stateless calculations. We also struggled with mapping the diverse, complex rules and terminology of real platforms (like Prizepicks) into a coherent, user-friendly simulation framework.
Accomplishments that we're proud of
We are most proud of the performance and statistical fidelity of our simulation engine. By using Monte Carlo methods trained on specific nba_api data, we successfully created a system that generates dynamic odds that reflect plausible real-world market movements. We are also proud of the robust frontend, built with React and TypeScript, which ensures a stable and professional user experience while displaying complex visualizations.
What we learned
We learned the critical differences between statistical modeling for analysis versus realistic scenario generation. Deploying the Monte Carlo logic required mastering asynchronous operations within FastAPI to maintain high throughput and low-latency responses. We also gained significant experience building scalable, type-safe frontends with TypeScript, appreciating how it prevents runtime errors in complex interfaces.
What's next for FanAssist
Curriculum and Leaderboards: Implement state management (e.g., a proper database) to track user history, enabling structured lessons and a leaderboard to gamify strategic experimentation.
Advanced Strategies: Expand the simulation to include complex betting types (futures, parlays) and allow users to upload custom datasets to test personal theories beyond NBA data.
Data Refresh Automation: Automate the integration of real-time sports news and data feeds to ensure simulated lines remain current and highly reactive.
Built With
- fastapi
- nba-api
- node.js
- python
- react
- tailwind
- typescript
- xgboost



Log in or sign up for Devpost to join the conversation.