greenhouse-watch — Your Board, Your Call
163 jobs on one Greenhouse board. Twenty-five weren't there yesterday. Seven match the résumé. greenhouse-watch ran once, wrote two files, and stopped.
163 jobs on one Greenhouse board. Twenty-five weren't there yesterday. Seven match the résumé. greenhouse-watch ran once, wrote two files, and stopped.
People expect a job search tool to behave like a recommender. greenhouse-watch is deliberately narrower: it shows what's new since the last check, filters by a documented scoring scheme, and hands the decision back to a human instead of making it.
The noise problem is real — a mid-size company's Greenhouse board typically runs 100 to 200 active postings at once, unsorted by date, with no built-in way to see what changed since yesterday. greenhouse-watch runs one stored script, not ad-hoc code, against a board slug, a résumé in JSON, and a state file — six steps in order every time: validate inputs, fetch once from an allow-listed host, diff by ID, apply the scoring scheme, write the report, stop. The fetcher only accepts four known Greenhouse hostnames and refuses redirects outright, because a silent redirect could pull data from somewhere it was never pointed at. The first run on any board is always a baseline — every ID gets recorded, nothing gets reported as new — so the second run is the one that actually shows a delta.
Matching runs on a JSON scoring scheme, not a black box: a title match scores 3.0, each skill hit in the title or body adds 1.0 up to a cap of eight, and every job that clears the threshold ships with a justification naming the exact résumé field and posting field that produced the score. In a live run against Airbnb's board: 163 jobs total, 25 new, 7 cleared the threshold, 18 were scored and skipped — and the report states plainly that greenhouse-watch reads the résumé and applies the scheme, but does not decide anything on the applicant's behalf. The default scheme has a known soft spot, too — one posting in China cleared the bar at 4.5 because location is treated as a soft penalty, not a hard filter, and the video names that limitation directly rather than hiding it.
Your Turn: Here's the prompt: "greenhouse watch [your company], using the persona résumé." Clone the repo, put in a slug, run the baseline. Run it again tomorrow. On the second run, the report shows only what actually changed. That delta is the signal — take this and run it on a board you actually care about.
Chapters
0:00 Introduction 0:23 The Noise Problem 0:48 The Pipeline 1:26 The Scheme 1:56 The Gate 2:35 Verdict 2:51 Your Turn
Extended timestamp index 0:00 — Introduction: 163 jobs, 25 new, 7 matches — what greenhouse-watch actually delivers 0:12 — Narrower than a recommender: shows what's new, filters by a documented scheme 0:23 — The Noise Problem: 100–200 active postings on a typical board, unsorted, no diff 0:36 — One stored script, not ad-hoc code: board slug, résumé JSON, state file, in 0:48 — The Pipeline: six steps in order — validate, fetch, diff, score, write, stop 1:00 — The fetcher: four allow-listed hostnames only, redirects refused outright 1:13 — The first run is always a baseline — nothing reported as new until day two 1:26 — The Scheme: title match scores 3.0, skill hits add up to a cap of eight 1:44 — Every relevant job ships with a justification naming the exact fields that scored it 1:56 — The Gate: the Airbnb run — 163 jobs, 25 new, 7 cleared, 18 skipped 2:08 — The report opens by naming who decides — greenhouse-watch applies the scheme, not the choice 2:20 — The scheme's known soft spot: location as a soft penalty, not a hard filter 2:35 — Verdict: greenhouse-watch is a diff, not a recommender — baseline today, delta tomorrow 2:51 — Your Turn: clone it, point it at your own board, and run the baseline
greenhouse-watch, Greenhouse job board API, job board diff tool, résumé matching script, job search automation, Greenhouse ATS scraping, AI job search tool, job scoring scheme, allow-listed API fetch, job board monitoring, Claude skill demo, transparent job matching, human-in-the-loop AI, job application automation, résumé JSON schema
What this video covers
- 0:00 — Introduction: 163 jobs, 25 new, 7 matches — what greenhouse-watch actually delivers
- 0:12 — Narrower than a recommender: shows what's new, filters by a documented scheme
- 0:23 — The Noise Problem: 100–200 active postings on a typical board, unsorted, no diff
- 0:36 — One stored script, not ad-hoc code: board slug, résumé JSON, state file, in
- 0:48 — The Pipeline: six steps in order — validate, fetch, diff, score, write, stop
- 1:00 — The fetcher: four allow-listed hostnames only, redirects refused outright
- 1:13 — The first run is always a baseline — nothing reported as new until day two
- 1:26 — The Scheme: title match scores 3.0, skill hits add up to a cap of eight
- 1:44 — Every relevant job ships with a justification naming the exact fields that scored it
- 1:56 — The Gate: the Airbnb run — 163 jobs, 25 new, 7 cleared, 18 skipped
- 2:08 — The report opens by naming who decides — greenhouse-watch applies the scheme, not the choice
- 2:20 — The scheme's known soft spot: location as a soft penalty, not a hard filter
- 2:35 — Verdict: greenhouse-watch is a diff, not a recommender — baseline today, delta tomorrow
- 2:51 — Your Turn: clone it, point it at your own board, and run the baseline
Transcript
A lightly formatted transcript of the video, with timestamps so you can jump to any section on YouTube.
Introduction: 163 jobs, 25 new, 7 matches — what greenhouse-watch actually delivers
[0:00] Hi Liam, there are 163 jobs on one Greenhouse board. 25 weren't there yesterday. Seven matched the resume. Greenhouse watch ran once, wrote two files and stopped. This is Liam in for Bear.
Narrower than a recommender: shows what's new, filters by a documented scheme
[0:12] People expect a recommender. What Greenhouse watch delivers is narrower. It shows what is new, filters by documented rules, hands the verdict back. That narrow scope is the design.
The Noise Problem: 100–200 active postings on a typical board, unsorted, no diff
[0:23] A mid-size company's Greenhouse board runs 100 to 200 active postings at any time. They're not sorted by date. There's no native filter for what appeared since last week. You either read all of them or you miss postings.
One stored script, not ad-hoc code: board slug, résumé JSON, state file, in
[0:36] The skill runs one stored script, not ad hoc code, pointed at a board slug, a resume JSON, a state file path, and an output directory. Run it. You get a markdown report and a JSON run record.
The Pipeline: six steps in order — validate, fetch, diff, score, write, stop
[0:48] Every run is six steps in order. Validate inputs, fetch once from an allow listed host, diff by ID, apply the scheme, write run record and report, update the state file. If any step fails, nothing after it runs.
The fetcher: four allow-listed hostnames only, redirects refused outright
[1:01] The fetcher accepts exactly four Greenhouse host names. It refuses redirects. A redirect could silently leave the allow list. One get, no retries. The raw response is saved to disk, so every verdict can be re-derived
The first run is always a baseline — nothing reported as new until day two
[1:13] Later. The first run is always a baseline. Every ID on the board is recorded. Nothing is reported as new. Run it again on day two. Now the diff tells you which ID weren't in the state file. That state file is the whole memory.
The Scheme: title match scores 3.0, skill hits add up to a cap of eight
[1:26] Matching is a JSON scheme file. Title match scores three, zero. Each skill hit in title or content adds one, zero, capped at eight. A degree abbreviation in the posting content adds zero, five. Location is soft by default, a miss subtracts one, zero, but is never a hard gate. Threshold is three, zero. Every
Every relevant job ships with a justification naming the exact fields that scored it
[1:44] Relevant job ships with a justification that names the resume field path and the posting field that produced each point. No model judgment. You can apply the scheme yourself by hand to check any verdict. In the Airbnb 163 jobs on the
The Gate: the Airbnb run — 163 jobs, 25 new, 7 cleared, 18 skipped
[1:58] Board, 25 new since the last check, seven cleared the threshold, 18 were skipped. The skipped jobs are listed in every report, not hidden, just tabled with their reason.
The report opens by naming who decides — greenhouse-watch applies the scheme, not the choice
[2:09] The report opens with a statement, not an invitation. It names who decides. Greenhouse Watch reads the resume, applies the scheme, presents the candidates. Which of these is worth a day of your life is yours.
The scheme's known soft spot: location as a soft penalty, not a hard filter
[2:20] The default scheme has a known soft spot. A posting in China cleared the bar at four. Five because location is a soft penalty, not a hard gate. The readme names this. If it bothers you, the fix is the scheme file, not the code. That distinction is the design.
Verdict: greenhouse-watch is a diff, not a recommender — baseline today, delta tomorrow
[2:35] Greenhouse Watch is not a recommender. It is a diff. Run it today, it baselines the board. Run it tomorrow, it shows exactly what changed and which of those changes match your resume on rules you can verify by hand. The decision is never made for you. Your turn. Here's the prompt. Greenhouse
Your Turn: clone it, point it at your own board, and run the baseline
[2:51] Watch your company using the persona resume. Clone the repo, put in a slug, run the baseline, and run it again tomorrow. On the second run, the report shows only what actually changed. That delta is the signal. Take this and run it on a board you actually care about. Lay 'em in for bear.





