#!/usr/bin/env bun import { fetchJobs, isEnglishContent } from "../fetch.ts"; import type { SearchConfig } from "../config.ts"; const EM_KEYWORDS = [ "Engineering Manager", "Director of Engineering", "Head of Engineering", "VP Engineering", "Technical Lead Manager", "Tech Lead Manager", "Head of Software", "Software Engineering Manager", ].join(" OR "); const searches: SearchConfig[] = [ { label: "Basel", keywords: EM_KEYWORDS, location: "Basel, Switzerland", timePosted: "month" }, { label: "Bern", keywords: EM_KEYWORDS, location: "Bern, Switzerland", timePosted: "month" }, { label: "Zürich", keywords: EM_KEYWORDS, location: "Zurich, Switzerland", timePosted: "month" }, ]; const seen = new Set(); const results: { id: string; title: string; company: string; search: string }[] = []; for (const config of searches) { console.log(`\n[${config.label}]`); const jobs = await fetchJobs(config, { raw: true }); for (const job of jobs) { if (!seen.has(job.id)) { seen.add(job.id); results.push({ id: job.id, title: job.title, company: job.company, search: job.search }); } } } console.log(`\n── ${results.length} jobs after title filter — checking content language ──\n`); const english: typeof results = []; for (const job of results) { process.stdout.write(` ${job.company} — ${job.title} … `); const ok = await isEnglishContent(job.id); console.log(ok ? "en" : "dropped"); if (ok) english.push(job); } console.log(`\n── ${english.length} English EM jobs (Basel / Bern / Zürich) ──\n`); for (const [i, j] of english.entries()) { console.log(` ${i + 1}. [${j.search}] ${j.title} — ${j.company}`); console.log(` https://www.linkedin.com/jobs/view/${j.id}/`); }