Great work. I really like what you've done here. Just having a look at your code, shouldn't the "if len(conversation["ancestors"]) > 0 :" be "while len(conversation["ancestors"]) > 0 :"? This way you can ensure that you're traversing all the way back up rather than just the first layer.