Context

Starting as a little demo of a novel conflict res/merging feature for a decentralized SDK, Ravel soon grew into a simple to use messaging app with a very powerful trick up it's sleeve—it let you message people, with or without the internet!

The initial, simple order by timestamp lead to a confusing jumble of messages

Problem

As early adopters and internal testers began using Ravel, chat groups would form. Within chat groups, off-network splinter groups would have entire conversations that peppered into other convos leading to conversational CHAOS!

🧪 Internal research:

  • After chatting off-network and returning to larger chat group, conversations became jumbled and hard to understand.
  • Some users wanted to go back and see off-grid conversations, others wanted to ignore them.

🎯 Resulting biz goal:

Automatically separate "off-grid" convos in a way that preserves distinct conversations

Design solution organizes messages into branch-based threads

Solution

I made use of a simple card UI to create clear distinction between the different conversational threads that were merged together, as apposed to simply peppering in the messages according their timestamp.

Note the sticky tag at the top of newly synced/discovered conversation cards:

📈 Tester feedback

  • Help users build a mental model of the asynchronous off-network chat
  • Allow users to archive conversation cards that may not pertain to them

Details

Some tasty interaction morsels I am fond of...

Newly synced message branches/threads displayed as cards that can be archived