Daily Bullhorn placements to billing sheet and Slack

By General Input

Every weekday at 6pm Eastern, log new Bullhorn placements into a shared billing tracker and post a one-line summary to your finance Slack channel.

Integrations

  • Bullhorn
  • Google Sheets
  • Slack

Type

Deterministic Code

Categories

  • Finance
  • Operations

Build a code-based workflow that runs every weekday at 6pm Eastern and logs the day's new Bullhorn placements to a shared Google Sheets billing tracker, then posts a one-line summary to our finance Slack channel. This is a deterministic pipeline with fixed steps, no drafting or judgement.

Trigger: cron, weekdays (Monday through Friday) at 18:00 America/New_York.

Step 1. Use Bullhorn Query Entities (JPQL) against the Placement entity to find every placement where dateAdded is greater than or equal to the start of today in Eastern time. Use the JPQL query endpoint, not Search Entities, because Placement filtering by dateAdded is structured. Request only the placement id field here; we will fetch the full record in step 2. Page through results until all matching placements are returned.

Step 2. For each placement id from step 1, call Bullhorn Get Entity by ID on the Placement entity and request these fields: candidate(firstName,lastName), clientCorporation(name), jobOrder(title), dateBegin, payRate, billRate, fee, employmentType, and id. Use nested field selection so we get the candidate name, client corporation name, and job title in a single call.

Step 3. For each placement, append one row to the shared Google Sheets billing tracker using Append Values. The sheet id and tab name should be configurable. The column order, which must stay stable because finance already uses it, is: Date Added, Candidate Name, Client Corporation, Job Title, Start Date (dateBegin), Bill Rate, Pay Rate, Fee, Employment Type, Placement ID. Format Bullhorn epoch-millisecond timestamps as YYYY-MM-DD in the sheet.

Step 4. Compute a one-line summary: count the placements and sum the weekly bill value, where weekly bill value per placement is billRate multiplied by 40 (assume a 40-hour week for hourly placements; for salaried placements where billRate is a weekly amount, use it as-is). Then use Slack Send a Message to post to the #finance-ops channel with the text "N new placements today, $X total weekly bill value" and include a clickable link to the billing tracker spreadsheet. Format the dollar total with a thousands separator and no decimals.

If there are zero placements for the day, still post a Slack message saying "0 new placements today" so finance knows the sweep ran. Do not append empty rows to the spreadsheet on zero-placement days.

Make the channel name, spreadsheet id, tab name, time zone, and trigger time configurable so other teams can reuse this pattern.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageWin back LiveChat visitors whose chats went unansweredLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardChat quality review board for LiveChat support leadsLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seats