All work
BotsService company, 25 employees2026

Time-off and shift tracking bot

Leave requests kept getting lost in chats. The bot drives them from submission to approval, syncs to a spreadsheet and blocks overlapping absences.

Outcome

  • Managers approve a request in two taps from their phone
  • Overlapping leave is caught automatically, not after the fact
Role
Development + ongoing support
Time it took
1 week

The problem

Leave requests lived in work chats. Some people messaged the manager directly, some posted in the group, some just said it out loud. The outcome was predictable: requests got lost, and overlaps surfaced only when two people failed to show up on the same day.

What I built

The bot carries a request through the whole path: submission, approval, and a row in the spreadsheet. The manager gets a message with two buttons and approves it from their phone.

The real feature is the overlap check

The bot looks at already approved leave and warns the manager BEFORE approval that someone else is already off on those dates. That is exactly why requests used to go wrong: the decision was made without the full picture, because the full picture lived in somebody's head.

Request states

Every request has an explicit state: submitted, approved, rejected, cancelled. Approved leave can be cancelled too, which returns the days and updates the spreadsheet. Without that, the first change of plans knocks the whole record out of sync with reality.

Stack

  • Python
  • aiogram 3
  • Google Sheets API

Got a similar task?

Describe it in two sentences. I'll tell you if it can be automated and roughly what it costs.