Crafting Intelligent ChatOps: A Design Guideline for the Future

Yafei Ma
IBM Design
Published in
8 min readDec 12, 2023

ChatOps, an integral part of modern DevOps and ITOps, plays a pivotal role in the continuous evolution of IT landscapes. It’s a collaborative approach that integrates chat tools like Slack and Microsoft Teams with automation, enabling teams to execute tasks, receive alerts, and access information seamlessly. This streamlines communication and simplifies system and workflow management. Now, ChatOps is gaining popularity among many DevOps teams, seeking to enhance collaboration and communication between software development (Dev) and IT operations (Ops) teams. In the market, you can find various solutions, including IBM Netcool Operations Insight, IBM Z ChatOps, AWS Chatbot, and BMC Helix ChatOps. However, when designing ChatOps, developers have technical resources to enable ChatOps up to a certain point, while UX and content designers often lack comprehensive guidelines to enable the rest that brings users the best experience on interacting with chatbots. To address this gap, the UX designers and content designers from IBM China studios have created a set of design guidelines based on their product experiences. These guidelines aim to quickly onboard IBM designers with limited ChatOps exposure, helping them understand design principles, capabilities, limitations, and sparking innovative ideas.

In this article, we distill the core principles from these guidelines through four questions. Ask these questions as you get started with the ChatOps design.

  1. What users can do in conversation?

Think about how users can interact with your chatbot. There are three options: command line, structured language, and natural language. You can offer one or more of these methods for users to inquire and interact with the bot.

Command line is easier to implement in the context of operations, as it’s more reliable, and easier to maintain. However, it might be a challenge for users with little technical background when it comes to facilitating cross-functional collaboration in a single chat tool.

Given this situation, you can provide basic natural language capabilities and use NLP techniques to enhance usability. In cases with limited development resources, but a desire for more natural interaction methods than the command line, structured language is an option. It aims to reduce the unpredictability of user input through certain syntax rules.

Three ways of interacting with ChatOps

Once the interaction method is determined, the next step is to identify the tasks users may need to perform using ChatOps. This requires designers to define and categorize various inquiries users might make and formulate responses through conversations. These inquiries can be classified based on their relevance to the topic, whether they pertain to the problem or issue under consideration, and if they fall within the product’s supported scope. Priority should be given to on-topic, in-scope inquiries that are directly related to the ongoing discussion and feature within the product’s scope. These features are of high importance and should receive comprehensive support.

How we define key use cases

To identify the tasks that users need supported, you can list the key use cases related to the users’ central tasks. For example, common tasks that chatbot users may perform on a daily basis include monitoring system performance and managing incidents. They may use various tools to track key metrics such as uptime, response times, and error rates, and may respond to and resolve incidents.

If you add Natural Language or Structured Language as interaction methods, make sure the bot can understand users’ requests and respond appropriately. Therefore, it’s crucial to list these key use cases and train the bot with knowledge of the potential utterances used to make the requests.

2. What information do I want it to display and how?

After you define the interaction method and use cases (inquiries), it’s crucial to consider how to present the output information.

Designing for chat platforms like Slack, Microsoft Teams, or Mattermost is distinct from traditional web UI design. These platforms have unique interaction principles and constraints. For example, in web UI, users can right-click for actions, while in chat platforms, actions are executed through buttons and dropdowns below the information.

Therefore, you might need to consider the UI limitations when presenting information. For instance, when presenting a lot of information, how do you prioritize content to make it easier for users to get the key message at first glance? The chat window is quite small, so how do you better display information? When users need to take multiple actions, how do you organize the action buttons?

Let’s delve into a practical example of redesigning the resource view in a chatbot, transitioning from a typical web user interface (UI) use case.

Resource list view in web user interface
Redesigned resources view for ChatOps

First of all, how do you organize and prioritize the information? In this example, we provide a summarized message from the bot, replying with, “I’ve found the following 10 results for resources on Domain 1.” This helps users get the key message at first glance. Then we need to figure out how to organize the information and consider layout limitations, so we use a three-column list to display attributes with icons, including the compound, observed, and desired status. We use supported text in “Plain text Bold” and “Plain text regular” to make distinctions and contrast.

Due to the substantial volume of resources and the constraints of the chat platform’s limited space, we’ve integrated a ‘show more’ button to maximize space efficiency and enhance the user experience. Considering that chat platforms don’t support menus, we embed action buttons beneath each resource. Users can easily navigate and access specific resource details with a single click.

In summary, this example illustrates the approach to optimizing various components in ChatOps design, including cards, dropdown menus, modals, lists, button text, and icons. Each component is tailored to specific ChatOps scenarios, ensuring flexibility while considering platform support and limitations. The precise selection and usage of these components depend on your unique use case.

Recommended interaction components in ChatOps Guidelines

3. What other constraints should I consider?

In addition to UI constraints, when designing ChatOps, it’s essential to consider various limitations related to collaboration and operational scenarios within chat platforms. These constraints can significantly impact user experiences. For example, there’s typically a 3–5 second delay in receiving responses from chatbots. And, different chat platforms impose distinct character limitations on output messages. Furthermore, in the context of conversation history, the inability to refresh previous data or disable past actions poses significant constraints, users may take the previous actions accidentally which impacts the overall user experience. Consequently, it’s vital to proactively consider these aspects throughout UX design to ensure alignment with the specific needs and expectations of your users.

  • Character Limitation

There are different character limitations for one output message on different chat platforms. For Microsoft Teams, the character limitation is 28,000. If the character of an output message exceeds the limitation, the message can’t be sent out. Therefore, you can only show limited results in one message. The pagination used in web-based design doesn’t work for ChatOps design due to technical effort and performance considerations.

To address these challenges, we recommend setting a default message length below the character limit to ensure users consistently receive complete or partial results. Additionally, it enhances user experience by offering users the ability to customize the number of output messages based on their preferences. One example from Z ChatOps includes an option to ‘ — limit-number’ for user input, allowing users to tailor their message output results.

Z ChatOps Documentation
  • Previous Button Cannot Be Disabled

Furthermore, it’s important to note that certain chat platforms maintain a conversational history, making it impossible to refresh or disable previous actions. In these instances, the chatbot should communicate to users why certain actions can’t be performed and provide alternative actions they can take. For example, if a user attempts to ‘Stop’ an operation from their message history, the chatbot can inform them that the resource has already been stopped, directing them to check the latest status and take appropriate action.

Use case

4. How can I make my ChatOps more intelligent?

When faced with limited development resources, design becomes even more pivotal in enhancing a chatbot’s intelligence and perceived intelligence by users. To further elevate the chatbot’s intelligence, it should not only respond to users’ explicit requests but also aim to “anticipate” their needs. This entails an ability to understand not only what the user is currently asking but also to predict and proactively organize the next steps.

In such scenarios, here are some recommended design steps to follow:

In essence, an intelligent chatbot should grasp the user’s intentions and provide the requested information, ideally offering a summarized version for clarity. Moreover, it should have the capacity to predict the user’s subsequent actions and seamlessly integrate them to provide an experience that exceeds users’ expectations. When there are multiple possible next steps, the chatbot can prioritize them based on relevance and priority. For example, when a user issues a command to list all jobs starting with “zwe,” the chatbot can not only provide basic information but also offer a summary of the jobs’ current status. Additionally, for jobs with errors, the return code is an important reference, so the bot can provide a hyperlink to the return code details for users to look into.

Furthermore, it’s common for users to check execution data as their next step according to user research. The chatbot can proactively provide this information, reducing the need for users to request it. Prioritization becomes essential when there are numerous potential actions to consider.

Use case

In conclusion, ChatOps, though inherently a machine, is profoundly influenced by the designer’s knowledge and human intelligence. By implementing smart design, we enhance the chatbot’s user-friendliness, thereby compensating for its initial absence of human intelligence.

As ChatOps continues to evolve as an indispensable part of IT environments, it’s crucial to follow key design principles to create optimal user experiences.

This article has provided 4 core guidelines to keep in mind:

  1. Clearly map out the conversational capabilities based on your users’ needs.
  2. Optimize information display for the limitations of chat platforms.
  3. Proactively consider character limits, disabled buttons, and other constraints.
  4. Enhance intelligence by predicting user needs and next steps.

By keeping these guidelines top of mind, you can craft more user-friendly, efficient, and intelligent ChatOps experiences. Adapting to your users’ needs and chat platforms’ capabilities is key. Following these best practices will lead to ChatOps that serves as an indispensable ally across your organization.

Yafei Ma is a UX designer at IBM based in China Studio. The above article is personal and does not necessarily represent IBM’s positions, strategies or opinions.

ChatOps guidelines is created by UX designers and content designers from China Studio. Thanks for the invaluable contributions of team members in creating the guidelines used in this article : Li Yue, Phoebe Chai, Tessie Wang, Yuchun Shi, Mohan Bai, Zhi Qian Tan, Wen Ting Su, Fengxia Xiao and Yafei Ma.

--

--