Talk Tech to Me

Bots

Get "hand"-delivered posts.

Bots. They are ubiquitious, and becoming ever more present in our daily lives. You can’t hit a website without some sort of bot reaching out to you to offer advertising, suggest a product on the website, give you some more information, or help answer a question. Chatbots are the next wave of automated telephones where instead of just constantly screaming representative, you type it over and over again, or say whatever you need to say to speak to a real person. Personally, I also feel like this is where the robot revolution begins; we are teaching computers to become sentient and do the work we no longer want to do. How long before they decide they don’t care to tell us about our account balance, or answer our inquiries about JIRA tickets in Slack.

But I don’t really know much about bots. I’ve read a few introductions (you can find those at the end of the article if you’re interested), and there’s an entire publication dedicated to it called Chatbots magazine. Also, being in tech, I’ve known and seen a bunch of Slack integrations, and even worked on one or two. However, I have a friend, Jeff, that’s a veritable expert. His icon on my phone is a robot, that’s how much he is an expert. He’s graciously decided to answer some of my bot questions!

First, tell us a little about yourself. Prove your bot worthiness.

I have been working with bots for just over a year. All that work has been using NodeJS since that is the tech stack of choice at Condé Nast. I work with a small team in Austin with Condé Nast consisting of myself, one other senior engineer, and a Director of Product. Here’s what we’ve built in that time:

[A Facebook] Messenger bot using AR to try on makeup looks: send us a selfie and try on Kim K’s makeup or Ziggy Stardust’s lightning bolt

Messenger bot for “quizzes”, both “choose your own adventure style” and “correct answer” style; message Teen Vogue or Epicurious on Messenger to try them

An app that finds haikus in Condé Nast CMS content (all our brands) and puts them in a Slack channel where employees can vote on them. A Slack bot records the votes and posts the haikus to Twitter (@CondéNastHaikus) if they get enough votes

An action for Google Home that gives behind the scenes audio content on feature articles from the September issue

I was on a team that won the 2017 Condé Nast Co/Lab Hackathon by building a Slack bot that facilitates sharing content across brands, for example, Teen Vogue posted on their Facebook page about an article from Allure based on trending topics

From the Messenger bots, we built and open sourced a NodeJS SDK for Messenger based on the best practices we formed from building those projects

I am currently working through the approval process on an Alexa Skill for Epicurious

What are the different kinds of bots?

Generally speaking, I think there are skill bots, which are built to complete a specific task, and more conversational bots, which are meant to provide information or content. IFTTT might be a good example of a task bot in my mind or something like a rideshare hailing bot, whereas all the stuff we have built for Condé Nast thus far I think would be informational and content providing. I do not find there to be a strict definition of “kinds” of bots, even the terms “chat bot” versus says a “conversational interface” or app can vary wildly.

I hear the word chatbot thrown around a lot. Can you tell me whether all these types of bots mentioned above are chatbots?

Bots in general, to me, are automated processes that get a task done. IFTTT falls into this as do many Slack applications.

Conversational applications are on platforms like Messenger or Twitter and they contribute to a dialogue. They can obviously be non-human, then can be intelligent and seem human-like, which many falling somewhere in-between.

Chatbots to me combine both. The get something done for you but also have some interactive personality.

Those are just my personal definitions that I have formed. IMHO the space continues to evolve and those three terms have been used interchangeably, often times to a detriment.

What is the purpose of bots?

The general super high level but also somewhat lame answer is “to make our lives better”. I mean really, they exist to do repetitive tasks that humans do not want to do over and over again or make it easier to find information in a structured fashion. The space is growing very rapidly and new bots that do new things are popping up on a daily basis. Trying to assign a generalized purpose to the space of bots would for sure leave out something of value that someone is writing or has already published.

Why are more companies implementing bots?

In a lot of cases, they are reacting to market trends as app downloads slow and users looks for more efficient ways to get the information they need. Users continue to migrate to platforms that multitask, rather than apps that do one task or a set of similar tasks. If I can log on to Messenger and order coffee, get a ride to work, order lunch, set calendar appointments, etc. then why would I use 4-5 different apps to do those tasks if I can take care of it all in one place?

How much machine learning and natural language processing goes into each bot?

This can vary wildly. A lot of the bots I’ve worked on have no ML and limited NLP. On the NLP side of things, the small amounts that are needed are handling by things like API.ai. It all depends on the task(s) that the bot is completing for the user and how “conversational” the bot is.

In what languages are bots programmed?

Really anything, to be honest. Building a Slack bot, for example, involves connecting to their API so any programming language that can send GET and POST requests can be used to build a Slack bot. Thus far, everything I have worked with in the space has used NodeJS since that is the stack of choice at Condé Nast.

What are some of the main obstacles or debates in the world of bots right now?

How much should a bot try to emulate a human? There’s a lot of chatter about conversation design around this and similar things.

When, if at all, should a bot tell a user they are talking to a bot?

What does it mean to give a bot a personality? How much “conversation” should a bot be able to engage in?

How are bot platforms going to address the issues around discovery? This is especially an issue on the voice platforms.

Do you have any thoughts or answers to these questions?

Not really, as I have the engineering mindset. I would prefer they do a task and be reliable at that. I’m not, personally, interested in “talking” to a bot.