• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
u

u

hireping

Tracks new AI jobs.
Public
Like
hireping
Home
Code
8
src
5
.vtignore
README.md
anthropic-job-tracker-api.ts
C
anthropic-job-tracker-cron.ts
deno.json
deno.lock
logo.svg
Environment variables
Branches
1
Pull requests
Remixes
History
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
README.md
Code
/
README.md
Search
…
README.md

HirePing logo
HirePing

Tracks new AI jobs.

What It Does

HirePing is a small Val Town app that watches:

  • Anthropic jobs from Greenhouse's public Job Board API
  • OpenAI jobs from Ashby's public postings API

On each run it:

  • fetches the latest job listings
  • compares them to the current snapshot
  • detects new jobs and archived jobs
  • records job observations
  • stores full payloads only for newly discovered jobs
  • emails a summary when there are new or archived jobs

Project Structure

  • src/cron.ts: main app flow, diffing, logging, and email sending
  • src/anthropic/source.ts: Anthropic source backed by Greenhouse's public API
  • src/openai/source.ts: OpenAI source backed by Ashby's public API
  • src/db.ts: SQLite schema and writes
  • src/jobs.ts: shared job type and snapshot helpers
  • src/test/app_test.ts: local end-to-end app test

Current Data Model

jobs

Current lightweight snapshot of active jobs.

  • url - primary key
  • source
  • last_seen_at

This table no longer stores full payload blobs.

job_payloads

Full payloads for newly discovered jobs only.

  • url - primary key
  • source
  • raw_json
  • captured_at

archived_jobs

Jobs that disappeared from the latest snapshot.

  • url - primary key
  • source
  • archived_at

The full payload still lives in job_payloads (keyed by url), so it can be looked up there.

job_observations

One row per job URL tracking when it was first and most recently seen.

  • url - primary key
  • first_seen_at - set on insert, never updated
  • last_seen_at - bumped on every run the job appears in

Email Behavior

When there are changes, HirePing sends an email with:

  • new jobs
  • archived jobs

The subject lists the actual titles, only including the sections that have entries:

  • both: New: <title>; <title> · Archived: <title>
  • new only: New: <title>; <title>
  • archived only: Archived: <title>

Notes

  • Anthropic uses https://boards-api.greenhouse.io/v1/boards/anthropic/jobs?content=true
  • OpenAI uses Ashby's public posting API behind https://openai.com/careers/search/
  • jobs is intentionally small so snapshot syncs stay cheap
  • full payloads are only stored for newJobs, and those writes are batched in groups of 10
  • the app logs each major run step to make production failures easier to localize

Verification

Local verification:

deno task check deno test -A src/test/app_test.ts
FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
AboutAlternativesPricingBlogNewsletterCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2026 Val Town, Inc.