From 8828363bbae9fbf5919072b95c9c11c0833e590d Mon Sep 17 00:00:00 2001 From: ilia Date: Mon, 10 Aug 2026 18:07:46 -0400 Subject: [PATCH] feat: add JS Remotely (javascript.jobs) extractor Adds a pipeline extractor for javascript.jobs (the board now promoted under the jsremotely.com alias, which 301s straight here). No public API/RSS, so it scrapes the /remote listing (server-side keyword+page filtering) and enriches each match from the job detail page's JobPosting schema.org block, which is emitted as near-JSON (unescaped newlines, an occasional missing comma) and is parsed with targeted regexes instead of JSON.parse. Also guards against the source's own baseSalary bug (0 placeholders, and at least one posting with minValue == maxValue) by keeping the listing-card salary text as a trustworthy fallback. Wires the new "javascriptjobs" source through the shared extractor catalog, settings registry/types/factories, the max-coverage automatic-run preset, demo seed data, and the smoke-test target. --- extractors/javascriptjobs/README.md | 31 ++ extractors/javascriptjobs/manifest.ts | 333 ++++++++++++++++++ extractors/javascriptjobs/package.json | 17 + extractors/javascriptjobs/tsconfig.json | 17 + .../pages/orchestrator/automatic-run.ts | 2 + .../src/server/config/demo-defaults.data.ts | 1 + scripts/smoke-extractors.ts | 8 + shared/src/extractors/index.ts | 7 + shared/src/settings-registry.ts | 14 + shared/src/testing/factories.ts | 2 + shared/src/types/settings.ts | 2 + 11 files changed, 434 insertions(+) create mode 100644 extractors/javascriptjobs/README.md create mode 100644 extractors/javascriptjobs/manifest.ts create mode 100644 extractors/javascriptjobs/package.json create mode 100644 extractors/javascriptjobs/tsconfig.json diff --git a/extractors/javascriptjobs/README.md b/extractors/javascriptjobs/README.md new file mode 100644 index 00000000..6af90da5 --- /dev/null +++ b/extractors/javascriptjobs/README.md @@ -0,0 +1,31 @@ +# javascriptjobs-extractor + +Pulls remote listings from [javascript.jobs](https://javascript.jobs) (the +board formerly promoted under the `jsremotely.com` alias — that domain now +301s straight here). JS/TS-focused: React, Vue, Node, Angular, TypeScript. + +- No authentication, no public API/RSS — this is a server-rendered HTML + scrape of `/remote`, which supports a `keyword` query param for server-side + term filtering (`?keyword=react&page=2`), so pipeline search terms are + iterated as separate paginated fetches rather than filtered client-side. +- Listing cards give title/employer/job-type badge/salary text/logo. Detail + pages (`/job/`) additionally embed a `JobPosting` (schema.org) + `