What Your Calendar Can Teach You

Michael Sokol
Separation Of Concerns
3 min readJun 9, 2019
Photo by Roman Bozhko on Unsplash

A big part of my day-to-day consists of meetings. All my meetings are stored in my calendar. If I want to learn more about how I spend my time, I could extract data from my calendar and analyze it. So that’s what I did!

To keep things simple, I have identified three different types of meetings.

Task A task event is an event where there’s only a single participant, the creator.

Internal meetings — Any meeting whose participants all have the same email domain is internal.

External meetings — Any meeting with at least two different email domains in the participant list is external.

In order to remove the noise, I have decided not to take into account the tasks I found in my calendar because I use another system for these. Here are the metrics I have extracted:

Total time spent in meetings — We sum the duration of all the internal and external meetings to get the total time spent in meetings over a specified period of time. A more interesting metric is the total time spent in internal meetings versus spent in external meetings. By plotting that ratio on a monthly basis we can see how it progresses.

Average meetings per day — We can get this one by summing the number of all the internal and external meetings and divide it by the number of worked day over the period. We can obtain the average internal and average external for more precision. This can be a good indicator of your workload.

Distribution — Do you take meetings mostly in the morning, or the afternoon? Are they throughout the day? When the distribution is throughout the day, it might mean you need to look out for context-switching.

All of the above are interesting on an individual level but are even more interesting on a team level. By looking at a big enough period (one year or more,) we can identify trends. For example, if the average number of meetings per day is increasing over time, it might be a sign that the team needs to grow. We can also identify periods with a lot of activities and some with less, which can help a good deal for staffing.

For this project, I used Google Calendar’s Python API within a Jupyter notebook. Jupyter is highly flexible and allowed me to explore the data returned by Calendar’s API. I then transformed all of it into a Pandas dataframe. I used the “start” date of an event as the index in my dataframe to make it a time series. Thanks to that, I was able to resample and aggregate my data by month. Finally, I used matplotlib to plot different graphs.

You can directly grab the source code from Github by clicking here.

This side-project only scratches the surface of what we can do by analyzing calendar data. It’s another data point that’s available to us, and that can inform us based on the past how to prepare for what’s next. I hope it can be useful for you as well!

--

--

Michael Sokol
Separation Of Concerns

Lead Solutions Engineer @algolia — Previously @theuxshop.