Tracks new AI jobs.
HirePing is a small Val Town app that watches:
On each run it:
src/cron.ts: main app flow, diffing, logging, and email sendingsrc/anthropic/source.ts: Anthropic source backed by Greenhouse's public APIsrc/openai/source.ts: OpenAI source backed by Ashby's public APIsrc/db.ts: SQLite schema and writessrc/jobs.ts: shared job type and snapshot helperssrc/test/app_test.ts: local end-to-end app testCurrent lightweight snapshot of active jobs.
url - primary keysourcelast_seen_atThis table no longer stores full payload blobs.
Full payloads for newly discovered jobs only.
url - primary keysourceraw_jsoncaptured_atJobs that disappeared from the latest snapshot.
url - primary keysourcearchived_atThe full payload still lives in job_payloads (keyed by url), so it can be looked up there.
One row per job URL tracking when it was first and most recently seen.
url - primary keyfirst_seen_at - set on insert, never updatedlast_seen_at - bumped on every run the job appears inWhen there are changes, HirePing sends an email with:
The subject lists the actual titles, only including the sections that have entries:
New: <title>; <title> · Archived: <title>New: <title>; <title>Archived: <title>https://boards-api.greenhouse.io/v1/boards/anthropic/jobs?content=truehttps://openai.com/careers/search/jobs is intentionally small so snapshot syncs stay cheapnewJobs, and those writes are batched in groups of 10Local verification:
deno task check deno test -A src/test/app_test.ts