Free & Open Source

Personal AI
Job Finder

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.

Download for Free See how it works

Stop manually searching. Start getting results.

One click and the script handles the full pipeline — search, filter, deduplicate, and log.

🔍

Multi-keyword job search

Runs any number of search queries through Google Jobs via SerpAPI. Configure your own keywords in the Config tab — no code changes needed.

🏢

Direct ATS enrichment

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.

🎯

Smart relevance filtering

Filters out director/VP/principal roles and jobs requiring 4+ years of experience. Keeps only roles that match the title keywords you care about.

📋

Company watchlist

Pin specific companies you're targeting. The script always checks those boards regardless of whether they appeared in search results.

♻️

Deduplication built in

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.

API cooldown cache

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.

The pipeline, step by step

Every time you click "Run Job Search," here's exactly what happens under the hood.

1

Read your config

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()
2

Search Google Jobs via SerpAPI

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()
3

Freshness check

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 days
4

Merge watchlist + apply cooldown

Merges 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 cooldown
5

ATS enrichment (Greenhouse & Lever)

For 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()
6

Filter, deduplicate, and write to sheet

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()

What's actually powering this

Three free-tier-friendly APIs wired together with Google Apps Script. No servers, no hosting costs.

SerpAPI

Google Jobs search engine

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 API

ATS job board (no key needed)

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.

Lever API

ATS job board (no key needed)

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.

Google Apps Script

Runs inside your spreadsheet

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.

What you need to get started

Everything required is either free or something you already have.

Google Account Free You already have this. The script lives entirely in Google Sheets + Apps Script.
SerpAPI account Free tier Sign up at serpapi.com. Free plan includes 100 searches/month — more than enough for weekly runs. You'll grab your API key from the dashboard.
5 minutes to set up One time Create two tabs, paste the script, set one Script Property with your API key. That's it. Full walkthrough in the setup guide.

Get the script.
Free, forever.

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 Free

No email required. No paywall. Just the script.
Built by Griffin @ GriffGuidesAI

Built with AI by Griffin MaklanskyGriffGuidesAI