# Changelog of Welcome to the Jungle · Companies Hiring by Sector (`corent1robert/wttj-hiring-signal-scraper`) Actor

- **URL**: https://apify.com/corent1robert/wttj-hiring-signal-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/corent1robert/wttj-hiring-signal-scraper.md

## Changelog

All notable changes to this project will be documented in this file.

### \[1.6.0] - 2026-08-20

#### Added

- Optional **WTTJ companies** (`companyUrls`) — paste a slug (`enky`) or the company profile URL. The Actor loads the public profile, stats, and team page itself. When the list is not empty, sector / job / location filters are ignored
- Dataset fields from the public profile: `average_age`, `parity_women`, `parity_men`, `published_revenue`, `featured_people` (name / title / bio). Team pages are discovered from the slug — no `/team-3` input.

#### Changed

- Console input: URL list first, then discovery filters. Classic-board-only filters (contract, salary, recency) are labelled as such

### \[1.5.0] - 2026-08-20

#### Added

- **International jobs board** in company discovery — employers that only post there (Alan, Qonto-style) now appear in the same run as classic WTTJ listings (Enky, Doctolib FR)
- Dataset field `discovery_source`: `wttj`, `intel`, or `wttj+intel`
- Cap splits results between the two boards so a `maxCompanies` of 10 is not filled only by the classic index

#### Changed

- Same PPE. Extra board adds **no extra event**.

### \[1.4.0] - 2026-08-20

#### Added

- **Funding, investors, and named founders** on the same company row when WTTJ publishes them (total raised, last round, founder `/in/` URLs)
- **Hiring mix** — total live jobs, jobs by function (sales vs tech vs marketing…), and `hiring_focus`. Team *names/size* when published; named team members are not on the public profile
- Free founder / CEO LinkedIn fills `contact_*` when present — paid person search only runs if you ask for another role
- Dataset fields: `total_funding_usd`, `last_round`, `last_round_amount_usd`, `last_round_year`, `investors`, `founders`, `percentage_female`, `employee_growth_pct`, `glassdoor_rating`, `jobs_count_live`, `hiring_by_function`, `hiring_focus`, `teams`

#### Changed

- Same PPE grid. Funding and founder profiles add **no extra event**.

### \[1.3.0] - 2026-08-20

#### Added

- Filters: **country** (FR, GB, US…), **city**, **remote** (full / hybrid / occasional), **yearly salary floor**
- On every company row: salary band, remote policies, all matching cities, employer labels, equality index, benefits, newest matching role date

#### Changed

- Same pay-per-event grid. Location / remote / salary filters add **no extra PPE**.

### \[1.2.0] - 2026-08-20

#### Added

- Prefer a readable LinkedIn company slug (`/company/payfit`) **only when it matches the WTTJ slug** — never swap the WTTJ company id for a regional page (`payfit-uk`)
- Public `/in/` URLs from the profile or company site (`/about`, `/team`) as a free person LinkedIn; paid search no longer wipes them on a miss
- Extra socials from the WTTJ profile (`twitter_url`) plus `linkedin_source` and `people_linkedin_urls`
- Dataset **Outreach** view (LinkedIn first)
- Lemlist: skip rows with no LinkedIn; send `companyUrl` when the website is known

#### Changed

- EN + FR company-profile payloads in parallel; org website lookup in parallel
- Console copy: company LinkedIn is included by default; paid hop is named-person only
- Store title: **Companies Hiring by Sector** (drops jargon “Hiring Signals”; LinkedIn is company page, not a LinkedIn scraper)
- **PPE:** `contact-enrichment` billed only when a named `/in/` is found; `lemlist-push` registered on the Store

### \[1.1.0] - 2026-08-20

#### Added

- **WTTJ company LinkedIn over HTTPS** — `GET api.welcometothejungle.com/api/v1/pages?path=/en/companies/{slug}` (the JSON the SPA uses). No AWS WAF, no Playwright. WTTJ chrome `wttj-en` / `wttj-fr` links are ignored. Company website remains a fallback when the profile has no `networks.linkedin`.

#### Changed

- Dropped the Chromium hop (WAF on the HTML page). Default memory back to **256 MB**.

### \[1.0.33] - 2026-06-05

#### Added

- **Cross-run deduplication** — `deduplicateAcrossRuns` input persists seen company slugs in a named Apify Key-Value Store (`wttj-seen-slugs`); `maxCompanies` cap is applied after filtering already-seen companies so the cap always targets new ones only
- **Reset option** — `resetDeduplication` clears the cache for a fresh start
- Icebreaker language support (FR/EN) with `icebreakerLanguage` input
- Retry x1 on Lemlist API calls (transient errors / 5xx) with 1.5s backoff
- `lemlist_lead_id` field in dataset output

### \[1.0.29] - 2026-06-05

#### Added

- **Native Lemlist integration** — push leads directly into a campaign with `lemlistApiKey` + `lemlistCampaignId` input fields; PPE event `lemlist-push` at $0.005/lead
- **Icebreaker language** — `icebreakerLanguage` input (en/fr) generates a localised pre-filled message with open role titles and city; fully tested
- **Retry on Lemlist calls** — single retry on transient errors (network timeout, 5xx) with 1.5s backoff; 409 duplicate handled gracefully
- **`lemlist_lead_id` field** in dataset output — `lea_xxx` if pushed, `duplicate` if already in campaign
- 6 contact roles: CEO, Founder, CTO, CMO, VP Sales, HR
- `founding_year` and `company_summary` fields extracted from Algolia
- Dynamic Algolia credential fetching from `/api/env` with static fallback
- 49 unit tests (filter building, company parsing, contact enrichment, Lemlist push)

#### Changed

- PPE pricing updated: `wttj-company` $0.003, `contact-enrichment` $0.05, `lemlist-push` $0.005
- Lemlist push works with or without contact enrichment (company-only lead supported)
- Input schema cleaned up — Lemlist fields in dedicated section, enrichment section independent

### \[1.0] - 2026-06-02

#### Added

- Initial release
- Sector, profession category, contract type, and date range filters — all via Console dropdowns
- Deduplication by company slug across paginated results
- Optional CEO / Founder / HR LinkedIn enrichment via autom.dev + GPT-4o-mini
- Pay-per-event pricing: $0.003 per exported company, $0.05 per contact enrichment
- RUN\_LOG key-value store export
- Local CSV export for development
