As I am in the handover process as a result of leaving Squirro, I am looking at and handing over a lot of the projects I worked on over the years. A purely internal one of which I am particularly proud is the Coffee Chat Scheduler, which I have now handed over to our operations team.
This project originally started when I decided I wanted to be more connected to our over 100 colleagues across the various locations. We have most people on hybrid work at our headquarters in Zurich, but also work with colleagues across US, UK, Poland, Serbia, Greece, Malaysia, and Singapore. In a physical office you meet around the coffee machine or the water cooler. In a virtual setup, these random moments need to be created in a different way. Other people would just pick up the phone at random times (I admire Dorian for being able to do this consistently) but to me this doesn’t come easily. I can’t help but worry about catching them at an inopportune time, especially due to time zone, or interrupting their focus.
So I decided to automate the solution.
In a first iteration I had Claude create a script which I would run once a week to automatically send 25-minute coffee chat calendar invites to a few people. But even that initial solution had a few bells and whistles which were necessary: it imported a list of all employees, including most importantly their time zone information and holiday absences, from our HR system. And of course it used the Google Calendar API to ensure the person was actually marked as available during that time.
Each invitation also came with the explanatory note:
Scheduling this to have a coffee together without any specific agenda.
Note that this invitation was automatically created and may be scheduled during an out-of-office day or at an inopportune time. Please feel free to re-schedule or decline if the time is not right.
Within days of starting this initiative I got new insights on current projects, new initiatives, but also connected to a lot more people on a more personal level. And it was not just me enjoying these conversations. In those early days, every person I had coffee chat with gave very positive feedback on the format. It was a little break out of work, just chatting with a colleague. The same reason we would linger in the office kitchen otherwise.
So next I had Claude Code convert my little script into a full-blown web app. I had it add a database, a small web interface for preferences, and scheduled jobs for the data synchronisation. The app authenticates using Google Login so that it can access the calendar API on every user’s behalf. So now anybody who signs up can decide how often they want to be set up for coffee chats, defaulting to one slot per week. Additionally people can override their availability, selecting which times and weekdays they prefer to have their coffee chats.
With all of this, the tool then runs once a day and sets up new invitations. It avoids any pairings which have already had a 1-on-1 (whether through the coffee chat system or otherwise) in the past 90 days. For all the other people it goes through in random order and picks the first one where both people have a time availability overlap in the given week.
In a way the system functions as a social scheduler for everybody who signs up. Crucially everybody across the company can be invited on their behalf. This created a nice little viral network effect where new joiners would often have their first coffee chat already in the first week, and with that learn about the system. This design decision grew out of the original intent: I wanted to speak to everybody, not just a small core of vocal people.
By default everybody can only be invited once per week. Taking 25 minutes out of your week to catch up with colleagues across the world is in my opinion a very worthwhile time investment. By signing up it’s possible to have the system invite more than once per week. At the moment 80% of the company is signed up.
I will note, that there is a 50% rejection rate for such coffee invites. As best as I can tell there are three main reasons for that: scheduling conflict, already spoke recently, or just not interested. A scheduling conflict usually happens due to short-term client demands.
If a client asks for a meeting, a coffee chat is the first meeting to get removed, and rightly so. To counteract this a little, the system reads the invitation status back from Google Calendar every hour and if it sees a meeting was removed or rejected by the invitee, it will try and schedule a new coffee chat with somebody else instead.
In terms of having spoken recently, the system can’t tell that two people actually had a coffee in person recently. I personally have a few colleagues I would go for lunchtime runs with or sit down for spontaneous in-office coffee every now and then. I thus added an option to ignore certain people for coffee chats, which was mostly intended for this case.
Lastly, and something that honestly I am a bit uneasy with, there were a few people who ended up rejecting every single coffee chat with every single person. Due to the nature of the programme, this is not something I would confront them about. If people don’t feel they can benefit from light-hearted exchange with people across the company, that’s not something I will force on them. So where I observed such a pattern, I simply deactivated them in the system so they wouldn’t get any further invites from other people. If they do end up wanting to participate, they can sign up and have the scheduler invite on their behalf.
The coffee chat system went live exactly one year ago. In that year it has facilitated over 1,000 random coffee chats across the company. This has connected people from all the different teams and locations who would usually not talk to each other directly.
There were plenty of concrete business outcomes. I’ve been able to connect people across the company dozens of times based on what they needed or were working on. For example a solution engineer mentioned in passing that an important partner was missing from our documentation, which then got fixed. Or an engineer in the US was working on a graph problem very similar to what I knew a colleague in Malaysia was doing which allowed me to connect them to each other.
This is a great outcome in itself. But I will admit, I enjoyed the non-work parts of these chats even more. I’ve been recommended a litany of books, I learned that a colleague previously worked on a local language-specific LLM in Eastern Europe, found out that Squirro has a small army of climbers, including one colleague who built a climbing wall in his cellar, and learned about a colleague’s book club which started with the eclectic Gödel, Escher, Bach.