From the field to your pocket — PressBot
When you look at the array of services focused on college and professional sports leagues, it is easy to get overwhelmed by the sheer number of choices that you have to get information and updates about your favorite teams. ESPN uses their website and mobile app to give users updates about almost any team and each professional league tends to have its own app to provide updates as well (MLB, NFL, NHL, etc.).
However, there seems to be one category of sports that is almost completely absent from any of these services: high schools.
Here in Texas, high school football is hugely popular, and many schools have a fanbase that could rival some smaller colleges. For this reason, this semester a group of journalism and computer science students (myself included) set out to create a live notification system for high school football scores, loosely modeled after ESPN’s app and its notification abilities.
While we designed a solution that had our partner, the Dallas Morning News, in mind, our product should be extensible with little changes to any organization that uses TeamPlayer as their sports score database.
One of the earliest decisions that we had to make was what platform we wanted to use to provide the actual notifications. Some of the choices we considered were native push notifications through Apple and Google, SMS messaging, Twitter, and Facebook Messenger. We eventually settled on Messenger because they recently added a subscription option to their Send API, which was exactly what we needed for this project. We also assumed that Messenger would be one of the most convenient and user friendly platforms to work with. However, later on in the project we did some market research which suggested that different age groups may prefer to use SMS instead, so it would be worthwhile to add that functionality in later.
Our next big decision to make was what to use for the NLP. Facebook provides some NLP for all messages that come through their system, but we needed much finer control over the intents than what they could give us. The Messenger documentation suggests that wit.ai is an alternative that could be used, but the wit.ai documentation conflicts with this and says that it shouldn't be used for that purpose. In the end, we decided to go with Google’s Dialogflow service instead––and it was a mess. Luckily, one of the other team members was responsible for working with that service.
The portion of the product that I worked most heavily on was sending the actual score updates out. We were given access to the Dallas Morning News TeamPlayer API which provided us with data about games that were in progress and the teams that were playing. Using this API, we queried every minute and determined what the diff was between the old information that we had already seen, and the new information that we were receiving. In the case that something had changed, we would send out updates to the subscribed users to alert them of the new score (as seen below).
I believe that the product that we created turned out very well. There were times during development that I wondered if we were going to have a working product in the end at all, so getting to receive actual notifications from it as if I were a user the past few weeks has been really exciting. We accomplished almost all of what we had intended on, and I am very proud of my team and the work we put into it.
There were a handful of major things that I took away from this project in addition to the product that we made in the end. First off, the project reinforced to me that there is never enough time to make a product perfect. In our case, as I was working on developing it, I continually came up with new ways to improve upon and add functionality, but in the end did not get to implement all of it. More specifically, I would have liked to rewrite the algorithm that processes if new updates need to be send out in a way that allowed us to very easily recognize when quarters of the game had completed and send out notifications saying so. This was something that I had the idea for too late in the process, and would be the next thing I would work on given more time.
Secondly, working with systems that you have no control over can be a huge pain. In our case, Dialogflow and TeamPlayer each came with their own set of problems, and having to work through them was definitely a struggle. In the case of Dialogflow, it was mostly a lack of documentation on their part with how their service was supposed to integrate with Messenger to send different types of messages. It ended up being a lot more complicated than just sending them the same thing we would have sent to Facebook. For TeamPlayer, it would have been nice if we could have had them make requests to us each time new score data was input into the database instead of us having to poll for updates. This would have saved us from doing a lot of work and taken a fair amount of load off their servers.
Finally, interpreting human language in a way that computers can understand is not a simple task. This is something I was aware of before working on this project, but having played with Dialogflow and wit.ai over the course of the semester has really shown me that the NLP services have a long way to go. Having to rely on an external service to do part of the work and then making calls back to our servers to fill in some parts of the data creates more dependencies than I would like for someone to have to deal with when setting up the project. The services felt clunky to use and adding new flows of dialog was a cumbersome task that created some ugly code in certain cases.
Overall, I thoroughly enjoyed working on this project. After having worked at large tech companies as an intern the past two summers, I believe that this class had the opportunity to give you an idea of what it is like to be out in the real world pitching ideas, getting feedback, and iterating on a product to try and make it better every week. I would highly recommend the Digital Innovation classes to any computer science or journalism students that are interested in taking a project and making it come to life.
If you would like to check out our work, it can be found here: https://github.com/lilianaterry/dmn_bot.