Welcome new BambooHR hires with an AI video in Slack

By General Input

Every weekday at 8am, draft a personalized 30 to 45 second AI avatar intro for anyone who started in the last day and post it to your company Slack.

Integrations

  • BambooHR
  • HeyGen
  • Slack Bot

Type

Agentic Task

Categories

  • HR & People

Build me an agent workflow that runs on a cron every weekday at 8am in our company timezone and welcomes any brand-new hires from BambooHR with a personalized AI video posted in Slack.

How each run should work:

1. Find the new hires. Call BambooHR Get Changed Employees with a "since" timestamp set to the previous business day (so Monday's run covers Friday afternoon, the weekend, and any overnight changes). Filter the changed list down to employees whose hireDate (start date) falls within the past 24 hours and is on or before today. If there are zero matches, exit cleanly with a one-line summary.

2. Hydrate each match. For each candidate employee ID, call BambooHR Get Employee asking for at least: firstName, lastName, preferredName, jobTitle, department, hireDate, supervisor (manager name), and workEmail. Use preferredName if present, otherwise firstName.

3. De-dupe against past runs. Keep a small "already greeted" set keyed by BambooHR employee ID (use workflow state / a key-value store). Skip anyone already in the set. Add IDs to the set only after we successfully post their Slack message, so a partial failure can be retried on the next run.

4. Draft a 30 to 45 second welcome script per new hire. Warm, human, one paragraph. It should name the hire (preferred name), say what role they are joining as, what team / department, and who their manager is. If department or manager is missing, gracefully drop that clause instead of saying "undefined" or leaving a placeholder. Open with a configurable company-specific opener (default: "Hey {company}, please give a huge welcome to {name}!").

5. Generate the video with HeyGen. Call HeyGen Generate Avatar Video with the script, a configurable avatar_id and voice_id (let the user pick during setup; default to a friendly stock avatar). Capture the returned video_id.

6. Poll HeyGen Retrieve Video Status / Details every 8 seconds until status is "completed" or "failed", with a hard ceiling of 4 minutes per video. On "completed", call HeyGen Retrieve Shareable Video URL to get a public share link (https://app.heygen.com/share/...). On "failed" or timeout, log the error, skip the Slack post for that hire, and do NOT mark them as greeted (so the next run retries).

7. Post to Slack with Slack Bot Send a Message. Configurable channel, default #welcome. One message per hire that:

  • Pings the new hire by name (use their Slack user if you can find them by email via the bot's user lookup; otherwise just use the plain name).

  • Gives a one line bio: role + team + start date + manager.

  • Embeds the HeyGen share link on its own line so Slack unfurls it and the video plays inline.

8. Same-run posting is important. HeyGen share URLs expire after about 7 days, so the Slack post MUST happen in the same run as the render. Do not split the render and the post across two workflows or persist the URL for later.

Configurable inputs the user should set when installing the workflow:

  • Slack channel (default: #welcome).

  • Company name + one line tone hint for the script opener.

  • HeyGen avatar_id and voice_id.

  • Lookback window in hours (default: 24, but Monday runs should auto-extend to cover the weekend).

  • Timezone for the 8am cron (default: America/New_York).

Edge cases to handle gracefully: BambooHR returns 503 (throttling) — respect Retry-After and back off; HeyGen returns 429 — wait and retry once; new hire has no Slack account yet — still post the intro with their name plain-text; BambooHR record missing supervisor / department — drop that clause from the script, do not abort.

Output at the end of each run: a short summary log listing how many new hires were greeted, how many were skipped as already-greeted, and any render or post failures.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them