TimeOff Slack Bot
The open source project that gave me the confidence to build Susana
📅 October 2025
✅ COMPLETED
Before Susana existed, before I had any idea I'd try to build a SaaS product, there was a much simpler question:
"Can I actually build something useful with code?"
I'd been working in HR for years. I knew the problems. I understood what teams needed. But I'd never built anything real. The gap between "I have ideas" and "I can ship software" felt enormous.
So I started small. I built an open source Slack bot to manage vacation requests. No commercial ambitions, no business plan, no marketing strategy. Just me, TypeScript, and a problem I knew by heart.
That bot changed everything.
What is TimeOff Slack Bot?
A self-hosted Slack bot that handles the entire time-off workflow for a team: employees request days off, managers approve or reject with a button, and everyone can check their balance without leaving Slack.
It's free, open source, and anyone can deploy it for their own team in minutes. That was the whole point — make something genuinely useful and give it away.
Why Open Source?
Removing the pressure
I didn't want my first real project to carry the weight of "this needs to make money". I wanted to learn without pressure. Open source was the perfect frame: build something good, share it, and let the process teach you.
Proving it to myself
There's a specific kind of confidence that only comes from shipping something real. Not a tutorial project. Not a to-do app. Something that solves an actual problem for actual people. I needed that proof before I could take on anything bigger.
Giving back
Every small company manages vacations with Excel, Notion, or pure chaos. I lived that reality. If I could save other teams the same pain with a free tool, why not?
What I Built
The bot ended up being more complete than I initially planned:
1. Full request lifecycle
Employees open a modal in Slack, pick dates and type (vacation, sick, personal), and submit. Their manager gets a DM with Approve/Reject buttons. Done. No emails, no forms, no extra tools.
2. Smart validations
Balance checks, overlap detection, minimum advance notice, working days calculation, max consecutive days. All the rules I'd seen HR teams enforce manually — now automated.
3. Role-based access
Three tiers: users request, managers approve, admins manage everything. Simple, but it covers 90% of what companies under 100 people need.
4. Who's Out system
Every morning at 9 AM, the bot posts who's out today, who's coming back, and team capacity. It even updates Slack statuses automatically when someone's on leave. This feature alone made the bot worth building.
5. Dual backend
Google Sheets for teams that want zero infrastructure. PostgreSQL for teams that need scale. Same bot, same features, choose your backend.
The Technical Side
For those who care about the stack:
- TypeScript — strict mode, because I wanted to learn it properly
- Slack Bolt — the official Slack SDK
- Google Sheets API and PostgreSQL as interchangeable backends
- Docker ready — deploy anywhere
- ~3,400 lines of code across 24 files
The architecture decision I'm most proud of is the database abstraction layer. An IDatabase interface that both Google Sheets and PostgreSQL implement. This meant I could start simple (Sheets) and add the serious backend (Postgres) later without rewriting business logic.
It taught me something important: good abstractions aren't about being clever, they're about buying yourself future options.
What This Project Taught Me
As a builder:
- You don't need permission to build useful things
- Starting with a problem you personally have is the cheat code
- TypeScript with AI assistance is an incredibly productive combo
- Open source forces you to write clean code — other people will read it
As an HR person turned developer:
- Domain knowledge is a superpower. I didn't need to research the problem. I'd lived it for years
- The features that matter most aren't the flashiest ones — they're the ones that remove daily friction
- Automation isn't about replacing people, it's about giving them their time back
As someone building confidence:
- Shipping something real changes how you see yourself
- The jump from "I can't code" to "I built this" is smaller than it feels
- Once you ship one thing, you start seeing opportunities everywhere
From TimeOff Bot to Susana
This is the part of the story I didn't plan.
After building the bot and seeing it work, something clicked. I realized: if I can build this, I can build more. The open source bot handled vacations. But what about time tracking? What about Spanish labor law compliance? What about companies that need a real product, not a DIY bot?
That's how Susana was born.
TimeOff Slack Bot was the proof of concept. The training ground. The project that turned "maybe I could build a product" into "I'm going to build a product." Without this step, I don't think I would have had the confidence — or the technical foundation — to attempt a commercial SaaS.
The open source bot is the roots. Susana is the tree.
The Current State
The bot is stable, documented, and ready for anyone to use. It's MIT licensed because I genuinely want people to deploy it, modify it, and make it their own.
If your team uses Slack and manages vacations with spreadsheets, this bot is for you. Clone it, set it up in 15 minutes, and stop losing time on something that should be automatic.