Source Allies Logo

Sharing Our Passion for Technology

& Continuous Learning

<   Back to Blog

From Manual Checks to Automation: Building a Slack Bot for Time Entry Reminders

Multicolored post-it-notes arranged on a whiteboard at an angle

From Manual Checks to Automation: Building a Slack Bot for Time Entry Reminders

Every week, our accounting team braced for the same ritual: chasing missing hours, cross-checking spreadsheets, and pinging teammates on Slack.

Validating hours and PTO might seem simple, but even small manual tasks could take hours. ActiTIME tracks hours and BambooHR handles PTO and holidays, but because the two systems don’t automatically sync, the process can be tedious.

So we asked ourselves: Could we build a bot to turn hours of tedious detective work into an automated check?

From Detective Work to Data Sync

Our goal was simple: automate the basic timesheet checks and cut down on manual validations.

We wanted a system that would:

  1. Check each teammate’s actiTIME entries.
  2. Cross-reference PTO and holidays from BambooHR.
  3. Send a Slack DM if something doesn't look right.

In other words: less inbox anxiety, less manual cross-referencing, and more time to focus on meaningful work.

Building the Workflow

We used AWS serverless tools to stitch everything together, making the system modular, scalable, and easy to tweak:

This setup meant we could build a fully automated, reliable workflow without maintaining servers or manually kicking off jobs. Every week, it runs itself, keeping time entries aligned without anyone having to chase spreadsheets.

How It All Works Together

Here's the final workflow we ended with:

Diagram of AWS state machine workflow

Let’s break it down.

1. Fetch Teammates: The first Lambda pulls employee data from BambooHR (including Slack IDs).

2. Validate Timesheets: Next, we check actiTIME logs for the previous week and exclude PTO and holidays.

3. Check Failed Validations: If no anomalies were detected in the teammate’s time entries, the flow ends quietly. If not…

4. Send Slack Message: This Lambda sends a friendly reminder message. Example:

Message depicting a slack bot time entry reminder

Teammates can reply “I addressed it!” to trigger an instant recheck.

5. Manual Review (Teammate Services escalation): For true edge cases, like late PTO updates or weekend work, the bot posts to a private Teammate Services-only Slack channel. A real human reviews and resolves it.

6. Audit Summary: Finally, the system posts a Slack report for Teammate Services with how many teammates passed, fixed entries, or needed review.

  • ✅ How many teammates passed validation
  • ⚠️ How many teammates corrected their time
  • 🧾 How many went to manual review

Looking Ahead

We’re gathering feedback from Teammate Services and teammates, and it’s already shaping what comes next. A few ideas on the roadmap:

  • Smarter timing: delay alerts when the first workday of the week is a holiday, so reminders land when they’re actually helpful.
  • Pay-period awareness: adds special announcements at the end of each month, right before payroll.
  • A bit of fun: introduce a leaderboard for streaks, tracking how many weeks teammates go without needing a reminder.

These updates will help the bot handle more edge cases and make time tracking not just smoother, but in some ways, more enjoyable.

Automations That Help, Not Hound

The goal isn’t to replace HR’s judgment. It’s to give them better visibility. This tool doesn’t flag mistakes; it surfaces anomalies automatically, letting Teammate Services focus on resolving issues instead of tracking them down. Automation supports people, it doesn’t replace them.

Even a small system can have a big impact. Manual audits are gone, checks happen in real time, and Slack provides instant visibility for the team. By leaning on AWS and a few APIs, we built something reliable, scalable, and inexpensive that turns a recurring headache into a smooth, automated process.


Footnotes

  1. We chose noon so that by lunchtime, the first checks are already underway, and teammates with missing or mismatched entries start seeing friendly Slack nudges

  2. The Unified Graph is a federated GraphQL API that combines data from multiple internal services (BambooHR, actiTIME, Slack, Azure, GitHub) into a single endpoint, simplifying access to teammate and project information.