WhatsApp Export Chat

There was a tiny controversy on one WhatsApp group I’m part of. This is a “sparse” WhatsApp group, which means there aren’t too many messages sent. Only around 1000 in nearly 5 years (you’ll soon know how I got that number).

And this morning I wake up to find 42 messages (many members of the group are in the US). Some of them I understood and some I didn’t. So the gossip-monger I am (hey, remember that Yuval Noah Harari thinks gossip is the basis of human civilisation?), I opened up half a dozen backchannel chats.

Like the six blind men of Indostan, these chats helped me construct a picture of what had happened. My domain knowledge had gotten enhanced. However, there was one message that had made a deep impression on me – that claimed that some people were monopolising whatever little conversation there was on that group.

I HAD to test that hypothesis.

The jobless guy that I am, I figured out how to export a chat from WhatsApp. With iOS, it’s rather easy. Go to the info page of a chat or a group, and near “delete chat/group”, you see “export chat/group”. If you say you don’t want media (like I did), you get a text file (I airdropped mine immediately into my Mac).

The formatting of the WhatsApp export file is rather clean, making it easy to parse. The date is in square brackets. The sender’s name (or number, if they’re not in your contact list) is before a colon after the square brackets. A couple of “separate” functions later you are good to go (there are a couple of other nuances. If you can read R code, check mine here).

chat <- read_lines('~/Downloads/_chat.txt')
tibble(txt=chat) %>% 
separate(txt, c("Date", "Content"), '\\] ') %>%
separate(Content, c("Sender", "Content"), ': ') %>%
mutate(
Content=coalesce(Content, Date),
Date=str_trim(str_replace_all(Date, '\\[', '')),
Date2=as.POSIXct(Date, format='%d/%m/%y, %H:%M:%S %p')
) %>%
fill(Date2, .direction = 'updown') %>%
fill(Sender, .direction = 'downup') %>%
filter(!str_detect(Sender, "changed their phone number to a new number") ) %>%
filter(!str_detect(Sender, ' added ') & !str_detect(Sender, ' left')) %>%
filter(!str_detect(Sender, " joined using this group's invite link"))->
mychat

That’s it. You are good to go. You have a nice data frame with sender’s name, message content and date/time of sending. And as one of the teachers at my JEE coaching factory used to say, you can now do “gymnastics”.

And so for the last hour or so I’ve been wasting my time doing such gymnastics. Number of posts sent on each day. Testing the hypothesis that some people talk a lot on the group (I turned out to be far more prolific than I’d imagined). People who start conversations. Whether there are any long bilateral conversations on the group. And so on and so forth (this is how I know there are ~1000 messages on this group).

Now I want to subject all my conversations to such analysis. For bilaterals it won’t be that much fun – but in case there is some romantic or business interest involved you might find it useful to know who initiates more and who closes more conversations.

You can subject the conversations to natural language processing (with what objective, I don’t know). The possibilities are endless.

And the time wastage can be endless as well. So I’ll stop here.

On multitasking, queues and call centres

Queues and call centres, with linear processing, are inefficient as they result in low utilisation. 

I recently read this excellent article by Tim Harford about multitasking.  In this, he talks about research which says that multitasking makes you ineffective because of high cost of context switching, something that I’ve come to learn over the last three years. He also has this nice piece on ADHD here:

“You’re letting more information into your cognitive workspace, and that information can be consciously or unconsciously combined,” says Carson. Two other psychologists, Holly White and Priti Shah, found a similar pattern for people suffering from attention deficit hyperactivity disorder (ADHD).

It would be wrong to romanticise potentially disabling conditions such as ADHD. All these studies were conducted on university students, people who had already demonstrated an ability to function well. But their conditions weren’t necessarily trivial — to participate in the White/Shah experiment, students had to have a clinical diagnosis of ADHD, meaning that their condition was troubling enough to prompt them to seek professional help.

This piece, however, is not about multitasking at the personal level. It is not about ADHD, either. It is about Adigas, and Citibank, and call centres.

As I had mentioned in a blog post yesterday, I visited Vasudev Adigas in Jayanagar 8th block on Sunday, after a really long gap. They have completely revamped and redesigned the restaurant, changing the place of the cash counter, food counters, kitchens and what not. Most of the design is good, and speeds up processes. Except for the cash counter.

A “feature” of cash counters at South Indian fast food restaurants is that there is no queueing. Counters are placed in a way that people can crowd around it from all directions. While this leads to some confusion and encourages bad behaviour, it also ensures that the person at the cash counter is always productive. If one customer is dillydallying about her order, the cashier can simply process another order before the first customer has made up her mind.

The new cash counter here, however, have very restricted access which makes it hard for the guy at the counter to multitask. As a consequence, his utilisation is low (customer take time to make up their minds), and the average wait is longer. And there is no queueing either, so there is no reduction in bad behaviour also.

For a similar reason, call centres are ineffective – they result in low utilisation on the part of both the customer and the call centre “executive”. It is unlikely that you spend all your time talking, and there is significant amount of time wasted in being put on hold or listening to boilerplate messages.

For example, I need to talk to Citibank because they’ve issued me a new debit card but haven’t sent me a PIN. When I call them, I’ll have to enter my account number multiple times, waste time listening to their options read out in a linear fashion and simply wait listening to random music when they inevitably put me on hold. On the “executive”‘s side, there will be time taken to verify stuff – when they are stuck with me while they might be serving another customer instead.

Call centres are a vestige of the 1990s (or earlier outside India), when phones were plentiful and internet not so. A significantly superior mechanism is to replace the call centre with chat – either through a web interface or through an app. Chat allows both the customer and the executive to multitask, and not waste time in meaningless tasks. Authentication can be superior to that on the phone, no time is lost navigating (since nothing needs to be read out linearly), and utilisation of both the customer and the executive is really high.

Yet, Citibank doesn’t offer this option. Neither do a lot of other supposedly progressive organisations. And that is disrespect to the time of both their customers and their “executives”. Hopefully, they’ll offer a chat option soon.

As for Adigas, the redesign has been after their new PE money came in. I’m less bullish about their changing their billing counter design.