A vibe-coded Google Apps Script that searches jobs via SerpAPI, pulls directly from company ATS boards, filters noise, and drops only the relevant roles into your spreadsheet — automatically.
One click and the script handles the full pipeline — search, filter, deduplicate, and log.
Runs any number of search queries through Google Jobs via SerpAPI. Configure your own keywords in the Config tab — no code changes needed.
Detects when companies use Greenhouse or Lever, then hits their job boards directly — not just what shows up in Google. You see every open role, not just the indexed ones.
Filters out director/VP/principal roles and jobs requiring 4+ years of experience. Keeps only roles that match the title keywords you care about.
Pin specific companies you're targeting. The script always checks those boards regardless of whether they appeared in search results.
Checks every new result against your existing sheet rows. You'll never see the same job twice, no matter how many times you run it.
Tracks which companies were checked recently and skips ones with no results for 7 days — saving your SerpAPI quota for searches that actually find something.
Every time you click "Run Job Search," here's exactly what happens under the hood.
The script reads your keywords, location, watchlist companies, and slug cache from the Config tab. No hardcoded values — everything is driven by what's in your sheet.
readConfig()Each keyword + location combo hits SerpAPI's Google Jobs engine. Returns up to 10 results per query with company name, title, apply link, and posting date. It also extracts Greenhouse and Lever ATS slugs from apply URLs.
searchSerpAPI()Filters out any company whose most recent posting is older than 30 days. If a company isn't actively hiring, it gets dropped from enrichment to save API calls.
cutoff = 30 daysMerges the detected companies with your pinned watchlist. Then applies a 7-day cooldown: if a company was checked recently and returned 0 results, it's skipped this run.
slug cache cooldownFor up to 25 companies, the script calls their job board APIs directly — bypassing Google's index entirely. This surfaces roles that haven't been crawled yet or that companies only post to their own boards.
enrichGreenhouse() / enrichLever()All results pass through relevance and experience filters. Duplicates are removed (both within the batch and against existing rows). New jobs are prepended to the top of your Results tab so the freshest appear first.
appendJobs()Three free-tier-friendly APIs wired together with Google Apps Script. No servers, no hosting costs.
SerpAPI acts as a proxy to Google's search results — including the Google Jobs carousel. You get structured job data (title, company, salary, apply link) without scraping. Free tier: 100 searches/month.
Greenhouse's job board API is publicly accessible. Once the script identifies a company's Greenhouse slug from an apply URL, it can fetch every open role directly — no authentication required.
Same pattern as Greenhouse. Lever also exposes a public postings endpoint. The script detects lever.co URLs in SerpAPI results and uses the slug to pull every active listing.
Apps Script is Google's built-in scripting environment — no installs, no deployments, no servers. The script lives in your Google Sheet and runs on-demand from the custom "Job Search" menu.
Everything required is either free or something you already have.
The full Google Apps Script + step-by-step setup guide are in one Google Doc. Copy the script into any sheet and you're running in minutes.
Download for FreeNo email required. No paywall. Just the script.
Built by Griffin @ GriffGuidesAI
Built with AI by Griffin Maklansky — GriffGuidesAI