chore: reorganize repo structure and update docs
- move temp scripts to scripts/, cv files to cv/, jobs.csv to results/ - update index.ts and recheck.ts CSV path to results/jobs.csv - fix imports in scripts/ to use ../config.ts and ../fetch.ts - update CLAUDE.md and README.md to reflect new structure - add plans/ with LinkedIn post drafts - update .gitignore: ignore results/, jobs/, cv binaries, .DS_Store
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
#!/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<string>();
|
||||
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}/`);
|
||||
}
|
||||
Reference in New Issue
Block a user