- 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
107 lines
2.5 KiB
TypeScript
107 lines
2.5 KiB
TypeScript
export type WorkType = "onsite" | "remote" | "hybrid";
|
|
export type JobType = "full-time" | "part-time" | "contract" | "temporary" | "internship";
|
|
export type TimePosted = "day" | "week" | "month";
|
|
export type Seniority = "internship" | "entry" | "associate" | "mid-senior" | "director" | "executive";
|
|
|
|
export interface SearchConfig {
|
|
label: string;
|
|
/** Use a raw LinkedIn URL instead of building one from filters. */
|
|
url?: string;
|
|
keywords?: string;
|
|
geoId?: string;
|
|
location?: string;
|
|
workType?: WorkType[];
|
|
jobType?: JobType[];
|
|
timePosted?: TimePosted;
|
|
seniority?: Seniority[];
|
|
}
|
|
|
|
export const KEYWORDS = [
|
|
"Software Engineer",
|
|
"Solutions Engineer",
|
|
"Full Stack Engineer",
|
|
"Backend Engineer",
|
|
"Data Engineer",
|
|
"AI Engineer",
|
|
"Applications Engineer",
|
|
"Platform Engineer",
|
|
"DevOps Engineer",
|
|
"Staff Engineer",
|
|
"Principal Engineer",
|
|
"Tech Lead",
|
|
"Developer",
|
|
"Ruby on Rails",
|
|
"Python",
|
|
"Node.js",
|
|
"TypeScript",
|
|
"Artificial Intelligence",
|
|
"Machine Learning",
|
|
"Data Science",
|
|
"AI Consultant",
|
|
"ML Engineer",
|
|
"Director of Engineering",
|
|
"Engineering Manager",
|
|
"Lead Developer",
|
|
"System Engineer",
|
|
"Solution Engineer",
|
|
].join(" OR ");
|
|
|
|
// --- Define your searches here ---
|
|
export const searches: SearchConfig[] = [
|
|
{
|
|
label: "Basel (city)",
|
|
keywords: KEYWORDS,
|
|
geoId: "103383283",
|
|
location: "Basel",
|
|
workType: ["onsite", "hybrid"],
|
|
timePosted: "month",
|
|
},
|
|
{
|
|
label: "Basel Metropolitan Area",
|
|
keywords: KEYWORDS,
|
|
geoId: "90009885",
|
|
location: "Basel Metropolitan Area",
|
|
workType: ["onsite", "hybrid"],
|
|
timePosted: "month",
|
|
},
|
|
{
|
|
label: "Basel-Country",
|
|
keywords: KEYWORDS,
|
|
geoId: "107117530",
|
|
location: "Basel-Country",
|
|
workType: ["onsite", "hybrid"],
|
|
timePosted: "month",
|
|
},
|
|
{
|
|
label: "Bern",
|
|
keywords: KEYWORDS,
|
|
location: "Bern, Switzerland",
|
|
workType: ["onsite", "hybrid"],
|
|
timePosted: "month",
|
|
},
|
|
{
|
|
label: "Zürich",
|
|
keywords: KEYWORDS,
|
|
geoId: "102436504",
|
|
location: "Zürich, Switzerland",
|
|
workType: ["onsite", "hybrid"],
|
|
timePosted: "month",
|
|
},
|
|
{
|
|
label: "Zürich Metropolitan Area",
|
|
keywords: KEYWORDS,
|
|
geoId: "107814425",
|
|
location: "Zürich Metropolitan Area",
|
|
workType: ["onsite", "hybrid"],
|
|
timePosted: "month",
|
|
},
|
|
{
|
|
label: "Zürich Area",
|
|
keywords: KEYWORDS,
|
|
geoId: "90009888",
|
|
location: "Zürich Area",
|
|
workType: ["onsite", "hybrid"],
|
|
timePosted: "month",
|
|
},
|
|
];
|