- 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
31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
#!/usr/bin/env bun
|
|
import { KEYWORDS } from "../config.ts";
|
|
import { fetchJobs, SOFTWARE_TITLE_RE } from "../fetch.ts";
|
|
import type { SearchConfig } from "../config.ts";
|
|
|
|
const JUNIOR_RE = /\b(junior|jr\.?|entry.?level|graduate|intern(?:ship)?|trainee|apprentice|werkstudent)\b/i;
|
|
|
|
const searches: SearchConfig[] = [
|
|
{ label: "Bern (city)", keywords: KEYWORDS, location: "Bern, Switzerland", workType: ["onsite", "hybrid"], timePosted: "month" },
|
|
];
|
|
|
|
const seen = new Set<string>();
|
|
const results: { title: string; company: string; link: string; search: string }[] = [];
|
|
|
|
for (const config of searches) {
|
|
console.log(`\n[${config.label}]`);
|
|
const jobs = await fetchJobs(config, { raw: false });
|
|
for (const job of jobs) {
|
|
if (!seen.has(job.id)) {
|
|
seen.add(job.id);
|
|
results.push({ title: job.title, company: job.company, link: job.link, search: job.search });
|
|
}
|
|
}
|
|
}
|
|
|
|
console.log(`\n── ${results.length} jobs found in Bern ──\n`);
|
|
for (const j of results) {
|
|
console.log(` [${j.search}] ${j.title}`);
|
|
console.log(` ${j.company} ${j.link}`);
|
|
}
|