Files
linkme/scripts/ch-engmanager-temp.ts
T
rodado b4957025b1 chore: update search scripts, extra sources and post drafts
Adds the one-off scripts accumulated across recent sessions, removes
temp scripts whose searches now live in config.ts as role-family
sweeps, and updates fetch-other.ts plus the LinkedIn post drafts.
2026-08-27 09:03:05 +02:00

38 lines
1.5 KiB
TypeScript

import { fetchJobs } from "../fetch.ts";
import type { SearchConfig } from "../config.ts";
const EM_KEYWORDS = [
"Engineering Manager",
"Engineering Lead",
"Head of Engineering",
"VP Engineering",
"Director of Engineering",
"CTO",
"Tech Lead Manager",
].join(" OR ");
const configs: SearchConfig[] = [
{ label: "Basel city", keywords: EM_KEYWORDS, geoId: "103383283", workType: ["onsite", "hybrid"], timePosted: "month" },
{ label: "Basel Metro", keywords: EM_KEYWORDS, geoId: "90009885", workType: ["onsite", "hybrid"], timePosted: "month" },
{ label: "Zürich city", keywords: EM_KEYWORDS, geoId: "102436504", workType: ["onsite", "hybrid"], timePosted: "month" },
{ label: "Zürich Metro", keywords: EM_KEYWORDS, geoId: "107814425", workType: ["onsite", "hybrid"], timePosted: "month" },
{ label: "Bern", keywords: EM_KEYWORDS, location: "Bern, Switzerland", workType: ["onsite", "hybrid"], timePosted: "month" },
{ label: "CH Remote", keywords: EM_KEYWORDS, location: "Switzerland", workType: ["remote"], timePosted: "month" },
];
const all = new Map<string, Awaited<ReturnType<typeof fetchJobs>>[number]>();
for (const config of configs) {
console.log(`\n--- ${config.label} ---`);
const jobs = await fetchJobs(config);
for (const j of jobs) {
if (!all.has(j.id)) all.set(j.id, j);
}
}
console.log(`\nTotal: ${all.size} vagas de Engineering Manager na Suíça\n`);
for (const j of all.values()) {
console.log(`${j.title} — ${j.company} (${j.location})`);
console.log(` ${j.link}`);
}