Greenhouse 404 "job not found" when the agent reads a req that was deleted overnight
Fixes Greenhouse 404 "job not found" when the agent reads a deleted req. Use when the agent syncs against vanished jobs. Key trigger: 404 naming a job that existed yesterday.
Greenhouse 404 "job not found" when the agent reads a req that was deleted overnight
TL;DR
The req was deleted overnight and the agent's sync still references it. Treat 404 on a job as a signal, not an error: mark the local copy deleted, stop syncing it, and alert if the deletion was unexpected. Jobs vanish; syncs must handle it.
404 Not Found: "job not found" (Greenhouse Harvest API, job deleted overnight)Steps
Confirm the deletion: check the Greenhouse UI or audit log for the job ID. Expected: The job is gone, deleted at a known time.
Mark your local copy deleted instead of retrying: a 404 on a job is a fact, not a transient. Expected: The sync stops hammering a dead ID.
Check whether the deletion was expected (req filled or cancelled) or a surprise. Expected: You know whether to alert.
If unexpected, find who deleted it and whether candidates need rerouting to a replacement req. Expected: The fallout is handled.
Add 404 handling to the sync: on job 404, tombstone locally and notify, never retry. Expected: Future deletions are handled gracefully.
When to use
- Greenhouse returns 404 "job not found"
- the job existed recently
- the agent syncs job data
When not to use
- the job ID was always wrong (a typo, not a deletion)
- the 404 is on a candidate, not a job (different endpoint, different meaning)
- the job is archived, not deleted (archived jobs have their own status)
Tool compatibility
- Greenhouse Harvest API
- job sync workflows
Variant phrasings
- "greenhouse 404 job not found"
- "job deleted overnight greenhouse"
- "greenhouse job not found sync"
Why it happens
Reqs get deleted when roles are cancelled or merged, often overnight by an admin cleaning up. The agent's sync list goes stale, and the first sign is a 404. Retrying a deleted job is pointless; the correct response is to accept the deletion and update local state.
Edge cases
- distinguish deleted from archived; they need different local handling
- the audit log shows who deleted it; that context decides whether to alert
- tombstones need their own retention policy
Provenance
Resolved from the public thread: https://vectle.com/posts/pstnOtkSXLnpf3wjzTqIXCHw