What is the best tool to visually represent chat conversation trees?
Here is my answer: XMind
Update July 2019: This video discusses my current views on this topic:
Time stamped table of contents
01:09 | Multiline nodes
02:40 | Different styles inside a single node
04:08 | Different shapes
04:49 | Automatically reformat layout to org-tree structure
06:35 | Support drill down
08:06 | Node labels
08:58 | Add notes to individual nodes
09:47 | Easy to share
10:20 | Easy to collaborate
10:47 | Aesthetics
11:15 | Price
13:07 | My recommendations
13:37 | Other tools
What is XMind?
XMind started out as a mind mapping tool. It eventually got support for flowcharts, but it is not capable of creating endlessly complex flowcharts like other dedicated diagramming tools such as yEd or LucidChart.
However, since we are focusing on a very specific, narrow type of flowchart - that which best represents chat conversation trees, I think XMind wins hands down.
The example flowchart
I took the flowchart drawn by the author of the above post and re-created it in XMind and timed myself. Total time taken: 5 minutes. In all fairness, I have some practice.
My bot is slightly more complex than the example proposed, and you can actually make the tree hierarchy a whole lot more complex.
So why use XMind?
Now some of these are specific to API.AI chatbots, but I think the points will still hold for other bot building frameworks which use the same primitives such as intents, entities, contexts etc.
You can type out both user says and bot says inside a single box
Now this is an advantage XMind has over other mind mapping software. You can do the same with a regular diagramming tool such as yEd too.
You can drill down/zoom in to see a specific portion of the tree
For the example chatbot I used above, this is what the drilldown view looks like:
You cannot do this drilldown using the standard diagramming tools.
It does not get in the way
Like most other mindmapping tools, XMind is designed for fast typing and doesn't get in the way. You cannot say the same for diagramming software which are more focused on handling as many different types of diagrams as possible.
The aesthetics are excellent
You could say the same about LucidChart too, but I think XMind creates flowcharts which are slightly more visually appealing (especially when you throw in the other things it can do).
It will do an automatic layout
This is an immensely powerful feature.
You need to manually drag and drop all your nodes in the other diagramming tools while XMind can do an automatic layout each time you insert new nodes. Imagine if you are inserting a node into the middle of a flowchart. It will be done in a few seconds in XMind usually, while it can be a really time consuming process in the other tools.
You can put all your meta information into the Notes tab
XMind has a Notes tab and this would be the best place to put all your meta information.
Specific to API.AI chatbots, you can add the following into your notes:
- the full list of user says
- the full list of text responses
- your action and event fields
- other parameters
- you can even add comments about the intent itself
These notes get saved right into the XMind map, which means when you share it with others, they too can get an overview by simply clicking on the relevant node and making sure the Notes tab is visible.
I don't think there is anything comparable in the other diagramming tools (please let me know in the comments if this is incorrect).
API.AI specific reasons why XMind is the best choice
The previous reasons are mostly bot framework agnostic. But if you are building an API.AI chatbot, there are some additional cool reasons to use XMind.
Intent names can be added as labels
You can add your intent names into the labels of the respective nodes. See the example below for the vending machine chatbot from the step by step guide (the greenish yellow labels below the rectangular boxes are intent names).
Having the intent names show up on your flowchart in this way is both unobtrusive and extremely handy while collaborating. You can just read out the label name to clarify which intent you are talking about.
Representing followup intents is straightforward
The flowchart example below makes this apparent. By following some conventions (I will write a detailed article about this in the future), you can use the diamond shape to represent contexts and you can then create the followup intent tree quickly and easily.
You can use specific colors (agreed upon with other stakeholders) to represent end of conversation
While you can do the same in other diagramming tools, I would say that XMind makes it look prettier. For example, in the flowchart above, the green rectangles represent end of conversation.
If you have been working with API.AI for a while, you know that having fallback intents for each intent makes your chatbot seem more intelligent (and even more if you have a second level fallback usually). Using colors can make them immediately apparent in your flowchart.
But it actually gets a lot better:
- you can add these fallback intents into your flowchart willy nilly because XMind will automatically take care of the layout
- you can also collapse them from view
- helps even more if you have multiple levels of fallback intents
- collapsing the fallback intents from view helps you reason about your chatbot more easily
- it reduces the clutter while analyzing the flowchart
- you can see more of the "full picture" when you keep your fallback intents collapsed
- collapsing nodes is not even possible in other diagramming tools (although it is a standard feature in mindmapping software)
And XMind is free While there are some features of the paid version of XMind which might make it even more useful for chatbot flowcharts (e.g. filters, search across your MindMap), the free version is still extremely powerful and is quite adequate for most of our purposes. Convinced? 🙂
As it turns out, XMind is not free if you end up creating a commercial chatbot (which is probably the majority of my website readers). So I have written an updated article with my most recent recommendations.
If you would like to learn the complete system I have laid out in this post, you can take a look at my online course.
- Using Collect.chat for preNLU bots
- Reader Question: How to get some sample training data for Dialogflow?
- Getting the top 3 (or top N) intents in Dialogflow: An experiment
- Dialogflow Regexp (regular expression) entity
- Using Dialogflow for educational bots
- Chatbot makes $3 million in sales in 1 hour
- Reader Question: Intent based FAQ bots vs knowledge based FAQ bots
- Should you use Dialogflow from scratch?
- 3 ways Airtable can speed up your Dialogflow prototype development
- Automatically generating a rich Dialogflow website chatbot