Offer desk that prices one role against the live market

Open one screen per requisition to see market pay, peer employer rates and live posted ranges next to your own band before you name a number.

App
JSearchGoogle SheetsGoogle DocsHR & PeopleOperationsResearch & MonitoringContent Generation
PromptCreate

I am a recruiter, and every time I am about to put a number in front of a candidate I rebuild the same compensation research by hand. Build me an offer desk app that I open per requisition, so that one screen holds everything I need to justify a number in the moment before the offer goes out. This is not a report that runs on a schedule and it is not about our existing employees or payroll. It is an on demand surface for one open role and one hiring decision.

At the top of the screen I set up the requisition: a job title, a location, an optional requisition name or ID, and a short list of peer employers I want to benchmark against, typically the three or four companies we lose candidates to. Let me edit that peer list inline. Save each requisition setup in the app so that when I reopen it the title, location and peer list come back, and give me a simple list of my saved requisitions to pick from. Loading a requisition refreshes all the market data.

The core of the screen is three market views side by side. First, the market range for the title and location from the JSearch Estimate Salary operation, showing the low, median and high figures so I can see the spread rather than a single average. Second, a peer employer panel that calls JSearch Get Company Job Salary once per employer on my peer list, for that same job title and location, so I see named companies and what each of them pays rather than an anonymous blend. Third, a live postings panel using JSearch Search Jobs to pull what competitors are advertising for that title right now, listing each posting with its employer, the posted range where one exists, and a link to the ad. That third panel matters to me because posted ranges are what candidates are actually seeing, not survey averages, so show me the individual postings and not just a rolled up number.

Against those three views, show our own band for the role. Read it from the compensation band tab of a Google Sheet using the Google Sheets Get Values operation. The tab has a row per role with a band minimum, midpoint and maximum, so match the row on job title and pull those three figures. Let me point the app at my spreadsheet, tab name and range in a settings screen. Then do the comparison that I actually care about: work out where our midpoint sits as a percentile of the market range, and flag it loudly and unmistakably when our midpoint falls below the market median. That is the case where an offer is about to get declined, so it should be impossible to miss on the screen, not a subtle colour change. Show the size of the gap in both money and percentage terms, and if a role has no matching row in the band tab, say so plainly rather than silently showing nothing.

Give me a "Build the offer case" button that kicks off a background agent. The agent writes a one page justification aimed at the hiring manager and finance, and it should lay out the recommended number, where that number sits against market percentile and against our internal band, the peer employer comparison with the named companies, the live posted ranges we found, and the risk of coming in low, including what happens to time to fill and decline rates if we anchor under the market median. It creates the document with the Google Docs Create Document operation and then fills it in with Batch Update Document, using real headings and a comparison table rather than one wall of text. When the agent finishes, show the document link in the app next to that requisition so I can open or share it, and show the run status while it is working so I know it is in progress.

When I commit to a number, let me enter the figure I am going out with and an optional note on why, then append the decision back to the Sheet with the Google Sheets Append Values operation, onto a decision log tab. The row should carry the supporting market evidence as it stood at that moment, not just the number: the date, the requisition and job title, the location, the number I committed to, our band minimum, midpoint and maximum, the market low, median and high, the peer employer figures, how many live postings we found and how many of them published a range, the percentile our offer lands at, and the link to the justification document. The point is a running record of what we offered and what the market said at the time, so that six months from now I can see whether we were pricing correctly.

A few details to get right. Normalise pay periods before comparing anything, since the job data returns hourly, monthly and yearly figures and I need everything on an annual basis to line up against our band. When searching live postings, the location has to be included inline in the search query text because that search has no separate location field. Many postings publish no salary at all, so only compute the posted range from listings that actually have one, and always show me the count of postings found alongside the count that included a range, so I can judge how much to trust it. Handle a peer employer with no data for that title gracefully by marking it as no data rather than dropping it from the panel or showing a zero. Show every figure with its currency, and make the whole screen readable at a glance, because I open this with a hiring manager waiting on the other end of a call.

What does this prompt do?

  • Pick a job title and a location and see three views of pay side by side: the overall market range, what named competitor employers pay for that same title, and the ranges competitors are advertising in their live job ads right now.
  • Reads your own salary band for the role from the compensation band tab of your Google Sheet and puts it directly against the market, with a loud warning when your midpoint sits below the market median.
  • One button sends a background agent off to write a one page offer justification into Google Docs for the hiring manager and finance, covering the recommended number, where it lands against market percentile and your internal band, the peer comparison, and the risk of coming in low.
  • When you commit to a number, the decision and the market evidence behind it are appended to your sheet, so you build a running record of what you offered and what the market said at the time.

What do I need to use this?

  • A JSearch account for live job listings and pay data, which is what supplies the market numbers
  • A Google account with access to the spreadsheet that holds your salary bands, and permission to create Google Docs
  • A tab in that spreadsheet listing each role with its band minimum, midpoint and maximum
  • The names of the peer employers you benchmark against, for example the three or four companies you lose candidates to

How can I customize it?

  • Change the alert rule, for example warn when your midpoint falls below the 60th percentile instead of the median, or warn on any gap larger than five percent.
  • Keep a standing list of competitor employers that applies to every role, or set a different peer list per requisition.
  • Adjust what the justification document covers and who it is written for, and point the decision log at a different spreadsheet or tab.

FAQs

Do I need a paid compensation survey to use this?
No. The pay figures come from live job market data rather than an annual survey, so you are looking at what employers are advertising and paying now instead of numbers gathered months ago.
What happens when job postings do not list a salary?
Plenty of postings hide pay. The app only counts postings that actually show a range, and it tells you how many of the listings it found included one, so you know whether the posted range is based on twelve ads or two.
Will this overwrite the salary bands in my spreadsheet?
No. Your band tab is only ever read. The only thing written back is a new row on the decision log each time you commit to a number, so nothing you already have in the sheet is changed.
Does it work for hourly roles as well as salaried ones?
Yes. Hourly and monthly figures are converted to an annual equivalent before anything is compared, so an hourly market rate and a salaried internal band line up on the same scale.
Can I use it for roles outside the United States?
Yes, the job data covers many countries, though depth varies by market. In thinner markets you will see fewer live postings with published ranges, and the app shows you that count so you can judge how much weight to give it.

Related templates

See which Kajabi offers actually made money this period

Pick any date range and see gross revenue, orders, refunds, and average order value for every Kajabi offer, then drill into the exact sales behind each number.

Kajabi
Google Sheets
App
Turn any influencer campaign into a client-ready report

Open any campaign, pick this month versus last, and have a written client report drafted into Google Docs and posted to their Slack channel.

Later
Google Docs
Slack Bot
App
A weekly Keap cleanup desk for duplicate contacts and tag sprawl

See duplicate Keap contacts side by side with their orders and tags in view, merge the right record on purpose, and retire the tags nobody uses.

Keap
Google Sheets
App
Klaviyo list health and sunset workbench for deliverability

Clean your email list from one screen: see every audience, review who is in it, and suppress unengaged people in batches a human approves first.

Klaviyo
Google Sheets
App
WhatsApp broadcast console for planning and launching campaigns

Compare every WhatsApp campaign side by side, launch a new one from a spreadsheet audience, and stop a bad send in one click.

Kapso
Google Sheets
App
Daily buying signal desk your SDRs work like an inbox

Every morning your reps open one queue of people publicly asking for alternatives, complaining about a renewal, or shopping your category.

Infegy
HubSpot
Google Sheets
+1
App

Stop rebuilding the same comp research before every offer.

Open one screen per requisition, see exactly where your number sits against the market, and keep a record of every offer you made and why.