In the development of Adroit, we were inspired by the design process itself - as we yearned to arrive at a chosen problem which would address healthcare, social good, fintech, education, or better yet a combination of the four. While brainstorming ideas for such problem statements, we agreed there was potential for using natural language processing to analyze frustrations and complaints, using human-centered design principles to light the way. We began designing a way to provide hackathoners and businesses with problem statements so they can focus on what they do best - solving them.

Out of this idea came Adroit, an easy-to-use reputation and sentiment analysis tool. We sought a project that would challenge us with skills and frameworks which are new to us, while also keeping human-centered design in focus. Adroit is both a business/fintech tool - intended to help companies identify their weaknesses - as well as generalizable software which allows users to discover problems in any domain. Enter a search term and see what complaints people have about it, and get a summary of the most frequent commentary!

JetBlue use case: As one use case, Adroit was designed to meet @jetBlue's design requirements. We hypothesized that aggregating complaints from social media and analyzing their similarities could point to services that may need attention, indicating recent major customer concerns with the company.

Although Adroit's knowledge is currently drawn specifically from Twitter and we do recommend further development using other data sources, a test run on recent data indicates, for instance, "wheelchair" and "mobility" as major concerns, identifying accessibility as potential business priorities.

What it does

Adroit pulls data from Twitter about a certain target (e.g., "JetBlue") and uses Google's natural language API to find negative-sentiment content, indicating potential user complaints. After doing so, Adroit extracts high-importance terms from the data to indicate the general themes of those complaints.

How we built it

The client side uses React.js and support libraries, such as Material-UI and styled-components, alongside pure CSS. We use React’s routing to handle requests. We also used Axios to asynchronously fetch data from our API. Adroit is deployed on Firebase.

The server side, hosted with PythonEverywhere, uses Python Flask to respond to requests for content analysis, which indicate the query target of the analysis and the amount of content to be analyzed. Query results are filtered using Google sentiment analysis and passed through an entity extraction step to determine a set of potential user concerns, which are returned alongside the analyzed tweets.

Major challenges

As new hackers, we faced difficulties with environment management across the team, particularly in managing different Python and React setups. We also got the chance to work with some tools which were completely new to us, including complex APIs such as Google Cloud Language. And finally, we learned some new things about familiar concepts - for instance, we learned the hard fun way that single quotes aren’t accepted in JSON strings to JavaScript.

Major accomplishments

With little experience and all being first-time MLH hackers, we're proud that we were able to integrate the frontend with the backend, gain an understanding of Google and Twitter APIs, and create a fully-working demo. With only a small amount of starting experience, we hacked together a cohesive and useful product.

What we learned

  • Using and maintaining web APIs. Adroit's backend is its own small API, and uses both Twitter and Google's own developer APIs.
  • Principles of NLP in context. For instance, we considered how to group text in order to get the most effective sentiment and entity analysis.
  • Design and adaptability as a team. Our team members were nearly complete strangers to each other two days ago, and Adroit’s development was tied to the process of learning to work with a brand new team.

What's next for Adroit

  • Improved insight and summarization In addition to the stream of complaints, we'd like to add better capabilities to analyze the complaints as a whole.
  • Better concern parsing. The determination of major concerns is a beta feature and does sometimes return less-than-helpful terms.
  • Broader data sources. Adroit, as a demo, only draws from Twitter. However, its structure is such that functionality for Facebook, Instagram, or even more exotic sources, like Youtube captions or academic articles, could be easily added.

Built With

+ 3 more
Share this project: