Introducing sodabotnik

While the IT world gets swept up in excitement over conversational interfaces, I’ve been keen to learn emerging best practices and design principles in this area. Have any bots made your day (or ruined it…) lately? Some friends of mine are working on apps with AI messaging functions, and it’s just a really exciting area to apply computational thinking. So I started a project based on GitHub’s Hubot project, and yesterday @sodabotnik said hello in our Slack #projects channel:

I’ve taught sodabotnik to respond to requests for fresh open government data, a request handily performed using the CKAN API of

You can also search for datasets by typing some other word after “more”, e.g.:

Type @sodabotnik help for a list of other standard commands you can try out. Not in our Slack community yet? Subscribe to the list to get an invite.

Once the capabilities become a little more interesting, we can let our AI loose on the world. Or, well, at least Twitter. To get there sooner, feel free to fork and contribute to sodacamp/sodabotnik

(First posted in the blog above)

At some point on Friday, it occurred to us that if Slack was our chosen platform for collaboration, with every participant registered and in a team chat, that it would make sense to connect Dribdat, our open source hackathon platform, to Slack.

And so sodabot was born, from a primordial soup of prior Hubot experiments, one of which had the purpose of making open data searchable through a chat interface. We cleaned out all the cruft and started up Coffeescript.

After being invited to a room, each team asked to have a dedicated one, the bot would ask if you needed help with your project. The first answers we got from users really captured the fun and magic of bot development :wink:

Max (a friend and founder of @mysyns) wrote up a series of health tips especially for hackathon-goers, to which were added quirky quotes, like this one by a well known American athlete:

Once the bot was enabled in a channel, it would remind you like this every hour to check your posture, stay hydrated, and generally keep on the ball. These reminders could, of course, be stopped at any time…

Projects were then initialized in Dribdat as soon as someone in the channel explicitly told @sodabot to do so with the update command. The name of the project was taken from the name of the channel, and the channel’s topic used to set a subtitle. The main content would be pulled down from a remote project page - such as a README on GitHub or Bitbucket (more on that here), once the link was shared with the bot. The project status could also be simply set:

Closer to the end of the hackathon, our dear organizers decided it would be best to ask a series of questions. For a second, I was thinking of using GitHub’s Gists or a template project, but again - a friendly participant came to the rescue, insisting that the questions are communicated directly to the bot. This was done in a big rush, but Max went around and made sure people were interacting with the bot properly.

In the end, we had 20+ project submissions go through this system. It worked pretty well overall, the conversations people were trying to start with the bot being indicative of some of the expectations and issues around chatbots.

There is tons of potential to develop this further, such as coupling more closely with the event schedule, assisting with team forming, problem solving and idea sharing. Of course other bots (and we were not the only ones working on bots at the Climathon!) can also come into play - for hackathon organizers this is a playing field which will soon be another determining factor in the event’s overall success.

To join in, fork and follow @sodabot on GitHub.