Linear stories in Twine

Creating education content in a chatbot-format

As a part of my research stipend I prototyped a chatbot for a project, intending it to be used as a precursor to face-to-face psychoeducation. The content was drawn from multiple published articles and books. For this experiment I decided to use Chatfuel, a free service run by facebook on it’s Messenger platform. For the dialogue and content-creation I used a free tool called Twine.

There are now a massive amount of more-or-less free tools that enable anyone to create a bot extremely fast, and more are being released by the day. Additionally, bots are becoming smarter, rendering “bot feeding” (creating all the content for the bot) as we know it moot.

Why a chatbot for psychoeducation?

For this project we were thinking of alternative ways to deliver essential information regarding CBT (Cognitive Behavioral Therapy). We could provide users with 10-15 pages of written material, utilize videos and infotainment that is already present on the internet, let the users find their own information or wait until the users met their therapist face-to-face. By chosing the chatbot-route for pre-CBT psychoeducation I sought to test how this tool could provide a more interactive learning experience for its users. It proved quite the challenge.

Choice of platform

As I mentioned I chose Chatfuel - residing on facebook messenger. I wanted a simple bot with a tree-structure to its dialogue, with little to no user input. Chatfuel has a really simple and intuitive UI and creating content-flows is easy. The Messenger platform is widely used and would make testing the bot quite easy. The bot is connected to a Page through the Chatfuel platform, so users navigate to the page on Facebook to begin interacting with the bot.

alt text

Content creation

The obvious appeal of such a solution lies in being able to provide validated information in a language and form that young people feel comfortable with. Adapting the validated psychoeducation to this “other language” is nontrivial. Who are your users? Age? Sex? Context? Would you like the bot to speak a certain way? If so: In what way? And how should you make it avaliable for its users? Would you like to have free-text input? What about user privacy? There are a lot of important questions to answer, many of which are important to consider before starting to create the actual content for the bot.

I created a simple “profile” for the bot, defining age, gender, tone of voice, interests and mood. This would dictate how I wrote the dialoge that would end up in the bot. As it turns out, talking like a 16-year-old while not being 16 yourself presents a major issue (I later got some 16-year olds to test the bot and received some feedback that I consequently used to improve the dialogue). Writing the dialogue was what consumed the most of my time on this mini-project. Having defined a profile beforehand was very useful, as was reading up on content-creation in general.

Nevertheless, some issues emerged. One of them was translating scientific and/or strictly “psychological” words and expertise into the voice of a young kid. It is quite difficult to conserve the original meaning of a sentence written by an expert while making sure the text is as self-explanatory as possible. I had to spend quite a lot of time slashing sentence lengths, improving the text with small explanations and making sure to preserve the planned tone of my bot. In addition, I used the brilliant resources SciShow and CrashCourse to add some choices regarding the aquisition of information.


For this project the bot would be introduced ahead of the first face-to-face interaction occurred, and it would be made public and hence avaliable permanently. This means that users would be able to revisit the bot to collect information whenever they so please. For this case specifically I added a menu-function to the bot so returning users could go to any point in the bots dialogue.

The Bot

The resulting bot was a bit of a mess, although not bad for a first try. It took users about 10 to 15 minutes to go through the full dialogue, watching some videos inbetween the reading. Navigating the bot was done by clicking talk-bubbles with predefined text, some providing the users with choices as to which information they wanted. The youth who tested the bot thought it was a bit tiresome to click through this amount of dialogue. I did come to the realization that creating a bot this way is perhaps more interactive compared to reading a 15-page leaflet, but it only marginally so. It is however difficult to have users go through a predefined set of content if you grant users’ full power over the flow of information, as would be the case in a free-text-input bot.

I don’t believe I would want to create a bot like this again, mainly due to the fact that it is so locked to its pre-created content. As multiple platforms already offer AI-driven bots that to some extent invalidate the need for word-by-word dialogue creation, this kind of content creation is kind of old-fashioned. Already! Nonetheless it was an interesting learning experience, and I look forward to exploring more dynamic tools in the future.

More to come.