Daily birthday and work anniversary cards in Slack from BambooHR

Every weekday at 9am, pull today's birthdays and work anniversaries from BambooHR and post a personalized illustrated card to your celebrations channel.

Agentic Task
BambooHRGenerate ImageSlackHR & PeopleOperationsNotifications & AlertsContent Generation

Build an agent workflow that celebrates teammates' birthdays and work anniversaries every weekday at 9am ET. Use a cron trigger for the schedule.

Each run, call BambooHR's Request Custom Report with the fields firstName, lastName, preferredName, jobTitle, department, dateOfBirth, and hireDate to pull the full employee roster. Filter the results in the agent to employees whose dateOfBirth month and day match today (birthdays) or whose hireDate month and day match today (work anniversaries). For anniversaries, compute years of service from hireDate so the message can say 1-year, 3-year, 5-year, and so on. Prefer preferredName when it is set, otherwise use firstName.

For each match, draft a short, fresh, on-brand prompt that reflects the person's name, their department or job title, and the specific milestone (a birthday, or an N-year work anniversary). Then call Generate Image with that prompt at a 1:1 aspect ratio to produce a warm, illustrated celebration card. The image returns as base64 with a mimeType. Decode it and upload it to Slack using Slack's Upload a File operation, posting into the channel the user configures (default to a channel named #celebrations) with a short kickoff message such as "Today we're celebrating Jane's 3-year anniversary!" Post one Slack file per person. If multiple people share the same day, post a single kickoff message for the day and thread each person's card underneath it.

Before posting, de-duplicate against any celebrations the workflow already posted earlier today so nobody gets two cards. Skip anyone who appears on a configurable opt-out list (provided as a list of names). Vary the visual style across days (for example, watercolor on Monday, paper collage on Tuesday, retro poster on Wednesday, neon on Thursday, hand-drawn on Friday) so the cards never feel repetitive. If nobody is being celebrated today, finish the run without posting.

Expose these as workflow configuration: the Slack channel to post into, the opt-out list of names, an optional brand or tone description that the agent should fold into every prompt, and a toggle for whether to celebrate every anniversary or only milestone years (1, 3, 5, 10, 15, 20).

Additional information

What does this prompt do?
  • Checks BambooHR each morning for anyone whose birthday or hire date falls on today.
  • Writes a warm, on-brand prompt for each person that reflects their name, team, and the milestone they are hitting.
  • Generates a fresh illustrated celebration card for every match and posts it to your team's Slack channel.
  • Threads multiple celebrations under one kickoff post and skips anyone who has opted out.
What do I need to use this?
  • A BambooHR account with permission to run reports on employee names, departments, birthdays, and hire dates.
  • A Slack workspace and the channel where you want the cards to land, such as #celebrations.
  • A short list of any teammates who prefer to opt out of public shout-outs.
  • Optional: a sentence or two on your company's tone so the cards feel like you wrote them.
How can I customize it?
  • Change the schedule. Run it at 8am, only on Mondays, or skip company holidays.
  • Swap the channel. Post to #team-fun, route engineering anniversaries to #eng-celebrations, or DM each person's manager instead.
  • Tune the vibe. Tell the agent to lean playful, classy, retro, or to weave in your brand colors and mascot.
  • Adjust who is celebrated. Recognize every birthday but only milestone anniversaries (1, 3, 5, 10 years), or vice versa.

Frequently asked questions

Will the same person get celebrated twice if the workflow runs again the same day?
No. The agent checks earlier runs from today before posting, so each person gets one card per occasion.
Can I exclude teammates who don't want a public shout-out?
Yes. You give the agent a simple opt-out list of names, and it quietly skips them.
What happens when several people share the same day?
The agent posts one kickoff message for the day and threads each person's card underneath, so the channel stays tidy.
Do the cards always look the same?
No. The agent varies the visual style across days so the channel feels fresh instead of formulaic.
What if nobody has a birthday or anniversary today?
The workflow simply finishes without posting. Quiet days stay quiet.

Make every birthday and work anniversary feel personal.

Connect BambooHR and Slack once, and Geni handles the cards every weekday at 9am.