The highlight of my week (and possibly my year) has been finally releasing Duologue, a chatbot that rescues you from uncomfortable silences by prompting you with questions to ask when the conversation starts to dry up. You can check out this Facebook messenger bot on the Duologue Facebook page. Duolouge is also open source, so you can look at what makes it run in our GitHub repo here.
I’ve been working on Duologue for about three months with an anonymous code benefactor & mentor of mine. Duologue is the product of a pub conversation: this person was describing an evening where he was at a fancy networking dinner and he was struggling to figure out what to say to one of his neighbours at the table. “We should build an app for that!” I said. So we did!
Luckily my mentor is a patient teacher because I am not a developer by background or (as it turns out) inclination. He did the bulk of the work building the tools that make the bot go. I mainly focused on figuring out existentially what the bot is for: what WOULD help people who are stuck in silence to get unstuck from it? We considered several ideas and finally decided to feed users questions they can ask of the person they’re talking to. You can read a little more about that decision here.
It was also my role to design how the conversational flow of the bot would play out, figuring out the links between the states and dreaming up question content to deliver to the user. It’s clunky compared to the kinds of sophisticated natural language processing interfaces you get with tech like Alexa and Siri, but I can honestly say that my elation at watching our simple app go live delighted me more than handing in my final, bound PhD thesis, passed with corrections. The wonder of watching Duologue unfold over the past few months, filling the GitHub repo slowly with increasingly complex code and springing to life in my Messenger window, is like the unfurling of green shoots from the ginger root tucked demurely in my fruit bowl: a unexpected marvel that fills me with joy though I do not fully understand.
But there are frustrations too in building a thing when you’re working with someone whose skills in one area are much more advanced than yours. I look at the dapper state machine that my mentor designed for our bot, seeing the way it elegantly picks up the right pieces of information and puts them in front of the user at the right time. In contrast, a couple of days ago I wanted to make a small change to the bot–it only had one thank-you message and I wanted to vary between several so the user has a more natural experience if they complete more than one conversation with Duologue. Compared to the size of the whole program, this is a tiny problem that we ultimately solved in 3 lines of code. Even though there was an analogous solution in front of me (this is exactly what another piece of code in our app does when it feeds different questions to the user if they ask for more) I couldn’t work out on my own how to make a variable thank-you message instead of a static one. I felt and still feel very strongly that this is a challenge I should be able to overcome. It irks me that I wasn’t able to fit all the pieces into the puzzle solo. I’m also embarrassed at how easy it was for me to size up the problem, deciding I could be satisfied with a static thank-you because it seemed like too much work to make it do what I wanted–especially when I think about the bigger things I’d really like to do with Duologue.
Right now my ambitions are greater than my technical knowledge. But if we only approached challenges that we knew how to solve our lives would be flat and devoid of mystery. In its imperfection, Duologue is an adventure. And as I said, I am lucky to have a patient teacher.
Please go play with it and share with your friends. We’re keen to see how people interact with Duologue and to hear stories about how people use it. We look forward to hearing yours!