I know it is hard to strike a good balance between academic and technical focus, especially when writing about haskell, but I think starting out with language extensions and imports without writing about what and how we're going to do it, makes for difficult reading.
The smaller parts with the types and small implementations should be at the top and only at the end all is easily combined.
And I highly doubt that the author went about writing the chatbot by writing out all the language extensions and imports first (which makes the coding-along line at the and a bit cynical).
Edit: This sounds so negative. I think the article is good and shows how the small pieces work together but I think the order is all wrong.