1. A method of operating a chatbot to engage in a conversation with a correspondent, the chatbot having a conversation data structure comprising plural conversation paths, each path comprised of nodes each having coded instructions and/or relationships with other nodes; the method comprising: receiving one or more input messages from the correspondent; based on the one or more received input messages, building a profile having plural profile variables for the correspondent; and during the conversation or a future conversation with the correspondent, selecting a node in the conversation data structure for processing based on the one or more profile variables, and processing the node to follow a conversation path based on the node's coded instructions and/or relationship with other nodes.