Embracing complexity: Designing our Custom Bot builder
Main illustration: Olenka Malarecka
For product teams, complexity is a dirty word – it’s the anti-goal. You can call it “flexibility” to make it sound better, but it raises the same problems: hard to design, hard to explain, hard to use and hard to maintain.
Our early offerings for chatbots deliberately avoided all that. But to make our bots do the jobs our customers needed, we had to let go of our earlier opinions. We had to embrace complexity.
That’s why last week we released Custom Bots: a huge update to our chatbot, Operator. Custom Bots give our customers the ability to create an entirely customized bot experience for their business.
When you need to reach beyond simplicity
A year ago we talked about building a bot with manners. Our goal was to offer simple bot skills that were easy for our customers to use (they just toggled their bots on or off) and didn’t make them figure out how to create a good chatbot experience. We wanted to ensure we had a quality end-user experience so we were very strict. Our customers couldn’t change a single word of Operator’s text. We just let them choose what information they wanted to collect and we did the rest.
And this turned out to work well. When a website visitor asks you a question, Operator becomes your trusty sidekick to automatically ask a small set of initial questions that will help you qualify that visitor and keep the conversation going. The results? We found that sales conversations with bots convert 36% better, in part because a chatbot can respond faster than humans for most repetitive tasks.
As successful as our first exploration into sales automation was, after 12 months of learnings and feedback from thousands of customers, what we discovered was that we didn’t go far enough. Our customers want to be able to ask their own qualification questions in their own order, creating different conversation flows, and customize what their chatbot says and does in different situations.
Here’s an example one of our customers, OutSystems, sketched out for us. This is what they wanted to do with Operator:
And this complexity is not only needed for their internal workflows, it’s also needed to give a sensible and coherent experience for the end-user.
So we recognized we had to embrace this complexity. This is the right way to do it: start simple and build up complexity, but only after you’ve validated it’s actually essential to solve the problem. In other words, apply Gall’s law:
Don’t expose all the complexity. Contain it
Custom Bots are probably the most complex feature we’ve built (at least in terms of the complexity that our customer is exposed to), so it’s tempting to drop everything you’ve done before and start from scratch. For example, one direction would have been to design an entirely visual bot builder, which maps directly to the way customers sketch them out on paper. But we found these visual builders actually amplify the complexity; they quickly become overwhelming.
Instead, we chose to reuse existing patterns and components from within our system. This is good for our customers, because it means they don’t have to learn something completely new, and good for our teams, because it’s easier to build and maintain (Julien’s post reminds us of the cost of complexity for product teams). And it means we can ship it much faster, which is good for everyone.
So our approach was to contain the complexity in blocks. Chunking is a foundational principle of cognitive psychology: people are able remember complex ideas by breaking them into smaller, digestible chunks. That’s essentially what we’ve done here:
It takes a little more effort to understand the flows, but the big advantage is we’re able to provide a WYSIWYG editor for the content you write and actions your customers can take. We think it’s an elegant marriage of utility (the blocks on the left) and intuitiveness (writing directly into a messenger view on the right).
Building compound interest in our product
One of the reasons we’re so optimistic about Custom Bots is how they leverage the power of apps. With the introduction of apps and the launch of the Intercom App Store, you can end the flow by giving your users something relevant and actionable. The possibilities here are huge, but then too, so is the level of complexity we need to handle.
But in this case, that complexity is already contained and solved. We simply use the same UI experience users know from inserting apps into their Messenger homescreen, or into conversations. This is product compound interest. We can deliver massive benefit and minimize complexity by being able to reuse components in our system.
For instance, say one of your chatbot flows ends up with a potential high value customer, and you want to enable them to book a meeting directly with sales, with the Google Calendar Meetings app all this additional complexity in contained in a little popover window. It’s the same one you’d get if you added this app to a conversation, to an auto-message, or to your Messenger homescreen:
Or say one of your bot flows ends up with a potential customer who isn’t a hot prospect for your sales team, but might still be well matched to one of your self-service products. Now that you know what they’re interested in, you can end the flow with a series of links and with our Content Showcase app; that seemingly complex series of steps is already well contained in the app:
So a system that can route people down multiple paths, and then get to them to a result that feels relevant and useful, while also fast-tracking things for the company, is incredibly valuable. And we’re able to manage that complexity by reusing our self-contained app components that already exist in the system.
Templates smooth the bumps of complexity
One concern our team had during the project revolved around how best to guide our customers and show them what’s possible here. Custom bots are not something you can just quickly dive into for a couple minutes, set them live and then let them be. Instead, they require understanding your company’s and your users’ ideal flows, mapping those out and then implementing them.
Templates are our solution for overcoming that initial conceptual complexity. They let customers easily engage and dive into the feature and really start to forming their own ideas for how they want to adapt it.
And just a few days after launch, we’re already seeing the value of these templates: twice as many bots have been created from templates as from scratch.
When you’ve opened the door to the room of complexity, it’s essential to provide some stable, solid, safe first steps for your customers to take. Otherwise many will just back away and close the door you convinced them to open.
Automation and complexity
We believe the world of automation is truly upon us. But automation comes in a variety of guises. This release is about enabling our customers to fully program and control chatbot flows, and giving them tools – namely, apps – that can make that experience relevant and mutually useful. We’ll expand what we offer here, so that our customers can use custom bots more broadly in our system.
Automation almost always means embracing complexity in the system, but with varying amounts of user control. The challenge is in figuring out the right level of interaction between the human and the machine. Managing complexity, as with all things in building product, is the art of tradeoffs.
Stay tuned as we continue to evolve our approach to automation.