Mini-Hackathon

Thursday, March 5th at 7:00pm Andrew, Hussain, and Jon met in the loft for an informal hackathon. The goal of this hackathon was to further familiarize ourself with our technical stack and to begin implementing some of the key features necessary for our product to run. In some sense, we wanted a skeleton of our product built. 

In a previous meeting, we had decided upon a MEAN (MongoDB, ExpressJS, AngularJS, NodeJS) stack. This decision was made on behalf of the entire team for a variety of reasons. First of all, there is a lot of hype around full-javascript stacks, and we wanted to see what that was about and build something for ourselves with it. Secondly, these frameworks are known to work well together and have plenty of documentation and tutorials online. This meant that although our experience with these frameworks was limited, we could learn from the resources available to us online. Lastly, the flexibility, ease of development, and scalability of these frameworks appealed to our team. 

So at 7 we began to code. Andrew took on the task of a login system via PassportJSand Hussain and Jon took to getting Mongo to be connected to our Node application via MongooseJS. 

After about 4.5 hours of coding, reading tutorials, and tinkering we found ourselves with a login functionality waiting for database integration, a database schema, and a ticket creation form capable of storing tickets within our database. Our progress was slower than we wished form but this was partially because we were learning how to build this out ourselves. We figured putting in the work early would pay off later. 

After consolidating our work, we discussed our strategy for incorporating our machine learning skills into the application. After some brainstorming and discussion, we came to the conclusion that we faced two main ML tasks that could be approached in two different manners:

  • Ticket Tag Suggestion 
    • Accomplishable via NLP and Supervised Learning
    • Train N classifiers where N is the number of active tags
      • If a classifier has a score above some threshold, suggest that tag
      • Alternatively, suggest the top k tags
  • Similar Ticket Resurfacing
    • Accomplishable via Unsupervised Learning 
    • Use techniques such as K-Means or K-Nearest Neighbors to determine similarity between tickets
      • The feature vector we use these techniques on would be a mix of keyword extraction, metadata, and tags. As such, our first ML task augments our second. 
      • Once we have the most similar resolved tickets, we retrieve the highest rated links, templates, and comments from these tickets and surface them to the admin. 

We were very happy with these preliminary ML ideas, as they seemed to strike a great balance between usefulness and accomplishability. The last comment we had regarding the machine learning discussion we had was that although these ideas seemed great, data science is very empirical, and the only way we could validate these concepts was to implement them and test them rigorously on our data. This motivated us to focus on ML development next time we code and to acquire more data. 

Leaving the loft past midnight, we were content with our progress and optimistic for future software development. It's an exciting time, as we have spent the last 10 or so weeks brainstorming, needfinding, and prototyping but it seems now we are finally approaching the building stage.