Learnings From Building A Dad Jokes Bot

I am currently learning about conversational UX’s. A few months ago, I built a Slackbot named Alan (RIP) in Python to do reporting at Dinner Lab. He was a worse UX than a dashboard so I got rid of him. Earlier this week, I built an SMS bot that tells Dad Jokes. It was a valuable learning experience.

Check out the landing page. The page prompts the user to text “Dad Jokes” to a number. Any mention of “dad jokes” and it will send a meme such as:


Almost any other message will lead to a text based dad joke.

Twilio served as my back end. Twilio, while great, is not free. I tried to minimize costs, which meant trying to nudge users to send fewer messages. I had never tried to design a non-sticky, limited UX. That taught me a surprising number of lessons.

In no particular order, here they are:


Observations: There is a ton of friction for non-tech people to use an SMS bot. Without telling them I built it, I sent around a link to the website. They responded that they were sketched out. SMS bots have a history of being spammy. On the other hand, my tech friends happily texted the number.

It’s also a lot of work to visit a website, find a number, text the number, learn valid commands and save the number. Definitely more upfront work than downloading an app or visiting a webpage. Actually, my favorite SMS bots are alert notifications where I gave a company my number. I only want to hear from them when flight is delayed.

Takeaways: It’s easy to get fooled by tech people’s willingness to try bots. SMS bots have a lot of friction in trust and discovery. Slack and Messenger are somewhat better for trust.

Conversational UX

Observations: People don’t explore new commands without them being suggested. I had a few easter eggs that nobody discovered. People often retype the same commands again and again. Funny enough, I realize I do that when I use iTerm.

People could find the same jokes on the internet. The slight advantage of the conversational UX is the ability to push into a message queue. The advantage is not actually that it’s a message. People usually preferred GIF’s and memes to the pure text jokes.

A number of users requested daily updates. If I wanted to make this sticky, I’d establish a cadence of when to expect jokes. Jokes are something that people share. Ideally, I’d send a joke at a time of day when people are likely to be in a social situation so they would share it.

Takeaways: Find ways to naturally suggest new commands. Always offer a “help” command. Include some suggestions in your onboarding. People default to hi, hello, hey, etc. when they start. I prompted people to start by texting “Dad Jokes”. This saved some messages and just got straight to the jokes.

Content Specific Insights

Observations: As soon as someone got the same joke, they’d stop using the bot. The bot randomly chose a message to send. I calculated the probability of when a person would get a repeat using the logic of the birthday paradox. I chose numbers such that people would only get a few jokes before a repeat. Earlier this week, I started experimenting with Marsbot. I’ve asked Marsbot for 10+ suggestions in a row. There were no repeats.

Takeways: Don’t repeat content. I’d even be careful about repeating the same patterns of speech. Marsbot has a few different templates for its recommendations.


Observations: This is boring, but latency and downtime are killers. It’s similar to the web where page load times matter a lot. Especially for a bot where things are interactive, latency is a terrible UX. Of course, I liked the latency because it got people to ask fewer jokes.

Takeaways: Minimize latency. It is core to conversational UX. If there will be a delay between responses, consider sending a “thinking” text. Also consider redesigning to get rid of latency.


Leave a Reply

%d bloggers like this: