feat: add support for indicating workplaceTypes (#296)

This commit is contained in:
Ryan Foote
2026-03-21 20:43:43 +00:00
committed by GitHub
parent 8274ec4e14
commit 0b22c08d7d
25 changed files with 497 additions and 5 deletions
+2
View File
@@ -33,6 +33,7 @@ It also supports term-by-term search and country-aware search state using the sa
- selected country maps into Hiring Cafe location search state.
- run budget path (`jobspyResultsWanted`) is reused as the max jobs-per-term cap.
- optional **Search cities** narrow results by city.
- workplace type is forwarded from the automatic run modal as a global run filter.
4. Start the run and watch progress in the pipeline progress card.
Defaults and constraints:
@@ -42,6 +43,7 @@ Defaults and constraints:
- Hiring Cafe is enabled by default in source selection.
- `HIRING_CAFE_DATE_FETCHED_PAST_N_DAYS` controls recency window when running extractor directly (default `7`).
- When a city is provided via `searchCities`, Hiring Cafe uses city radius search (default `1` mile) and strict city post-filtering.
- Workplace type is global to the run and is not configured separately per city in this integration.
- City geocoding is resolved through Nominatim (OpenStreetMap data); if you scale extractor traffic, add attribution and cache repeated city lookups.
Local run example:
+12
View File
@@ -27,6 +27,7 @@ Key environment variables:
- `JOBSPY_HOURS_OLD` (default: `72`)
- `JOBSPY_COUNTRY_INDEED` (default: `UK`)
- `JOBSPY_LINKEDIN_FETCH_DESCRIPTION` (default: `true`)
- `JOBSPY_IS_REMOTE` (unset by default)
## 2) Orchestrator flow
@@ -50,3 +51,14 @@ The service in `orchestrator/src/server/services/jobspy.ts`:
- `JOBSPY_SEARCH_TERMS` can be JSON array or `|`, comma, newline-delimited text.
- Set `JOBSPY_LINKEDIN_FETCH_DESCRIPTION=0` to speed runs.
- Temp output files are stored under `data/imports/`.
- If workplace type is only `Remote`, JobSpy runs with `JOBSPY_IS_REMOTE=true`.
- If workplace type includes `Hybrid` or `Onsite`, JobSpy cannot enforce those filters precisely, so the JobSpy-backed sources run without a workplace-type filter and may return broader results.
## Common Problems
- `Hybrid` or `Onsite` was selected, but Indeed, LinkedIn, or Glassdoor still returned remote jobs.
JobSpy only supports a strict remote toggle. Any workplace-type selection that includes `Hybrid` or `Onsite` broadens those source results.
- A run returned fewer LinkedIn descriptions than expected.
`JOBSPY_LINKEDIN_FETCH_DESCRIPTION=0` disables description fetching to speed up runs.
- Different cities need different workplace-type filters.
This is not supported in the current automatic-run flow. JobSpy receives one global workplace-type selection per run/query invocation.
@@ -29,6 +29,7 @@ Using the published package also keeps the integration small and makes it easier
3. Set your usual automatic run controls:
- `searchTerms` are sent as `query`.
- country or city filters are reused as the package `location` option.
- workplace type is passed through as the package `workplaceType` option.
- run budget path (`jobspyResultsWanted`) is reused as `requestedCount` per term.
4. Start the run and monitor progress in the pipeline progress card.
@@ -38,6 +39,7 @@ Defaults and constraints:
- The integration runs with `enrichDetails: true`, so it opens job detail pages for richer records.
- Browser binaries are not downloaded automatically with the package. Install them with `npx playwright install` before using this extractor in a fresh environment.
- When **Search cities** is set, the extractor runs once per city and once per search term.
- Workplace type is a global run filter, not a per-city override.
- Without explicit cities, the selected country is used as the location filter except for broad modes such as `worldwide` and `usa/ca`.
## Common problems