A few weeks ago, I shared a Slack app I built with my team. Within minutes, our head of engineering was reading the code. I did sweat a little bit.
As you know, I’m not an engineer. But in about 4 hours, Claude and I replaced the time-off part of a $100+/month bundled HR tool with something that can easily be a Slack message. Here’s how it went.
At Whimsical, we are a small team of software builders that for years have used a bloated HR tool to track our time off. To add your vacation or sick leave, you have to log in to separate software. From an employee POV, that feels excessive for such a trivial task. From an operations standpoint, it’s necessary as it calculates vacation accruals and shows everyone who's off when.
Sure, there are lighter options, like Slack plugins that charge tens of dollars a month. But Claude has helped me with so much lately that I wondered how far I could vibecode this myself.
It turns out, pretty far. I built a Slack bot with a simple backend to do this one job.
Some context for my fellow ops people:
-
Team size: under 20
-
Old tool: Bundled into a comprehensive HR product, over $100/month
-
Slack plugin alternatives: $20ish/month
-
What this costs to run: $0 extra. It lives in the Google Workspace we already pay for.
-
Build time: 4 hours When I started thinking about this, I just wanted to create a simple way to log our time off. It had a few characteristics:
- I wanted it to live in our existing tool stack (e.g. Slack)
- I wanted it to have Google Calendar integration to have a shared calendar with the entire team
- I wanted it to be easy to maintain
That’s what I told Claude. After a lot of prompting back and forth, we landed on a simple setup using Google Sheets, Apps Script and Google Calendar. You will see my exact brief at the end of this newsletter.
This is the most important bit: figure out the ideal user experience first, then prompt for how to build it.
Type /timeoff anywhere in Slack. A popup appears where you enter the desired length of time off and add notes.
About a minute later the Slack bot DMs you a confirmation. The booking lands in a Google Sheet, and also on a shared team calendar so everyone can see it.
1: The spreadsheet is the source of truth
Everything lives in one Google Sheet: a Time Off Log (one row per request), Employees, Balances, a Team View and a tab for public holidays. This is the source of truth. If Slack breaks, people can still add a row directly to the sheet. If the calendar breaks, it rebuilds itself from the sheet.
2: Apps Script is the backend
Two script files live inside the sheet (Extensions → Apps Script). Apps Script is Google's built-in scripting tool. It lets you write small programs that run inside Sheets, Calendar and the rest of Google Workspace, with no servers to set up.
3: The calendar is read-only
It’s just a utility view, for sharing purposes with the team, nothing to edit here.
What didn’t go smoothly
It works really well for small teams, probably workable for teams under 50. It does have its quirks. Like, Slack expects a reply within 3 seconds, and Apps Script is not that fast. So bookings go into a queue, and it processes once a minute. Also, Slack sometimes shows a “trouble connecting” error even though everything worked, so you need to run the command twice. It’s not perfect.
The best thing about it #
There’s a lot of talk that SaaS is doomed because everyone will vibecode their own tools. I don’t see it that way. People are too used to the convenience of out-of-the-box software and its deep integrations with the rest of the enterprise stack.
I think the best thing about building simplified single-purpose tools like this is the mindset shift. It moves me from pre-AI thinking to a new way of building things.
Also, the team is pretty happy using it so far, so that's a win.
Finally, here is the brief I used. I’m not sharing a copy-paste prompt. Your team, your tools and your problems are very different from mine, and a prompt built for my setup will not be useful. But the brief I wrote before prompting is the part that made this work. Here it is. Fill it in for your own tool, then hand it to Claude.
1. The problem: What is annoying, and who feels it?Mine: logging time off means opening a separate tool for a 10-second task.
2. The ideal experience, step by step: What does the user type, click and see?Mine: type /timeoff in Slack, fill in a short form, get a confirmation DM, see it on the team calendar.
3. Where it lives: Which tools does your team already open every day?Mine: Slack and Google Calendar.
4. The source of truth: If everything else breaks, where does the data live?Mine: one Google Sheet. If Slack breaks, people add a row by hand.
5. What it won’t do: What are you deliberately leaving out?Mine: payroll sync
Only once this was clear did I start building, so the brief is worth spending real time on. And yes, there are GitHub repos you could clone, they help. But you’ll get further going end to end once on your own, and then you’ll know which shortcuts are worth taking.
Happy building & stay optimistic,
Diana