Client account review dashboard for Bullhorn QBR prep

By General Input

Pick a client and get one screen with open jobs, recent placements, contractors on site, and contact activity, ready for your next review call.

Integrations

  • Bullhorn
  • Gmail
  • Google Sheets

Type

App

Categories

  • Sales
  • Operations

Build me a client account review dashboard my account managers open before a quarterly business review or a client check in call, so they stop rebuilding the same spreadsheet by hand every time. It reads everything from Bullhorn, and it is account facing rather than recruiter facing: one client company, one screen, everything the manager needs to walk into the meeting.

The landing view is a client picker. Load the client companies from Bullhorn with Search Entities against ClientCorporation and show them in a searchable list with name and, where available, status and owner. Typing filters the list. Picking a company opens the account screen for that client, and the app should remember the last client each user viewed so reopening the app lands them back where they were.

The account screen has a header strip of headline numbers for that client: open job orders, placements in the last 12 months, contractors currently on assignment, fill rate, and average time to fill. Fill rate is the share of job orders opened for that client in the last 12 months that ended in at least one placement. Average time to fill is the average number of days between a job order being added and the placement start date, over placements in the same 12 month window. Show the raw counts next to each percentage so the manager can defend the number in the room.

Below the header, four sections. Open job orders: title, location, owner, date opened, days open, and the number of job submissions attached, sorted by days open descending. Placements in the last 12 months: candidate name, job title, start date, end date if set, and the recruiter. Contractors currently on site: placements whose start date has passed and whose end date is either empty or in the future, showing candidate, role, start date and end date. Client contacts: name, title, email, phone, and the date of the last logged activity on that contact, sorted so the quietest contacts sit at the top.

Flag the risk cases visually rather than burying them in a column. If no contact at the account has logged activity in the last 30 days, show a clear warning banner at the top of the account screen naming the number of days since the last touch. In the contacts table, mark any contact with no logged activity in 30 days. In the open job orders table, mark any job order open more than 45 days with fewer than three submissions, and surface a count of those stalled roles in the header strip. Use a consistent visual language for the flags so a manager scanning the screen sees the problems in a couple of seconds.

All reads go through Bullhorn Search Entities against ClientCorporation, ClientContact, JobOrder, JobSubmission and Placement, using Lucene queries scoped to the selected client company id. Every read needs an explicit fields parameter, and nested selection where a related record matters, for example fields=id,title,dateAdded,clientCorporation(id,name) on JobOrder and fields=id,candidate(id,firstName,lastName),jobOrder(id,title),dateBegin,dateEnd on Placement. Call Authenticate and Get Session once per handler run and reuse the returned session for every subsequent call in that run, because the session cannot be re-established mid run. Search results page with start and count, and count is capped at 500, so a busy account needs paging until the total is consumed. Bullhorn timestamps are epoch milliseconds, so convert before doing any of the 30 day, 45 day, or 12 month comparisons and before displaying dates.

A Prepare review button on the account screen drafts a short written account summary for the selected client. It should cover what we filled over the period, what is still open and how long it has been open, where the account stalled with the specific roles and reasons visible in the data, the state of the relationship based on contact activity, and three to five suggested talking points for the call. Keep it tight enough to read on the way into a meeting, and ground every claim in the numbers already on screen. Show the draft in a panel where the manager can edit it before doing anything with it.

From that panel, a send action delivers the summary by email using the Gmail Send a Message operation. The manager picks the recipient: themselves, a colleague, or one of the client contacts already loaded on the screen, with the contact email prefilled from the contact record. Let them edit the subject line, and default it to the client name plus account review and the date. Nothing sends without an explicit confirmation.

An Export button appends that account's numbers to a Google Sheets review tracker using the Append Values operation. One row per export, with the date, client name, open job orders, stalled job orders, placements in the last 12 months, contractors on site, fill rate, average time to fill, and days since last client contact. Let the user set the spreadsheet and tab once and remember it per user, so subsequent exports go to the same tracker without re-picking it, and confirm in the interface which sheet the row landed in.

Everything on the screen should be readable at a glance by someone who is not a recruiter, load fresh figures each time a client is selected, and offer a manual refresh. If a section has no records for the account, say so plainly rather than showing an empty table.

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 boardLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seatsBuild audience segments from product usage and push to Loops