Files
Jobber/extractors/wellfound/manifest.ts
T
ilia 84e6835b11
CI / skip-ci-check (push) Successful in 10s
CI / secret-scan (push) Successful in 14s
CI / docker-ci (push) Successful in 17s
feat: keyword sets, sponsorship signals, and extractor/profile fixes
Add per-profile keyword sets, job source settings, sponsorship signal pills,
and several ATS extractors. Fix Hiring Cafe discovery via Next.js SSR search,
profile activate for comma-separated basicAuthUser aliases, and resume path
backfill migrations. Update settings and hiring-cafe docs; localhost compose
overlay for loopback-only deploys.
2026-06-11 10:23:39 -04:00

50 lines
1.3 KiB
TypeScript

import type {
ExtractorManifest,
ExtractorRunResult,
} from "@shared/types/extractors";
import { runWellfound } from "./src/run.js";
export const manifest: ExtractorManifest = {
id: "wellfound",
displayName: "Wellfound",
providesSources: ["wellfound"],
async run(context): Promise<ExtractorRunResult> {
if (context.shouldCancel?.()) return { success: true, jobs: [] };
const parsedMax = context.settings.wellfoundMaxJobsPerTerm
? Number.parseInt(context.settings.wellfoundMaxJobsPerTerm, 10)
: Number.NaN;
const maxJobs = Number.isFinite(parsedMax) ? Math.max(1, parsedMax) : 50;
context.onProgress?.({
phase: "list",
termsProcessed: 0,
termsTotal: 1,
currentUrl: "https://wellfound.com/jobs",
detail: "Wellfound: launching browser scrape",
});
const result = await runWellfound({
searchTerms: context.searchTerms,
maxJobs,
});
if (!result.success) {
return { success: false, jobs: [], error: result.error };
}
context.onProgress?.({
phase: "list",
termsProcessed: 1,
termsTotal: 1,
currentUrl: "https://wellfound.com/jobs",
jobPagesProcessed: result.jobs.length,
detail: `Wellfound: ${result.jobs.length} jobs`,
});
return { success: true, jobs: result.jobs };
},
};
export default manifest;