Watch a job intent
watch_intentSave a standing job-search intent so new postings matching your skill, role, salary or location filters can be pulled later without searching again.
Instructions
Register a standing intent so new matches can be pulled later.
The caller supplies its OWN anonymous fingerprint (e.g. "#a3f9-k2p7-x8q1"; make it 12+
random characters, a four-character tag collides with strangers) — the client generates
and owns it; the server stores but can never recover it, so persist it client-side and
pass the identical one to check_watches. Only the fingerprint and non-PII filter keys
are stored — never a name, email, phone or résumé. Accepted filter keys mirror
search_jobs: skills (ANY-overlap), required_skills (ALL/AND — use this to keep
sales / solutions-architect roles out), remote (bool), role_family (e.g.
"engineering"), min_salary (int), company (one employer, resolved at registration),
location (substring of the location text, alias-aware like search_jobs: 广州 also
reaches 广东·天河区 rows, Beijing reaches 北京市, "remote" reaches 远程), title
(list of title substrings, ANY-of, synonym-expanded for HR terms like search_jobs —
the way to watch for recruiting or other roles no skill tag names).
Any other key is REFUSED (ERR_UNKNOWN_FILTER) rather than silently dropped, and a
role_family outside engineering | data | product | design | marketing | sales | ops |
other is refused too (ERR_UNKNOWN_ROLE_FAMILY).
min_salary keeps rows with NO stated pay (they cannot be ruled out); it only drops rows
whose stated pay is below the floor. Pay is stated mostly where law requires it (US
postings on Greenhouse/Lever/Ashby), so a watch that needs a number will lean US.
Returns { watch_id, status, fingerprint, existing_watches, fingerprint_notice }.
existing_watches > 0 means this fingerprint was already in use; if those watches are
not yours, pick a longer random fingerprint.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filters | Yes | ||
| fingerprint | Yes |