As a new hire, you probably know the pain of trying to get familiar with company culture, or spending hours digging through large, complicated codebases, or having to dig through a library of technical messages just to understand coworkers. In the end a tremendous amount of essential, work related knowledge gets lost in conversations on company apps like Slack or Discord. However, this information isn't stored in a structured, easily navigable format, unlike with collaboration tools like Notion or Confluence, in which content can be organized in a structured manner. This results in much of the context and background on key decisions and discussions being inaccessible to team members.

Solving this key workflow issue would enable teams to better document their decisions and be able to refer to this conversational knowledge in the future, which would help increase productivity.

We devised an approach to solving this problem that takes advantage of backlinks, a powerful concept used by note taking apps like Roam Research and Obsidian. Backlinks are essentially bidirectional links; with traditional links, you can follow a link to a destination but cannot see all the places that link to this destination. Backlinks/bidirectional links enable this functionality, allowing users to build a network of related ideas through backlinks.

What it does

Backlink enables users to quickly save conversations from Slack into relevant pages in their Notion database. All they need to do is add a backlink with a topic name (ex. [[Topic Name]]) to their message (or add backlinks in the replies for a message) and they will be able to access all mentions of that topic through a “Topic Name” page within their Notion database. This enables users to seamlessly view all the conversations around a particular topic, feature or idea, drastically improving their ability to extract knowledge from their chat logs.

If a topic page doesn’t exist, simply adding a backlink to a reply or message will dynamically create a new page to store relevant references. Another key feature is that the notion page will automatically include links to the messages in addition to the content, allowing users to jump to the context and understand the conversation.

How we built it

Tools Used: Golang, CockroachDB, Slack API, Notion API, GCP

CockroachDB was crucial to store the mappings we generated to connect backlink names to notion pages. We also store our configurations for slack workspaces so we can connect the correct Slack and Notion instances together. We decided to use CockroachDB due to its extremely high reliability, which helps us ensure that our users’ valuable information stays available, even in the worst of situations. Additionally, CockroachDB is compatible with Postgres, so we were able to easily apply all of our existing experience with confidence, which was a huge bonus under the strict time restraints of the hackathon.

The project has 2 main components: A slack bot and a notion integration.

Slack Bot: The slack bot looks out for user messages and scans them for backlinks in the text. It then uses regex to isolate the backlinks and retrieves the notion page IDs from the CockroachDB database. If the backlink doesn’t exist, it creates a new page in notion for that backlink and adds the content to that page. If the backlink does exist, it simply adds the message content and link to the page.

Notion Integration: The notion integration is a Go package custom written to interact with Notion’s new API (which is in beta). This package can create subpages and add content to pages. This package is what allows the slack bot to integrate with Notion.

Challenges we ran into

We ran into issues with the notion API The Notion api is very new, and is only in beta. As a result, it’s missing many features and has documentation that is hard to understand. Because of how hard it was to understand, iterating with the Notion integration proved to be difficult. The slack api was also hard to navigate, but for the opposite reason! Layers upon layers of documentation were provided, but not all of it up to date, and a lot of it deprecated. There were also issues with bugs and weird behaviour that made it difficult to quickly identify the correct api endpoints to use for a given task.

Accomplishments that we're proud of

We are proud that we built a service that will be useful, not only to us, but potentially to others as well.

What we learned

We learned how to work with CockroachDB and Google Cloud Platform. We faced issues with the APIs we wanted to use and integrate, but we worked through them and ended up with better skills and knowledge involving different APIs.

What's next for Slack Backlinks

We'd love to productize and ship our project! We think it'd be extremely useful to teams in its current form, and have identified areas for potential improvements:

Automatically capture conversation/context: Currently, users can save individual messages. Using natural language processing and examining timestamps, we can capture the entire conversation/context and store it in a nested representation. This would allow users to be able to quickly understand the context of a message

A related improvement is to use abstractive text summarization to summarize the content of a conversation

Allow message group capture: Implementing the ability to select multiple messages to capture together, and getting all the replies for a particular message to be saved along with it.

Embed HTML slack message: Replace the plaintext representation of the message with a styled HTML embed in notion that improves the user experience.

Built With

Share this project: