# Changelog of Job Board Hiring Signals: Greenhouse, Lever, Ashby (`propheto/job-board-hiring-signals`) Actor

- **URL**: https://apify.com/propheto/job-board-hiring-signals/changelog.md
- **Full Actor documentation**: https://apify.com/propheto/job-board-hiring-signals.md

## Changelog

Output field names are part of the contract. Any rename or removal is listed here, with the version.

### 0.3 (not published; local build, Nov 9, 2026)

- **Renamed charge event** `job-result` → `job-returned` (jobs mode, one per job row).
- Rollups stay billed (`company-rollup`). New free rollup row (`billed: false`, `matchingPosts: 0`, `trend: "down"`)
  when a company with signals last run has none now. New rollup field `billed`.
- New job fields `companyNameDerived` and `companyNameSource` (`starter-list` | `slug`), filled only when the ATS gives
  no company name (Lever, Ashby). `companyName` stays ATS-only. Signal/rollup `company` label falls back to it.
- Repeated employer text is skipped before signal matching (new input `removeRepeatedText`, default true;
  new summary fields `repeatedSentencesSkipped`, `companiesWithRepeatedText`, `rollupsDownToZeroFree`).
- ROLLUP_LAST state now stores `{matchingPosts, company}` per company (old integer values are still read).

### 0.2 (not published; local build, Nov 9, 2026)

First job-board build (replaces the books.toscrape skeleton).

- Modes: `signals` (default) and `jobs`.
- Sources: Greenhouse, Lever (incl. EU instance), Ashby official public job-board APIs only.
- Source fields are verbatim (`companyName`, `location`, `allLocations`, `workplaceType`, `employmentType`, `jobUrl`, `compensation`).
  Values computed by the Actor end in `Derived` (`isRemoteDerived`, `jobUrlNormalized`) or `Inferred`
  (`experienceYearsMinInferred`, `experienceBandInferred`, `experienceEvidenceInferred`).
- Strict input: unknown fields, wrong types, unsupported ATS values stop the run before any request or charge.
- Filters: keywords/excludeKeywords (phrases, scope title/description), locations, remote, departments,
  lookbackDays, postedAfter/postedBefore, salaryMin/salaryMax/salaryCurrency/includeUnknownSalary,
  experienceBands/includeUnknownExperience. All applied before charging.
- No LinkedIn or company-enrichment fields exist. None will be added without a changelog entry.
