The model is implemented in PyMC3 and runs daily as a batch job. The model state and predictions are stored in DynamoDB.
Early each morning this batch job loads the previous day's posterior as priors, fetches the results for the games played that day, and then fits the Bayesian network to the game results to get new posteriors. I make predictions with these posteriors and then write all the results back to DynamoDB.
The frontend is essentially D3, Django, and Zappa.
It's a probabilistic programming powered hockey game prediction model. It hasn't been performing too badly this season! https://twitter.com/hockeystatisti1/status/13700659799889797...