Universal Schema
TypeScript definitions and normalization rules for StandardJob.
Universal Job Schema
ATS SDK normalizes raw provider responses into a canonical StandardJob object.
Type Definition
export interface StandardJob {
/** Unique composite ID: `${provider}-${companySlug}-${externalId}` */
id: string;
/** The originating ATS identifier */
externalId: string;
/** ATS provider name */
source: AtsProvider;
/** Role title */
title: string;
/** Primary location string */
location: string;
/** Array of all mentioned locations */
locations: string[];
/** Workplace model: Remote, Hybrid, or On-site */
workplace?: "Remote" | "Hybrid" | "On-site";
/** Normalized employment type */
employmentType?: "Full-time" | "Part-time" | "Contract" | "Internship";
/** Seniority / experience level */
experienceLevel?: "Entry" | "Mid" | "Senior" | "Lead" | "Executive";
/** Parsed years of experience requirement */
experienceYears?: string;
/** Extracted salary or compensation string */
salary?: string;
/** Full HTML or plain-text job description */
description: string;
/** Associated department or functional team names */
departments?: string[];
/** Original application URL */
url: string;
/** ISO timestamp when job was published */
publishedAt?: string;
/** ISO timestamp when job was last updated */
updatedAt?: string;
/** Complete unaltered upstream response */
raw?: unknown;
}Normalization Guarantees
- Deterministic Workplace Classification: Automatic parsing of remote/hybrid tags in titles, locations, and workplace attributes.
- Standardized Seniority: Extracts terms like Staff, Principal, Senior, Lead, Junior, and Intern into normalized buckets.
- Lossless
rawpayload: The original upstream API response is always preserved onjob.rawfor custom field extraction.