Monthly market salary benchmark for People Ops
Refresh a Google Sheet of market salaries on the first of every month and ping People Ops in Slack about roles that moved more than 5%.
Build a deterministic code workflow that keeps a People Ops compensation benchmark spreadsheet fresh every month without anyone touching it.
Trigger: cron, on the first day of every month at 6:00am in the workspace's local timezone.
Step 1. Read the role list from Google Sheets using Get Values. The spreadsheet has a tab named config with columns: job_title, location, years_of_experience (optional, one of ALL, LESS_THAN_ONE, ONE_TO_THREE, FOUR_TO_SIX, SEVEN_TO_NINE, TEN_TO_FOURTEEN, FIFTEEN_OR_MORE). Read the full data range, skip the header row, and turn it into an array of role objects.
Step 2. Loop over each role and call Real-Time Glassdoor Data Salary Estimation with the job_title, location, and years_of_experience from that row (default years_of_experience to ALL when the cell is blank). Capture market low, median, and high from the response. If the call returns a transient 503, retry once after a 2 second wait. If it still fails, skip that row and record the error to log so the rest of the sweep continues.
Step 3. Append one row per role to a tab named history using Google Sheets Append Values, with columns: date (today's ISO date), job_title, location, experience, low, median, high. One Append Values call per role is fine, or batch them into a single append if cleaner.
Step 4. Compute month-over-month median change. For each role in this run, look up the previous snapshot for the same job_title plus location plus experience combination from the history tab (the most recent row before today's date) and compute the percent change in median. If there is no prior snapshot, mark this run as the baseline.
Step 5. Build a Slack message and send it to the People Ops channel using Slack Send a Message. The message should list only the roles where the absolute median change exceeded 5 percent, formatted as one line per role: job title, location, old median, new median, percent change with an up or down arrow. If no roles crossed the threshold, send a short confirmation that the monthly sweep ran and nothing moved by more than 5 percent. If this was the baseline run, say so explicitly.
Every step maps to a known node with structured inputs. There is no model judgement in the loop, so build this as a code workflow, not an agent.
Additional information
What does this prompt do?
- Runs automatically on the first of every month at 6am so your comp data is always current without anyone remembering to refresh it.
- Reads your list of tracked roles from a Google Sheet config tab, then pulls fresh market low, median, and high salary numbers for each one.
- Appends one timestamped row per role to a history tab so you build a clean monthly time series for trend analysis and board reporting.
- Compares this month's median to last month's and posts a focused Slack alert in People Ops, listing only the roles where pay moved more than 5% in either direction.
What do I need to use this?
- A Google account with edit access to the spreadsheet you want to use as your benchmark tracker.
- A Slack workspace and a channel where the People Ops team wants the monthly summary posted.
- A Real-Time Glassdoor Data account (free tier works for small role lists) so the workflow can fetch market salary estimates.
How can I customize it?
- Add or remove rows in the config tab to change which roles you track, including the location and experience level for each one.
- Change the alert threshold from 5% to whatever movement actually matters to your team, or split it into separate up and down thresholds.
- Swap the Slack channel, switch to a People Ops direct message, or change the cadence to quarterly if monthly feels like too much.
Frequently asked questions
What does the Google Sheet need to look like before I run this?
Do I need a paid Glassdoor or Ravio subscription?
What happens the very first month, when there's nothing to compare against?
Can I track roles across multiple offices or countries?
What if no roles moved by more than 5% this month?
Stop rebuilding your comp benchmark spreadsheet by hand.
Connect Google Sheets, Slack, and Glassdoor once. Geni refreshes your market salary tracker every month and flags the roles that actually moved.