- Home
- Skills
- Data & Databases
- Jobstitch: free job sources merged into one clean feed
More screenshots
Works with the AI Agents you already use
Jobstitch: free job sources merged into one clean feed
Adapters for official job APIs and public ATS boards, with a terms card per source, cross-source dedupe, ghost job expiry, backoff and a health table that marks a dead source down instead of hiding it.
$15
Jobstitch: free job sources merged into one clean feed
Example session with this skill installed
Jobstitch: set up batch ingest from Greenhouse, Lever, Himalayas and Jobicy for our board, dedupe across them, and keep Careerjet as live search. Show me source health.
- Read your context and instructions
- Compiled the jobstitch
Registry updated: 5 terms cards (4 batch, 1 live). Example data from a test run.
Source health (source_runs, latest run)
| Source | Mode | Fetched | Valid | Rejected | Status |
|---|---|---|---|---|---|
| greenhouse | batch | 412 | 405 | 7 | ok |
| lever | batch | 238 | 231 | 7 | ok |
| himalayas | batch | 180 | 176 | 4 | ok |
| jobicy | batch | 150 | 150 | 0 | ok |
| careerjet | live | 0 | 0 | 0 | down: missing_env |
Feed
- Valid rows: 962. Cross-source collisions merged: 41, leaving 921 jobs. Direct ATS rows kept the apply URL.
- Expiry: 18 closed (missing from the Greenhouse or Lever snapshot), 3 flagged as reposts and down-ranked.
- Rejected 18 rows, mostly missing URL. No
postedAtdefaulted to now. - Second run: 0 new duplicates.
Alerts
- careerjet:
CAREERJET_API_KEYnot set, marked down. Search response returnssourceStatus: { careerjet: "down" }and the UI shows "1 source unavailable". No mock jobs served.
Next steps
- Add the Careerjet key and confirm the live search passes the real client IP and user agent.
- Show Himalayas and Jobicy attribution on job cards.
- Add retention for
source_runsin the scheduled job.
Connects securely to your tools. The creator never sees your data.
About this skill
A job feed built from several sources goes bad quietly. The same opening shows up three times, old postings rank as fresh because a missing date became "now", and a source that lost its API key returns nothing for weeks while the UI looks normal. Jobstitch pulls listings from free official APIs and public ATS boards into one normalized, deduped feed, with a health record per source so a dead source is marked down instead of hidden.
What it does
- Terms-first sources: Careerjet, Jooble, Greenhouse, Lever, Ashby, Himalayas, Jobicy and RemoteOK, each with a terms card (endpoint, checked date, attribution, link and cache rules). Portal scraping is excluded.
- One adapter contract: every source returns the same
NormalizedJobshape or a typed error such asmissing_envorrate_limited. - Honest normalization: unknown dates, salaries and currencies stay
null; ids come from the source, never random. - Cross-source dedupe: a key from company, title, country and city; the direct ATS row wins the apply URL.
- Ghost job expiry: hides expired, older than 30 days (tunable) and closed rows, and down-ranks reposts.
- Health and degraded mode: a
source_runstable, alerts on failure or a drop in valid rows, and "1 source unavailable" in the UI instead of mock jobs.
How it works
- Pick sources by licence; write each terms card in a
sources.tsregistry. - Build one adapter per source, then normalize and dedupe.
- Back off: timeouts,
Retry-After, backoff with jitter, max 3 tries. - Store and schedule: upsert with
source_urlandfetched_at; batch on cron, live per search. - Record health every run and degrade in the open.
Frameworks & tools
The official APIs above, with Supabase, Vercel cron and Next.js route handlers as defaults, not requirements.
Why this beats prompting it yourself
A quick prompt writes a scraper and a catch-all that returns demo data. This skill encodes per-source rules (Careerjet needs the real user IP and agent, Jooble's free key is 500 lifetime requests, Jobicy shows only 7 days so absence is not closure) and treats a missing key as an outage.
Use cases
- Job boards and aggregators merging free sources.
- Matching apps that need stored, dated job rows.
- Adding a new source with tests.
Known limitations
No scraping of job portals or social networks, no paid data feeds, and not for one-off research datasets. Source terms and endpoints change, so the registry dates must be re-checked when a source starts failing.
How to use
Skills on Agensi run inside your AI agent. Copy the prompt, paste it into your agent, and it connects to Agensi and installs this skill for you. If a payment is needed, your agent shows it to you first.
Reviews
No reviews yet
Be one of the first to try it. Every listed skill passes our trust checks below.
Security scanned
Passed our 8-point scan before listing
Fresh listing
Recently published to Agensi
Money-back guarantee
Doesn't do what its page promises? You get your money back.
Trust & safety
Security scanned
Verified clean 1 day ago
- Passed all security checks, Safe to install
Requires