Totango Blog

An Under-the-Hood Look at Implementing Zoe in Slack

Stay in the latest updates.

Get the latest tips and advice delivered straight to your inbox.

Lessons Learned by our Developers: Implementing Zoe in Slack

Zoe is the new product from Totango that allows everyone in the company to participate in customer success. Zoe’s conversational interface lets employees ask questions about customer data and segments of customer data directly in Slack, as well as create Impact Steps for customer-focused missions.

A typical use case might be a CTO typing “@zoe tell me about globex.” Zoe will respond in Slack with the data available in Totango for the account, displayed alongside recent interactions with customer success team members .

Zoe account snapshot ("tell me about")

Another example is that a sales manager might ask Zoe to “@zoe show me Q2 renewals.” Zoe will respond by displaying all accounts with renewals coming up in Q2.

Segment in Zoe

Zoe is built as on top of Totango’s first product, the customer success center, which does the heavy lifting of building rich sets of insights from separate systems, such as Salesforce or a Segment.io. In Slack, Zoe’s conversational interface makes it easier to access this data in a straightforward way that all employees, regardless of their understanding or permissions within Totango, can access.

In this post, I’ll share lessons we learned as we developed Zoe’s first implementation. In retrospect, these learnings seem quite obvious, but I wish I would have known about them before we embarked on this mission 🙂

Keep it Simple

When we began developing Zoe, one of our biggest considerations was data density. Zoe is the portal that gives all employees access to the data in Totango DNA-CX, our proprietary data architecture that contains a multitude metrics and dimensions of customer data.

When you’re building a traditional web-based UI, there are many options for how users can gradually discover and explore data. For example, in order to gauge the progress of an account, a customer success manager might need to review the week-over-week growth of a certain metric. The Totango UI allows the CSM to drill down into a metric trend with just a simple click. However, when you’re building a bot, your visualization and interaction options are more limited.

Slack messages attachments are really flexible, and can include buttons, attachments, emojis and other goodness. But their paradigm is closer to a command line than to a web UI: you type in some text and get a short text response back. This took us some time to get used to, and our first designs spat out pages of metrics in response to even the most simple request.

Early designs yielding complex results

Our usability tests and analytics told the story: we were overwhelming users with data. As we continued to develop Zoe, we discovered that as we reduced the density of information, users were able to better understand and act on Zoe’s responses.

Our #1 rule became: “Between simplicity and depth of information, always opt for simplicity.”

Turning a rich, interactive media page into a few lines of text

We kept paring things down until we could not remove anything else. In many cases, we had to let go of dimensions of data, or we had to work harder on the back end to translate several data points into a simpler insight.

The current version of our bot interface translates our web UI with multiple charts, tabs, and drilldowns into a single card view with five buttons that will reveal more data. Not only is this a better design in the chat interface, it’s also better for Zoe users who are on the go and want the “Cliffs notes” version.

Choose the Right SDK

We knew we wanted an abstraction layer over Zoe’s communication with Slack, so we decided to use Botkit. Botkit is an open-source bot development kit that makes it easy to build bots in multiple platforms, such as Slack, Facebook, or Kik. Botkit’s plugin architecture can connect anything  from custom logging to NLP engines  to your bot’s conversations. We were even able to easily plug in support for our own operational logging and metrics, which is always great when adopting a new framework.

Botkit has a strong open-source community, great documentation, and easy start-up. I highly recommend it.

All about Microservices

Our first iteration of Zoe was an end-to-end microservice: it would listen for incoming Slack messages, parse them, resolve them, and apply logic to translate them for our platform. However, that structure made it difficult for us to iterate quickly. Each time we wanted to change our code, we had to consider the impact of the change on the rest of the business logic before testing and eventually deploying the change.

Eventually, we split the service into two microservices, each responsible for different parts of the user experience:

Zoe bot and Zoe brain

  • Zoe Bot — The interface microservice that processes incoming user commands, interprets them, and passes the request to the business logic layer.
  • Zoe Brain — The business layer microservice that processes requests and pulls the information from Totango’s core data platform.

This is an implementation map for all bots: separate your bot interface from your app’s core business logic. In addition to separating concerns and increasing agility, you’ll be able to keep each microservice stateless, which makes your app easier to scale as your user base grows.

Iterate Quickly

Adoption is the primary goal for a bot, and there is an enormous difference in adoption for bots with an “okay” experience and those with a “great” experience. Users don’t have the patience to continue working with bots that provide irrelevant responses, so they quickly move on.

To make sure your bot isn’t providing just an “okay” experience, and seeing the predictable drop in adoption because of that, you need the mindset and the tools to deploy many versions of your bot and iterate quickly based on your learnings.

We released the first version of Zoe one week after we started working on it, and then we used that version as a baseline to gradually gather feedback, discover issues, and share with new users.

We created a dozen iterations of Zoe’s basic query response in a single development sprint, enabling us to reach a format that was the right balance of content and information density.

The winner of the many iterations of <"zoe tell me about my customer">

Beyond the Bot

A conversational interface isn’t just a bot interface. A conversation doesn’t always start with “@zoe” in a messaging tool, and it doesn’t always end with Zoe spitting back information to the user.

We discovered that customer success managers who use the Totango Customer Success Center often need to loop in other people as they’re working in that tool. Sure, they could switch their application over to Slack to loop in that engineer, but we wanted to make a more convenient path. That’s why we created the “Share to Slack” feature in the Customer Success Center.

UI to start a conversation in Slack

To build a truly conversational interface, you need to make it easy to get things done frictionlessly. Sometimes that involves speaking with a bot in a channel… but sometimes it means more than that.

Work with the Slack Community

Slack’s developer support team is fantastic and has helped us every step of the way. From validating our architecture to recommending design patterns to sharing their roadmap, they’ve really shaped the final Zoe implementation.

We also have to give a shout-out to the team at Botkit, who have been great resource.

We’re excited to see more and more roles across companies who are using Zoe, having meaningful, data-informed conversations about customers, which means we’re closer to our goal of empowering companies with the open approach to customer success.

This post was originally published in the Slack Platform Blog. See it here.

Oren Raboy

Prior to Totango, Oren founded Kidyosj and Beyondo, and served as the Head of Products at P-Cube (acquired by Cisco). In short, he’s a perpetual entrepreneur who has finally found the winning product in Totango.

You might also like
You might also like