AI assistant that answers Slack messages on your behalf
Feature and use cases
- An AI assistant that answers Slack messages for you.
- It is not a Slack bot. Instead, it actually answers messages for you, when it's able to. Right now people often talk to Slack bots. But when you @ mention Ed Lai, you expect human Ed Lai to respond. In our feature, sometimes human Ed Lai responds (when he is awake). But sometimes AI Ed Lai responds. When AI Ed Lai responds, there's a special annotation to the message so that human Ed Lai doesn't get in trouble if AI Ed Lai spoke an error.
- The initial use cases is that I (Victor) am asking you (Ed Lai) for project updates. This often happens when stakeholders from different departments, executives, etc. want quick updates to things. They are too lazy to access Jira. They don't have access to Jira. They don't even know where in Jira to look. They just want a quick update. "When are we shipping Stripe integration?" "Are we still on track for Q3 launch?" "Where are we with user research on that project?" Usually, project / product managers will provide the update, and if they are good, they will provide a SSOT link to reference the answer. But the whole point is that there is a human in the loop. And in this case AI Ed Lai can respond even when Ed Lai is sleeping or out to lunch or in a meeting.
- AI Ed Lai is always on, unless Ed Lai purposely turns AI Ed Lai off.
- AI Ed Lai will participate in Slack conversations when it is able to. So when someone @ mentions Ed Lai in a thread, and AI Ed Lai is "able" to respond, then AI Ed Lai will respond. (See implementation for details below.)
- When human Ed Lai comes back to his computer, he will see the messages that AI Ed Lai sent, and be able to review them, and maybe correct them.
- Crucially, AI Ed Lai should also ask human Ed Lai if he made errors or not, in order to feed into the training algorithm.
Implementation
- We need to hack Slack a bit. I don't know how to do this. But I don't think it's possible with the normal Slack API to be both a bot and a human user at the same time. So we need to mitigate this risk early on because it's important that we are not just shipping another Slack bot. The power of shipping a project manager assistant is that the outside world has a single interface, namely, you. I don't know what the solution is here. But this would be important so that AI Ed Lai is seamless to the outside world, which delivers the value.
- Text NLP to understand Slack messages. There should be many off the shelf solutions here. But the trick is once we parse text and get some structured meaning / data from that text, what do we do with it?
- Project data: Human Ed Lai has access to Jira. So AI Ed Lai needs to continuously access Jira to absorb project information like deadlines, resources, etc.
- Training: Do we feed the system external training data? How do characterize the information? What is the objective function? The specific application is that if a user asks Ed Lai, "Where are we with Stripe integration?", then the AI should recognize that as a question asking about deadlines, and possibly wanting to hear some project updates. And then get the latest data to answer that.
- In AI systems like self-driving, the data is not updated in real time. So training can be offline (but probably still somewhat continuous). We have some added complexity here where our data is updated in real time. So somehow the training needs to recognize that.
- An early brittle version of this I think would use off the shelf NLP. Also, it can be somewhat dumb like Siri on Apple. When the human user asks, "Where are we with Stripe integration", then AI Ed Lai would say, "Here's a summary of the Stripe integration project", and just print a bunch of data and provide a link to that Jira project. So it's providing more information than the human user asked for, but hopefully the human user can quickly scan and get the information they need. (Actually human PMs often do this anyways, so it might be a good thing!)
- We can play around with things like should AI Ed Lai respond if it's not confident? If it is 30% confident that it parsed the message and has a "correct" answer, does it blurt it out? Does it say, "I'm not sure, but this is blah...". Or does it just not respond? These are the things we can play around with. And we would be actually innovating on something new. In the world of chat bots or Siri-like assistants, the bot always responds, whether it has anything useful to say. But in this application, AI Ed Lai can remain silent if it doesn't have a good answer. And that's actually a very interesting dynamic because that's what users expect in an async world anyways. If the outside user doesn't know whether they are talking to a human or not, then it doesn't matter. It shouldn't matter. We would then truly be inventing something new, and slowly moving our future into a world where people at work truly don't know whether they are talking to humans or not.
Edited by Victor Wu