Inspiration
Walking around IC Hack 22 we realized how nice it was to have an in person event compared with last year's IC Hello World. Being able to turn waiting in a line into a crypto debate, or overhearing that the table behind us is having the same error. However, sitting in front of Cisco’s futuristic booth we realized that virtual and hybrid working is clearly a good way forward in many respects. So we decided to embrace working online instead.
We wanted to give new graduates in a large company, or even experienced hands who’ve transitioned to online working, the part of IC Hack that we missed so much last year. The random conversations, the opportunity to meet new people, and feel truly connected to the people in their organization.
We called ourselves Tea Point, because it’s the place that we all find ourselves falling into tangential conversations. But also because it effortlessly connects: you went in for tea and left with a new connection. It’s this effortless connecting that we want to foster and the unexpected friendships that come with these conversations.
What it does
TeaPoint builds a picture of your interests and connections by hooking into your slack conversations to determine ideas/ topics you are interested in, finds your mutual connections by looking at colleagues you message frequently and looks into your GitHub profile to find your technology preferences. We then recommend colleagues in the workplace who share your interests, connections and technology preferences to help you make meaningful, new connections.
The aim is to introduce you to people you would have met by the “Tea Point” and help you to collaborate, innovate and build.
How we built it
We use the Slack API to scrape data from DMs between users of a company, while also utilizing the Github API to retrieve employees’ repositories and starred repository languages. We then identified potential networking opportunities through 3 metrics.
We compared the proportion of code which employees wrote in various languages, using a cosine similarity function to match users whose programming language interests aligned. We also compared keywords extracted from Slack DMs to identify potential interests of employees, which we then used with a rank comparison algorithm to identify potential hobby buddies. To find mutual connections we had to traverse the graph finding all second degree connections, weighted by the strength of the connections to the mutual node, and the number of mutual connections that lead to that second degree connection.
The client is a single page web application built on node.js which uses a RESTful API to fetch live data from our backend, which used an SQL database to persist data insights for better performance.We used Bootstrap extensively in the front end to build a clean, responsive web-page quickly and display the insights simply for our users.
Challenges we ran into
We found that we were often thinking from a tech first perspective, and looking too much at what data science techniques we could use or what AI models we could train. However by the end we realized that the user flow was more important when developing, as you could work backwards to find the hard requirements of our program; a particularly poignant limit in a hackathon. We found that often the want to talk to people is there but not necessarily the nudge or the common connection to start the conversation.
An additional issue faced was the inability for the Slack API to support reading DMs between organisation members. While this is beneficial from an ethics and privacy standpoint, it unfortunately meant that even anonymised, programmatic analysis was impossible. To provide a demonstration of a scraping application, we constructed faux DMs of a group DM with the 2 members of the usual DM and a bot as an observer. This allowed us to represent a DM, and would allow the program to work as intended should Slack ever implement a feature allowing this.
Accomplishments that we're proud of
Overall, the broad scope of the project was the most challenging aspect, and so with a lengthy planning phase we encountered quite significant time pressure in the run up to the deadline. We were thankfully able to produce a functional MVP, a collective achievement that we hold great pride in.
Additionally, being able to apply the techniques we implemented to real world data, such as comparing the similarity of our own personal Github profiles, and see sensible results gave us great confidence in the soundness of our data analysis.
What we learned
When development speed is fast, keeping rigid data structures and spending lots of time working through runtime type errors is unfeasible, we would potentially want to use something more structured in the future so we can develop fearlessly at high velocity.
We also had problems getting good data sources, our original plan was to rely heavily on slack monitoring of DMs which initially seemed like a feature of slack’s API; if we had done more research we would have noticed the bot has to be in a group chat with the users talking.
What's next for TeaPoint
TeaPoint wants to make it easy for you to connect with people. We not only want to recommend colleagues to interact with but we also want to suggest times when you are both likely to be available based on message data/time, slack status, etc. This way our users will not have to actively change their schedules to meet new people, rather they will meet people as if it was an impromptu informal chat by the water-cooler/ Tea Point.
On the technical side we would need to make TeaPoint more scalable and more flexible. To achieve this we would use a high volume ingestion endpoint, such as a kafka queue, combined with an Apache Beam streaming pipeline to analyze individual comments and conversations.
Log in or sign up for Devpost to join the conversation.