Slack Vacation Bot Tutorial – Introduction


Soon after we started SuperNimbus we found that tracking employee and contractors vacation and sick days was becoming quite complicated. Much of the issues were related to directors and admins being the bottleneck and being required to check requested vacation dates and making best judgment for who was going to be on vacation and when. As a bootstrapping startup this process worked fine when we had a few employees, but as the team grew we needed something more solid for tracking these days for employees.

We knew we wanted something that could integrate into our day-to-day communication apps, specifically Slack, and could automatically report when members of the team were absent.

We found there were many products already out there that provided these services and features but they were quite expensive and limited in their flexibility. Being a backend development company ourselves we tasked one of our new hires with building something suitable for us. We have added to that system over the years and the resulting system is outlined in the following tutorials.

Project Aim

  1. Annual Leave Calendar

    We need to be able to track employee’s vacation days and sick days as they are requested. This is going to be a simple Google Sheets document which will perform all the necessary tracking and calculations for admins. This needs to be flexible enough to accommodate full-time and part-time employees and employees that may have more or less vacation days than other employees based on contract or time with the company.

    It should also be apparent by looking at this calendar if any conflicts in annual leave are about to take place, for example, all developers assigned to a certain project coincidentally requested the same week off, which could lead to the project being paused or deadlines slipping.

  2. Slack Calendar Notifications

    We want to be able to post vacation days into the #general channel in slack every morning so the team knows who is off each day. As many members of our team work remotely, this was essential information for our team as they could be blocked waiting for a response from a given team member who is not available that day.

    We also want to tell the whole team the full report of vacation days at the end of each week so the team can plan on Monday for longer absences coming in the following week.

  3. Slack Bot

    We want employees to be able to check on how many vacation days they have, how many they have taken and any requests that might be pending. To do this we will write another slack integration that can be integrated into your team’s slack account and can be accessed via slash (“/”) commands.

  4. Cost

    Cost was a big factor in considering how we would orchestrate this system as many of the off-the-shelf alternatives were considered too expensive for us early on. Many alternatives are also billed per-employee which meant that, as our team grew the system would get even more expensive to maintain.

    Therefore, where possible, we would use free services, or serverless technology which would allow us to minimize costs.

  5. Usability

    As our team grows, new members will have to be introduced to this system, maintain it and perhaps upgrade it. We therefore want to use technology that should be familiar to our team and that they might be using elsewhere on other projects.

Project files are available to download from our repo here, and you can see the first in this tutorial series here.