Building and Launching the Dodo AdoptBot

Chao Li
Group Nine Media Product Team
8 min readJan 2, 2018
screenshots from the Dodo AdoptBot. Facebook Messenger ver on the left and SMS bot on the right

You can try the SMS version of The Dodo’s AdoptBot by texting hello to 38349 or you can find the Facebook Messenger version by going to https://www.messenger.com/t/thedodosite.

The Dodo Project Home V2 aka Dodo AdoptBot was super exciting for us because it was the first project we’re building on an existing prototype instead of prototyping something from scratch.

Dodo’s Project Home V1 is an initiative that aimed to pair adoptable animals with people who are potential adopters through The Dodo’s Snapchat Stories. Each day, The Dodo features a new adoptable animal. Users can swipe up on the Snapchat story to read more and view a special photoshoot with the featured animal. The goal of the original project was to bridge the gap between seeing something on the Snapchat story and actually taking action when outside of the Snapchat environment. The solution is to prompt users to text a shortcode with the name of the featured animal.

Due to the success of this project measured by engagement, repeat users, and a successful pet adoptions, The Dodo decided to expand this feature to a 2nd platform — Facebook Messenger, while also adding features that aim to teach people about pet adoption and show them adoptable animals in their local area.

Planning

V1 used Twilio for the text message service associated with a short code. The automated responses were coded in a tool called Dexter. We decided to keep using the same tools because they both did what we needed and we wouldn’t have to re-train the editorial team on how to update the daily adoptable pets.

Before getting too deep into planning, I found it extremely helpful to write up a requirements sheet for copy and talk to the editorial stakeholder. It sets the expectations and also you’ll be able to test and how long a message looks on the phone as the project moves along.

Take 1: We designed a 3-path system where users can learn about adoption, read about the daily Snapchat pet, or search locally for a shelter pet. The Snapchat track would stay the same. Learn would include some intro copy then link to a page on the Dodo with more adoption information. Search would enable users to search for an adoptable dog near them via the Petfinder API.

We also added a 4th path that will generate a random Dodo gif of a cute animal as a nice to have.

Take 2: The feedback from our Dodo stakeholders was that although taking users to our site is great for the longer pieces of information, however, our stakeholders felt like more information could be integrated into the bot experience to provide users with more value. This more or less did not change the overall structure of the experience.

Before putting things to code and finalizing our plans, we simulated a conversation between a user and the bot by texting each other. We wanted to check:

  • Does the workflow make sense?
  • What will a user naturally want to type?
  • When we pull in the description of the adoptable pets from the Petfinder API, is it too long for a SMS experience?
  • Which texts should we group together? And which ones should we separate?
  • How do the messages look on different platforms? (like Android vs iOS vs Messenger)

Take 3: By this time, Bethanne Zink became the new engineer on Emerging Platforms. With new energy coming into the project we tried a few things to to optimize the slowness of the gifs. In the end, we were still not happy with the delay of the gifs. It seemed to be faster on Facebook Messenger. On SMS, however, a user could have sent 3 new texts before the gif would randomly come through.

We spoke to our stakeholders, who asked if we’d be able to send users a Dodo video instead. We thought this idea is a great way to surprise and delight people.

Building

As we started building, we ran into an issue with the API integration into Dexter. In my experience working with emerging platforms or using new tools, documentation and support is often hard to come by — because it often does not exist. I braced myself for the worst and started shuffling some tasks around in my head. Luckily, Dexter was able to come up with a solution on their end to help resolve our issues without us having to change our timeline.

Dexter also has a feature where you can create a Messenger bot from an SMS bot by toggling a button. That’s a great feature for spinning up something fast but there are a few Messenger specific features (mostly formatting styles) that you might want to take advantage of by manually creating a Messenger specific version instead of using that Dexter button.

As we started thinking about the smaller details of version 2, Bethanne started a Google Doc to track how various types of messages show up on different platforms and what the corresponding code in Dexter looks like. It was especially helpful in helping us track how different kinds of link formatting vs media formatting options impact how a message with a video displayed on different platforms.

Example screenshot of what we tracked

Some unexpected stuff

I definitely underestimated the possible technical annoyances that could happen with an SMS bot. I went through my reading list and I did not see this stuff documented anywhere. So I guess I’ll just list some stuff here and if I somehow missed it in my readings, well… you can leave me a comment or something. #internet

The text messages are often received in a different order

This is annoying. There’s nothing we can do about this. We are sending them in order but users receive them in orders that do not make sense. We attempted to add a delay on the texts to see if it’d help but most of the time, the delay would have to be so long that users will have already assumed that their command did not work and tried to type something else. So we chose a few places to add a delay and changed some copy so that it wouldn’t seem as obvious if a text came through in a different order than intended.

Photos are often received with a big delay

We are trying to serve up some cute pictures of awesome kittens and doggos via the Petfinder API but the photos are huge. When we first started, we were not serving the small size photos and sometimes I would receive a photo 10 minutes after receiving the description of the pet and the link. Don’t even get me started on the gif feature.

We tried to make it better be serving the smallest size photos and capping the size of the gif to 2mb. It’s better but still not ideal.

Some carriers split up your text messages no matter which kind of device you are on

I almost had a heart attack

Some people told me that Sprint does this because they’re a CDMA network. Well, this is a huge pain.

After talking to a few people, we finally figured out that if a Twilio shortcode is used, the texts do not split. However, if you’re using a regular Twilio number, you will have this issue.

Another workaround, according to Stack Exchange, is to force a SMS into a MMS by adding a text message subject field to a text. We couldn’t do this because Dexter does not support adding a text message subject field. Many off the shelf tools do not have this but if you’re building a system from scratch, that’s something to think about.

Sometimes text messages sent from the bot would never reach the user

During our last round of QA, the Twilio log would show that a message has been sent in response to a user message but the user would never receive that text. Luckily, instead of immediately pointing the finger at the wireless network or Twilio, David at Dexter worked with me to troubleshoot this step by step. After 8 emails, it turned out that it was just a passing service outage because by the next morning, our texts were no longer disappearing or lagging by hours.

When you enable a bot in a brand’s page’s Messenger, you have to come up with a solution for “contact us”

After doing a soft launch of our messenger bot, we realized that now people who wanted to message The Dodo on FB would have no place to do that. We looked at a few different brand pages with bots and the most popular solutions were:

  1. Create a catch-all response that links to a different messenger address for off script user messages.
  2. Create a catch-all response that links users to the “/contact” page on their main website.

We decided to go with option one because it’s less jarring for users to go to another Messenger tab than if we opened up the web browser and took them to a contact page. The Messenger interface creates a more personal environment for interactions and we did not want to take people out of that.

Launch day

Our SMS bot launched without a hitch. However, our FB bot had its problems. Facebook has 2 tabs on the admin page where they show bot permissions. At the top of the main page, it also has a toggle where you can set the bot live. However, we missed a required feature during our submission for approval. When we toggled the bot live, we realized that non-admin users were not able to communicate with the bot. When you publish a new bot, make sure that all the features are properly approved and do not be fooled by the “live” button at the top of the page.

the devil

Conclusion

We set out to create a chatbot experience that would do justice to the voice and mission of The Dodo while also educating users on pet adoptions and fostering. I think we definitely did that with this Adoptbot.

Although Dexter was the right solution for us, if you are thinking about building a bot, have an idea of the platforms and functionalities that you want to include and it’s worth it to do a quick comparison of API.ai, Dexter and a platform like Chatfuel.

We’ll follow up with a post with any interesting findings in the near future. For some non-technical content on this bot, you can see the Fast Company article about it here.

Group Nine is hiring! You can see all our open positions on our jobs page. To read more about our work and to learn what our tech and product team is like, see our other blog posts.

--

--

Chao Li
Group Nine Media Product Team

Product Manager of Emerging Platforms at Group Nine Media, human to 2 cats.