## Inspiration

Following the recent tragic attacks in Paris, Beirut, and other places, the world has seen the chaos that followed during and after the events. We saw how difficult it was for people to find everything they wanted to know as they searched through dozens of articles and sites to get a full perspective on these trending topics. We wanted to make learning everything there is to know about trending topics effortless.

## What it does

Our app provides varied information on trending topics aggregated from multiple news sources. Each article is automatically generated and is an aggregation of excerpts from many sources in such a way that there is as much unique information as possible. Each article also includes insights on the attitude of the writer and the political leaning of the excerpts and overall article.

**Procedure**

1. Trending topics are found on twitter (in accordance to pre-chosen location settings).
2. Find top 30 hits in each topic's Bing results.
3. Parse each article to find important name entities, keywords, etc. to be included in the article.
4. Use machine learning and our scripts to select unique excerpts and images from all articles to create a final briefing of each topic.
5. Use machine learning to collect data on political sentiment and positivity.

All of this is displayed in a user-friendly web app which features the articles on trending topics and associated data visualizations.

## How we built it

We began with the idea of aggregating news together in order to create nice-looking efficient briefings, but we quickly became aware of the additional benefits that could be included into our project.

Notably, data visualization became a core focus of ours when we realized that the Indico API was able to provide statistics on emotion and political stance. Using Charts.JS and EmojiOne, we created emoticons to indicate the general attitude towards a topic and displayed the political scattermap of each and every topic. These allow us to make very interesting finds, such as the observation that Sports articles tend to be more positive than breaking news. Indico was also able to provide us with mentioned locations, and these was subsequently plugged into the Google Places API to be verified and ultimately sent to the Wolfram API for additional insight.

A recurring object of difficulty within our project was ranking, where we had to figure out what was "better" and what was not. Ultimately, we came to the conclusion that keywords and points were scatted across all paragraphs within a news story. A challenge in itself, a solution came to our minds. If we matched each and every paragraph to each and every keyword, a graph was formed and all we needed was maximal matching! Google gods were consulted, programming rituals were done, and we finally implemented Kuhn's Max Matching algorithm to provide a concise and optimized matching of paragraphs to key points.

This recurring difficulty presented itself once again in terms of image matching, where we initially had large pools (up to 50%) of our images being logos, advertisements, and general unpleasantness. While a filtering of specific key words and image sizes eliminated the bulk of our issues, the final solution came from an important observation made by one of our team members: Unrelated images generally have either empty of poorly constructed alt tags. With this in mind, we simply sorted our images and the sky cleared up for another day.

### The list of technicalities:

* Implemented Kuhn's Max Matching
* Used Python Lambda expressions for quick and easy sorting
* Advanced angular techniques and security filters were used to provide optimal experiences
* Extensive use of CSS3 transforms allowed for faster and smoother animations (CSS Transforms and notably 3D transforms 1. utilize the GPU and 2. do not cause page content rerendering)
* Responsive design with Bootstrap made our lives easier
* Ionic Framework was used to quickly and easily build our mobile applications
* Our Python backend script had 17 imports. Seven-teen
* Used BeautifulSoup to parse images within articles, and [newspaper](http://newspaper.readthedocs.org/en/latest/) to scrape pages

## Challenges we ran into

* Not running out of API keys
* Getting our script to run at a speed faster than O(N!!) time
* Smoothly incorporating so many APIs
* Figuring out how to prioritize "better" content

## Accomplishments that we're proud of

* Finishing our project 50% ahead of schedule
* Using over 7 APIs with a script that would send 2K+ API requests per 5 minutes
* Having Mac and PC users work harmoniously in Github
* Successful implementation of Kuhn's Max Matching algorithm

## What's next for In The Loop

* Supporting all languages
<https://docs.google.com/presentation/d/17jLxtiNIFxF41xbQ_rubA5ijnvBGJ1RSAMUSMkTO91U/edit?usp=sharing>

## Inspiration

We became inspired after realizing the complexity of bias in media and the implicant bias people have when writing articles. We began the project by recognizing four major issues with bias in media:

* Media companies are motivated to create biased articles to attract attention
* Individuals introduce implicit biases unintentionally in their writing.
* People can waste time reading articles without knowing the biases contained within those articles beforehand.
* No standard API despite recent advances in natural language processing and cloud computing.

## What it does

To address the issues we identified, we began by creating a general-purpose API to identify the degree and sources of bias in long-form text input. We then tried to build several tools around the API to demonstrate what can be done, in hopes of encouraging others.

Sway helps identify bias in the media by providing a chrome extension. The extension provides a degree of bias and the cause of the bias (if any exists) for any website, all with the click of a button. Sway also offers a writing editor to identify bias in the text. Lastly, Sway offers a search interface to conduct research on unbiased resources. The search interface utilizes Google search and our bias detection to rank websites according to credibility.

## How we built it

We decided to build two microservices, along with a Chrome extension. We built the Chrome extension in HTML/CSS, and Javascript. The web platforms were built in React and Python. Our API for performing the text analysis was written in Python.

## Challenges we ran into

We had trouble finding training data to properly classify particles. As we overcame this issue the training data didn't give us the outputs we expected so we had to spend additional time fine-tuning our model. The biggest challenge we ran into was creating endpoints to properly connect the frontend and backend. The endpoints had to be rewritten as we had to narrow down the scope of some features and we decided to scale-up other features.

## Accomplishments that we're proud of

We built out three different platforms in a day! Sway also works extremely well and we're very happy with the performance. We had planned to only build the chrome extension but picked up good momentum and were able to add the two other platforms over the weekend!

## What's next for Sway

We want to market and develop our algorithm further to the point where we could commercially deploy it. One thing that's required to do is add significantly more training data! We would like to keep adding more features to our core product. We would like to provide more helpful insights to users, such as numerical scores across multiple categories of bias.
## Inspiration

Network and timing is everything in the world of sales. Talk to the right people, about the right things, at the right time, and you've got a deal. Today, many sales teams leverage internet and big data to form networks of unprecedented scales. Yet, they often fall short in making the most of their clientele — it can become incredibly overwhelming with the volume of connections to constantly maintain. But what if there was a solution to this, that only required just a click of a button (or your voice)? Introducing ClientDex, the classic stationary business card organizer turned digital.

## What it does

ClientDex is an all-in-one tool designed to help you stay seamlessly connected with your clients! With ClientDex, you can categorize your clients, be reminded of when to set up a meeting with them, and most importantly, ensure you never miss a beat with client interactions. It's equipped with AI-powered audio search features to suggest contacts based on description and information you've noted down. Additionally, ClientDex will automatically remind you to set up a meeting with them, after a certain threshold you define. All these features reside on a classy, rolodex-themed site; truly nostalgic!

## How we built it

ClientDex is built with React on the frontend and Python Flask, MongoDB, AssemblyAI, and Cohere API for the backend.

## Challenges we ran into

A few challenges we ran into was setting up the backend, since none of us knew Python Flask prior to this hackathon. It was also difficult to set up the voice translation since different formats of audio needed to be treated differently.

## Accomplishments that we're proud of

* We fully set up our voice searching functionality using the Cohere API
* We successfully set up our backend and connected in to MongoDB

## What we learned

We learned many new skills, such as Python Flask for some team members, and working with MongoDB for others. As well, for many of us, it was our first time venturing with AI!

## What's next for ClientDex

Given more time, we're hoping to implement the ability to add new contacts by voice so sales reps can create contacts much more easily. We may also try to automatically create contacts during first meetings online through voice recognition.