Building an AI-Powered Slack Bot for Real-Time Insights

Sam Yoon
3 min readJun 26, 2023

As an engineer, you’re always looking for ways to improve efficiency and productivity. One untapped area is the plethora of data flowing through your Slack workspace. Analyzing this data can offer insights into team dynamics, project progress, and potential areas of concern. Traditionally, achieving this level of insight has required complex machine-learning models or costly subscriptions. But now, you can build your own AI-powered Slack bot using Python, the OpenAI API, and a JavaScript frontend.

Setting Up Your Python Backend

Your first step is to set up a Python backend. We’ll use Flask due to its simplicity and efficiency. Here’s a basic setup:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/event', methods=['POST'])
def event():
# We'll handle Slack events here
pass

if __name__ == "__main__":
app.run(port=5000)

In this snippet, we’ve created a new Flask app and defined a route to handle incoming events from Slack.

Integrating the OpenAI API

The OpenAI API is a powerful tool that can be used to analyze the content of messages in real-time. Here’s how you can integrate it into your bot:

import openai

openai.api_key = 'your-api-key'

def analyze_message(message):
# Analyze the message using OpenAI
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": message}
]
)
return response.choices[0].message['content']

With this integration, you can instruct the AI to focus on specific types of insights you’re interested in, by adjusting the system message and user prompts.

Handling Slack Events

Now that we’ve set up the backend and OpenAI integration, let’s handle the Slack events and analyze the messages.

@app.route('/event', methods=['POST'])
def event():
# Get the event data
event_data = request.json['event']

# Analyze the message
result = analyze_message(event_data['text'])

# Process the result
process_result(result)

Building the JavaScript Frontend (optional)

The frontend will be responsible for displaying the insights gleaned from the backend.

// Connect to the backend
var socket = io.connect('http://localhost:5000');

// Listen for insights
socket.on('insight', function (data) {
// Display the insight
displayInsight(data.message);
});

Of course, you can always opt to use Slack’s Bolt for Python framework to build your frontend using Python code and avoid having to create an entirely separate Javascript repository.

Wrapping Up

In conclusion, building your own AI-powered Slack bot provides you with the ability to unearth valuable insights from your Slack workspace, tailor-made for your needs. You gain a powerful tool that can track project progress, monitor sensitive information, and much more, without the need for a subscription service or in-house ML models.

By combining Python, OpenAI API, and JavaScript, you can leverage the wealth of information within your Slack workspace. This not only amplifies your efficiency and productivity but also gives you control over how and what insights you want to draw from your workspace.

If you’d like a step-by-step tutorial for this project, leave a comment and I’ll either reach out or write the long-form version of this article.

Check Out Cleo

While this article focuses on building your own AI-powered Slack bot, you might want to check out a ready-made solution — Cleo.

Cleo, in its alpha stage, is a powerful Slack bot that’s been crafted with the same principles in mind. Using advanced AI models, Cleo scans your public Slack channels for sensitive data, maintaining a secure environment for your team’s conversations. It’s not just a data watchdog, but also an all-round Slack assistant.

Here’s how you can leverage Cleo’s capabilities:

  • Use /catchmeup to get caught up on the latest channel activity without scrolling through all the messages you missed.
  • Need help with crafting a reply? Use /suggestareply to get Cleo's suggestions for a conversation context.
  • If you have an idea for a new trick or feature that Cleo could learn, let Cleo know by using /suggestnewtrick.

While Cleo strives to provide accurate and helpful responses, there may be instances of inaccurate information. Remember, it’s in its alpha stage. You’re not only using an incredibly useful tool, but you’re also shaping its development.

Check out Cleo at getcleo.io and join the alpha for free today!

To view the complete code, visit this GitHub repository.

--

--