From 73840cad045012b140bd9a0f886bad7dc1838232 Mon Sep 17 00:00:00 2001 From: rafapolo Date: Tue, 3 Nov 2026 15:35:01 +0100 Subject: [PATCH] feat: add frontend and data-visualisation search family --- config.ts | 18 +++++++++++++++++- fetch.ts | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/config.ts b/config.ts index 02e369e..1d9bf44 100644 --- a/config.ts +++ b/config.ts @@ -184,6 +184,21 @@ export const searches: SearchConfig[] = [ }, ]; +/** Frontend, web and data-visualisation / geospatial — the Cantography lane. */ +export const FRONTEND_KEYWORDS = [ + "Frontend Engineer", + "Front-end Developer", + "React", + "React Developer", + "Full-Stack Developer", + "Web Developer", + "Data Visualization", + "Geospatial", + "GIS Developer", + "WebGL", + "Creative Technologist", +].join(" OR "); + // --- Role-family sweeps --------------------------------------------------- // Same filters as the core searches, run across a narrower set of areas. // Research is Basel/Zürich only (that's where the institutes are); platform @@ -226,5 +241,6 @@ function sweep( searches.push( ...sweep("Platform", PLATFORM_KEYWORDS, CORE_AREAS, { remote: true }), ...sweep("Research", RESEARCH_KEYWORDS, RESEARCH_AREAS), - ...sweep("Field", FIELD_KEYWORDS, CORE_AREAS, { remote: true }) + ...sweep("Field", FIELD_KEYWORDS, CORE_AREAS, { remote: true }), + ...sweep("Frontend", FRONTEND_KEYWORDS, CORE_AREAS, { remote: true }) ); diff --git a/fetch.ts b/fetch.ts index 77e7cfe..1f6c399 100644 --- a/fetch.ts +++ b/fetch.ts @@ -161,7 +161,7 @@ export const BIO_DOMAIN_RE = new RegExp( "i" ); -export const SOFTWARE_TITLE_RE = /\b(software|developer|architect|devops|devsecops|platform|data|backend|frontend|fullstack|full.stack|tech\s*lead|technical|typescript|python|rails|node\.?js|ai\b|agentic|llm|machine\s*learning|cloud|security|analytics|sre|reliability|infrastructure|mlops|solutions?|consultant|applications?\s*engineer|system[\s-]*engineer|informatics|scientific\s*(?:software|comput\w*|programmer)|research\s*(?:software|engineer)|hpc|forward\s*deployed|fde|palantir|field\s*engineer|customer\s*engineer|sales\s*engineer|pre.?sales|integration\s*engineer|api\s*engineer|founding\s*engineer|product\s*engineer|automation\s*engineer|director|product\s*manager|engineering\s*manager|it\s*manager|it\s*project|staff\s*engineer|principal\s*engineer|cto|vp\s*eng)\b/i; +export const SOFTWARE_TITLE_RE = /\b(software|developer|architect|devops|devsecops|platform|data|backend|frontend|front.end|fullstack|full.stack|react|web\s*developer|gis|geospatial|visuali[sz]ation|webgl|graphics|creative\s*technologist|cartograph\w*|tech\s*lead|technical|typescript|python|rails|node\.?js|ai\b|agentic|llm|machine\s*learning|cloud|security|analytics|sre|reliability|infrastructure|mlops|solutions?|consultant|applications?\s*engineer|system[\s-]*engineer|informatics|scientific\s*(?:software|comput\w*|programmer)|research\s*(?:software|engineer)|hpc|forward\s*deployed|fde|palantir|field\s*engineer|customer\s*engineer|sales\s*engineer|pre.?sales|integration\s*engineer|api\s*engineer|founding\s*engineer|product\s*engineer|automation\s*engineer|director|product\s*manager|engineering\s*manager|it\s*manager|it\s*project|staff\s*engineer|principal\s*engineer|cto|vp\s*eng)\b/i; const DE_CONTENT_RE = /\b(Sie|Ihre?|Ihnen|Wir|wir|und\s|für|mit\s|von\s|bei\s|das\s|ist\s|sind\s|haben\s|werden\s|können|suchen|bieten|Kenntnisse|Erfahrung|Anforderungen|Aufgaben|Stellenbeschreibung|Stellenangebot|Bewerbung|Ausbildung|Berufserfahrung|Teamarbeit|Vollzeit|Teilzeit|unbefristet|Abschluss|gesucht|Deutsch|Englisch|Schweizer)\b/g; const FR_CONTENT_RE = /\b(vous|nous|votre|notre|pour\s|avec\s|profil|poste|emploi|entreprise|compétences|expérience|formation|équipe|rejoindre|recherchons|offrons|missions|candidature|CDI|CDD|temps\s+plein|temps\s+partiel)\b/g;