City search (#217)

* wave 1, jobspy only

* combine usa/ca to united states

* strict city location filter

* hide and show based on focus

* UI changes

* allow clicking cross!

* pill animate in

* animate out, uggo fix

* animate out

* framer motion

* animate component height

* adzuna

* hiring cafe implementation

* refactor: centralize shared search-city parsing and matching

* feat: migrate city setting to searchCities with legacy fallback

* docs: update pipeline and extractor city-search wording

* fix(orchestrator): normalize tokenized paste behavior

* fix(shared): tighten city matching semantics

* docs(extractors): document city-location knobs and geocoding note
This commit is contained in:
Shaheer Sarfaraz
2026-02-21 00:42:09 +00:00
committed by GitHub
parent 5ed9069813
commit 19266fe5eb
38 changed files with 1756 additions and 439 deletions
+1
View File
@@ -9,6 +9,7 @@ for orchestrator ingestion.
- `ADZUNA_APP_KEY` (required)
- `ADZUNA_COUNTRY` (default: `gb`)
- `ADZUNA_SEARCH_TERMS` (JSON array or `|` / comma / newline-delimited)
- `ADZUNA_LOCATION_QUERY` (optional city/location text passed to Adzuna `where`)
- `ADZUNA_MAX_JOBS_PER_TERM` (default: `50`)
- `ADZUNA_RESULTS_PER_PAGE` (default: `50`, max `50`)
- `ADZUNA_OUTPUT_JSON` (default: `storage/datasets/default/jobs.json`)
+6
View File
@@ -104,6 +104,7 @@ async function fetchJobsPage(args: {
appId: string;
appKey: string;
what: string;
where?: string;
resultsPerPage: number;
}): Promise<AdzunaJob[]> {
const url = new URL(`${API_BASE}/jobs/${args.country}/search/${args.page}`);
@@ -112,6 +113,9 @@ async function fetchJobsPage(args: {
if (args.what) {
url.searchParams.set("what", args.what);
}
if (args.where) {
url.searchParams.set("where", args.where);
}
url.searchParams.set("results_per_page", String(args.resultsPerPage));
const response = await fetch(url.toString(), {
@@ -146,6 +150,7 @@ async function run(): Promise<void> {
const outputJson =
process.env.ADZUNA_OUTPUT_JSON ||
join(process.cwd(), "storage/datasets/default/jobs.json");
const locationQuery = process.env.ADZUNA_LOCATION_QUERY?.trim() || "";
const jobs: ExtractedJob[] = [];
@@ -171,6 +176,7 @@ async function run(): Promise<void> {
appId,
appKey,
what: searchTerm,
where: locationQuery || undefined,
resultsPerPage: take,
});