Conversation is just a game.

All we are doing is guessing where you will go.

Commodore 3d Maze game, Wolfenstein 3D and Pokemon Emerald

In this, I want to share what I imagine when I develop conversation paths, especially when I am fixing conversation errors, on Watson Assistant. Often I see issues which are quickly solved through this method as all a conversation does is walk around the environment you make and try to get into new places.

I don’t want to sell you a virtual agent.

That isn’t my job, nor my interest. I do want to share how I think of conversations. I trained with Watson Assistant. I have tried others. For developing the journey easily, I find Watson Assistant the best and have seen Forrester agree:

I will refer to Watson Assistant in the rest of this piece, but you could apply the same principle to the others with little change.

How I imagine conversation with a Virtual Agent.

If you have ever played Spyro, Zelda or another similar game, you know that for almost all doors you need a key. Similarly, in Watson Assistant to trigger conversational nodes, you need a key.

When you build a node you define the lock — or maybe more simply what key you need to get in. “If bot recognizes” is this lock definition step. Also within the node, behind the lock, you will write your response.

To be able to get the response, the bot must be able to get into the node and hence the bot must possess the key to get in.

Imagine we have the flow below. The user has just said “where is the bar?”. Now let’s treat this like Zelda, Spyro, Mario or another. The users response is decoded by the classifier to be of the intent #where-is and has the entity @location:bar. These are the keys our character has been given.

We travel from the start of the dialog tree trying our keys (#where-is and @location:bar) in every door. Eventually, (assuming there aren’t any errors in our tree), we get to the #where-is node. We have the key for this node so we go in.

Inside of it there is no text, but there is another thing we define in our node: the next action. We may say Wait for User Input, Jump (to another node) or Skip User Input.

Imagine a Jump as a teleport — if we see a jump we are going to appear somewhere else on another path in our tree or characters world.

If we see a Wait for User Input we calmly walk through the node/house and go out the backdoor, stand on the porch and wait for the user to say something else which will get converted into our next lot of keys.

A Skip User Input means we walk through the backdoor and don’t stop but keep going to the next door. We try our keys again. If they don’t work we go to the next one, etc.

Hopefully you, like me, are imaging a character like Spyro walking up to a house, unlocking it, looking for a response (and shouting that back to the user) and walking through out the backdoor.

Order matters. Going back to our example, we check our keys against all the options in the order we see them. We have gone through the #where-is locked door, found no response (so we haven’t shouted back) and walked straight out the backdoor to carry on because there was a Skip User Input.

Our character will always go to the nearest node first and check the keys and lock. The order matters. The next door we see is @location:resturaunt, then toilet and then anything_else. Our # where-is and @ location:bar keys don’t open the first two.

When we get to anything_else though we see the door doesn’t have a lock. Well damn! That door is open! Anything_else or true nodes essentially have no locks so we will always go into them — even if there are more doors after it. Our character won’t turn around either as they always will go to what they see first.

So we go in to anything_else. Let’s see what the response is going to be and shout that back to the user.

“Sorry, I am not sure where that is. Sorry I can’t be of any help!”

DAMMMMITTT I want to speak to a human being!!!


  • A Virtual Agent is better but more complicated.
  • They are only as good as they are designed to be.
  • It works in a travelling programmatic way.
  • It is a good start if you’re interested in becoming technical.

I hope you can see here that building Virtual Agents is a good job role as it sits in the centre of a lot of things:

  • It requires logical programmatic thinking.
  • You are immersed in the architecture of sending a message through the application.
  • Serves as an introduction into to machine learning/NLC (you will be responsible for making, expanding and refining a classifier).
  • You directly work with business SME’s to get the function they want.

If it is something you want to know more about I recommend you read Stephen Broadhurst post below:

Focused on saving our time: for your life balance; for our food emissions and for booking airbnbs.