Skip to main content

Variable: extractedJobSignalSchema

const extractedJobSignalSchema: any

Defined in: src/server/ai/extractors/job-signal.ts:26

Job-signal extractor (ADR-0040). A FALLBACK for unstructured input: most signals arrive already structured (CareerOneStop fields, schema.org JobPosting JSON-LD) and skip this path entirely. When a source yields only free text (a scraped career-page blob, a pasted listing), this asks the AI boundary to pull out the same normalized fields the ingest pipeline expects.

STATUS: building block — NOT yet wired into the ingest path. The two live sources (CareerOneStop + the schema.org file mapper) are structured and don't need it; when a free-text source is added, map this ExtractedJobSignal into a JobSignalPayload and hand it to ingestJobSignals (the same way mapSchemaOrg feeds that path in scripts/ingest-job-signals.mjs).

It does NOT classify the role family or score urgency — those are the pure lib (job-signal.ts), run deterministically in the ingest action on the extracted title/text. It returns raw fields only. Every field is nullable: extraction is best-effort and the ingest action tolerates gaps.

Privacy: we store the existence of a posting, never candidate PII. The prompt forbids returning applicant or contact-person data.