KudoChest
As the modern workplace has shifted from traditional office settings to remote (usually from home), so too have the tools we use to interact. In the early 2000’s, we used to gather around the water cooler or lunch table to strengthen social bonds with our coworkers. As time moved on, we began to use email and instant messaging more often to stay socially connected. As this shift occurred, we lost much of the subtle but relevant communication that occurs between physically proximate people - body language, tone, and realtime reaction. Emojis, acronyms (“lol”, etc), and video meetings have recaptured some of this, but remote communication in 2024 is a far cry from those face-to-face interactions that we took for granted 20 years ago.
In 2016, I watched an episode of Black Mirror called Nosedive, and it freaked me out. It depicts a society where people rate each other on a five-star scale after nearly every interaction, however slight. This, unsurprisingly, leads to both humorous and horrifying outcomes. From one perspective, I can see the appeal of a meritocracy with central accounting — something that feels a bit like status quo. However, taking it to the extreme as depicted in this episode is clearly going too far. Right? Or is that exactly where we’re headed? Honestly, I’m not sure.
This episode, along with the shift to remote work, got me thinking about software that facilitates status and notoriety in a social group. My initial idea was to create a website that allowed people to send karma points between email addresses, but the concept was too broad to be practical. Over the next few years, as I used Slack and Discord extensively for work and social recreation, I noticed how various apps were implementing ratings and karma systems. Each had its own approach, and none seemed to fit all scenarios. This led me to create a flexible app that could adapt to an existing culture and enhance it organically.
I started out by developing an app called KarmaChest, which had two main components: a website and a chatbot. The chatbot could be integrated with Slack or Discord, while the web component was designed for administration, user profiles, and other UI niceties. The chatbot served as an interface within Slack, allowing users to give kudos (or karma) and query the system for leaderboards, stats, and other features. I built the app using the Ruby on Rails stack because I was most familiar with it and wanted to prototype quickly.
To optimize performance, I implemented a caching system using PostgreSQL and Redis. When a team initially signs up, the system queries various chat platform APIs to fetch their users, channels, and other organization data. These entities are stored locally, enabling quick lookups without repeatedly hitting the external APIs. The cache stays current by listening to webhook callbacks from the chat platforms, which notify us of any updates to these entities.
After 14 months of development, I open sourced the code (GitHub) and promoted it on various online forums. I rebranded it as KudoChest, replacing “karma” with “kudos” to be more inclusive and to respect those who consider karma a sacred concept. I successfully pitched it to my employer - a public company of roughly 1,200 people - as a replacement for our outdated Hubot karma tracking system. Its overwhelming success there motivated me to maintain the project further.
While I have moved on to other projects since leaving that employer, it was a gratifying experience to see my creation appear in every channel across the organization. One of my favorite use cases was when a new employee would come on board and immediately feel a sense of acceptance as longtime employees welcomed them by giving them kudos. The leaderboard seemed to accurate reflect real social capitol at the company - those at the top of the board were the friendly and helpful folks from departments like quality assurance as opposed to those at the top of the org chart who wielded actual power.
As a Swiftie I feel it’s appropriate to leave you with these lyrics:
Takeaways:
- Slack’s API, customer support, and documentation were excellent in 2018–2019.
- Discord’s API, customer support, and documentation were subpar in that timeframe.
- Seeing hundreds of daily kudos exchanges between coworkers proved deeply rewarding
- Building a fully integrated, high-quality app takes far more time than initially estimated