So, what is a bot? A bot is a software that is capable of talking with users using natural language. It may be powered by different types of technologies and backends. The bot may be programmed to allow the user to complete different tasks – like purchasing a ticket or getting customer support. It may also be programmed just to have fun, or complete something more complicated. A bot may interact with users on a dedicated app or website. Or it can be added on top of an existing platform that allows for third-party development. Recent examples of such platforms include Facebook Messenger, Amazon Alexa, and more.

Another way of looking at a bot is like an interface. A website, for example, is a graphical interface, whereby the main user interaction is graphical: buttons, images, sliders, etc. On the other hand, a bot is a  conversational interface, where the main user interaction is actually a conversation between the user and the software. Note that this approach comprises both chat and pure voice experiences. I personally like this way of framing it a lot more: it removes the idea that a bot is in itself an application. It is just an interface. What is a bot? An interface.

A real-life example is the Duolingo bot. Duolingo is an app to teach you a foreign language. A way to interact with the app is their bot. It brings a conversational experience to your learning progress – and it’s great! It’s a more compelling interface to an existing app.

Bot: A brief history

The first type of bot in the history may be considered Eliza. Eliza was created from 1964 to 1966 at the MIT Artificial Intelligence Laboratory by Joseph Weizenbaum. It uses mainly fixed pattern matching and substitution to understand what the users say. In other words, the technology powering it if course dated as of today. And this is the reason why I really like Eliza! Regardless of the – now rudimentary – technology, it is still a very engaging and interesting bot to talk with. And the reason is simple: Eliza is built to emulate a conversation with a Rogerian psychotherapist. The emotional potential of such exchange makes the experience very, very compelling, even today. If you have never tried it, you should! I’ve found a working version here


Much like a website or a mobile app, a bot can be designed before it is actually built. You cannot define colors or spacing; but you can define the personality of the bot, the questions it asks; how the user will interact with it; and more. Designing a conversational experience – such as a bot or a voice assistant – can be a complex task. It sits at the intersection of User Experience design, copyrighting and marketing. In order to design a proper bot experience, you can use pen and paper. Or you can start defining the general flow using flowchart tools like LucidChart. I personally would use a tool dedicated to conversational interfaces – such as Botsociety. But of course, I’m biased! If you are thinking about designing a bot, check out our tutorials.

What is a bot – Technologies used

Once you have the design defined, you can jump into the actual development. Your development team will need to put together different technologies. At a high level, you will need:

  • A natural language processing engine
  • Dialog manager: Business logic to handle your dialog
  • A Content Management System

A natural language processing engine (NLP in short) is needed in order to process the user’s input. It takes what the user has said as an input – a phrase – and it extracts its content in a programmatic way. So for example, if the user says “I want to go to Los Angeles” an NLP engine may extract: “Travel” as general user intent; “Los Angeles” as an entity of type “City”. The NLP outputs structured information that can be digested by the rest of the program. Good NLP engines are or DialogFlow

The following component is the Dialog Manager. You usually want this component to be custom built for. This is the part that, given the requests of the user, grabs the pieces of information needed and decides which message should be sent as the answer. So, following the previous example: The NLP engine returns “Travel” as intent; the dialog manager may decide that it needs more information, such as when will the user depart; or it may decide that it needs to grab the flight departures schedule and return those to the user. Having this component custom will allow you to have the maximum flexibility, have it access proprietary information, your API or other such resources.

The third component is a Content Management System. Now that you decided what you want to say to the user, it’s about how you exactly communicate that. You usually want to have a set of pre-written answers, in order to maintain full control of the tone of voice, and the general interaction of the bot. In other words, you want to follow the design you defined! At the same time, it’s good practice to keep the content and the copy decoupled from the business logic of the dialog manager. Keeping them together would force you to change the business logic even for small changes to the copy, which is impractical! You can have this component custom built, or you can use Botsociety again.

Wrapping it up

What is a bot? A bot is a software that talks. Its history stretches back to the 60s, but the recent growth of messaging and voice platforms is bringing it back. The relevance of bot and conversational interfaces is growing.


Thanks for your interest in this article! Feel free to leave a comment below if you have any question.


Categories: Ideas

Vittorio Banfi

Co-founder at