Jobs and Hiring

Executive Leadership Change

/extract/json

Schema for tracking executive and leadership role transitions at companies.

Download the schemajobs/executive-leadership-change.json

executive-leadership-change.schema

// names marked ? are optional

person_name:string// Full name of the executive. Commonly found in: press release headline, news article body, LinkedIn announcement.
person_linkedin_url?:string// LinkedIn profile URL of the executive. Commonly found in: LinkedIn post link, executive bio section, company announcement.
company_name:string// Name of the company where the change occurred. Commonly found in: press release header, news article, LinkedIn company tag.
company_domain?:string// Website domain of the company. Commonly found in: company website link, press release footer, company profile.
previous_title?:string// Executive's previous title at the company or prior company. Commonly found in: press release body, LinkedIn profile history, news article bio.
previous_company?:string// Executive's previous employer, if different. Commonly found in: press release body, LinkedIn work history, executive bio.
new_title:string// Executive's new title. Commonly found in: press release headline, announcement title, LinkedIn update.
new_company:string// Company where the executive is joining or taking the new role. Commonly found in: press release header, news article headline, LinkedIn company tag.
change_type:string// Type of leadership change. Commonly found in: press release context, news article classification, announcement language. One of: promotion, new_hire, departure, retirement, interim, other.
announcement_date:string// Date the leadership change was publicly announced. Commonly found in: press release date, article publish date, announcement timestamp.
effective_date?:string// Date the leadership change takes effect. Commonly found in: press release body, announcement details, effective date mention.
announcement_source_url?:string// URL of the original announcement source. Commonly found in: press release URL, news article link, LinkedIn post URL.
announcement_type?:string// Type of source for the announcement. Commonly found in: site domain classification, content type, source format. One of: press_release, linkedin_post, sec_filing, news_article, other.
quoted_statement?:string// Notable quoted statement from the announcement. Commonly found in: press release quote block, news article quote, executive statement.
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 Executive Leadership Change 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 Executive Leadership Change

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
executive-leadership-change.ts
// curl -sfLO https://raw.githubusercontent.com/Mozilla-Ocho/tabstack-schemas/main/jobs/executive-leadership-change.json
import Tabstack from '@tabstack/sdk'
import schema from './executive-leadership-change.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.