Jobs and Hiring

Layoff Event

/extract/json

Schema for company layoff and workforce reduction event records.

Download the schemajobs/layoff-event.json

layoff-event.schema

// names marked ? are optional

company_name:string// Name of the company conducting the layoff. Commonly found in: press release headline, news article title, layoff tracker entry.
company_domain?:string// Website domain of the company. Commonly found in: company website link, press release footer, company profile.
company_industry?:string// Industry sector of the company. Commonly found in: company profile, news article classification, layoff tracker category.
headcount_affected?:number// Number of employees affected by the layoff. Commonly found in: press release body, news article headline, layoff tracker count.
headcount_affected_pct?:number// Percentage of total workforce affected. Commonly found in: press release body, news article body, workforce reduction percentage.
affected_departments?:string[]// Departments or teams affected by the layoff. Commonly found in: press release body, news article details, layoff announcement.
affected_locations?:string[]// Office locations affected by the layoff. Commonly found in: press release body, news article details, WARN notice.
announcement_date:string// Date the layoff was publicly announced. Commonly found in: press release date, article publish date, announcement timestamp.
effective_date?:string// Date the layoffs took or take effect. Commonly found in: press release body, WARN notice effective date, announcement details.
layoff_type?:string// Stated reason or type of layoff. Commonly found in: press release body, news article analysis, company statement. One of: restructuring, performance, acquisition, economic, other.
severance_weeks?:number// Number of weeks of severance pay offered. Commonly found in: press release body, employee communication, news article details.
rehire_eligible?:boolean// Whether laid-off employees are eligible for rehire. Commonly found in: press release body, employee FAQ, company statement.
source_type?:string// Type of source for the layoff information. Commonly found in: site domain classification, content type, source format. One of: press_release, news_article, sec_filing, social, other.
ceo_statement?:string// Statement or message from the CEO about the layoff. Commonly found in: press release CEO quote, internal memo published externally, news article quote.
page_title?:string// Title of the source page. Tabstack auto-fills this from page metadata when left empty.
favicon?:string// Favicon URL of the source page. Tabstack auto-fills this from page metadata when left empty.

Try it live

A sample Layoff Event document, generated from the schema. Edit it, or paste a real response, and see it checked against the schema instantly. It runs in your browser, nothing is sent anywhere.

your-output.json
validation

Valid, matches Layoff Event

Every required field is present and each value matches its type. Extra fields are allowed. A field the page does not carry is not guaranteed to come back as null, so check values rather than only checking for null.

/extract/json

Copy-paste usage

The same call in TypeScript, Python, and curl. Point it at your own URL and go. The schema drives the response, so you get back the fields you asked for instead of a page to parse.

Features

  • Typed TypeScript and Python SDKs
  • One call, no parsing code and no second LLM pass
  • The same field names on every request, even when the page layout changes
layoff-event.ts
// curl -sfLO https://raw.githubusercontent.com/Mozilla-Ocho/tabstack-schemas/main/jobs/layoff-event.json
import Tabstack from '@tabstack/sdk'
import schema from './layoff-event.json' with { type: 'json' }

const client = new Tabstack() // reads TABSTACK_API_KEY from the environment

try {
  const data = await client.extract.json({
    url: 'https://example.com/careers/engineer',
    json_schema: schema,
    effort: 'standard', // 'min' | 'standard' | 'max'
  })

  console.log(data)
} catch (err) {
  console.error('Extraction failed:', err)
}

Ship this schema in one call.

Pass a URL, get matching JSON back. Free to start, no extraction layer to maintain.