Files
santifer--career-ops/templates/portals.example.yml
T
wehub-resource-sync d083df1fdb
CodeQL Analysis / Analyze (javascript-typescript) (push) Failing after 2s
Web CI / web typecheck + build (push) Failing after 1s
Release Please / release-please (push) Failing after 1s
CodeQL Analysis / Analyze (go) (push) Failing after 16s
chore: import upstream snapshot with attribution
2026-07-13 12:02:43 +08:00

1745 lines
67 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Portal Scanner Configuration
# Used by /career-ops scan to discover new offers automatically.
#
# Strategy (4 levels):
# 0. Local parser → per-company `parser:` script for SSR/static career pages (zero-token)
# 1. Playwright → careers_url of each company (real-time, reliable)
# 2. HTTP JSON (WebFetch) → per-company `api:` on tracked_companies (see board_api_catalog below)
# 3. WebSearch with site: filters (broad discovery, may be stale)
#
# IMPORTANT: Each company in tracked_companies MUST have careers_url.
# Prefer the BRANDED company careers URL whenever available; use ATS-hosted URL only as fallback.
# ✅ https://careers.mastercard.com ⚠️ https://mastercard.wd1.myworkdayjobs.com (fallback only)
# ✅ https://openai.com/careers ⚠️ https://job-boards.greenhouse.io/openai (fallback only)
# Exception: ATS-hosted careers_url is acceptable when no branded careers page exists.
# Using raw ATS URLs when a branded page exists can cause false 410 errors (job ID mismatch).
#
# HOW TO CUSTOMIZE:
# 1. Copy this file to portals.yml in the project root
# 2. Edit title_filter.positive with YOUR target role keywords
# 3. Add/remove companies in tracked_companies
# 4. Adjust search_queries for your preferred job boards
# 5. Set enabled: false on companies you don't care about
# -- Scan history recheck policy (optional) --
# By default, URLs recorded in data/scan-history.tsv are deduped forever.
# Set recheck_after_days to let previously added URLs become eligible again
# after N days, useful for roles that reopen or are republished at the same URL.
# Permanent invalid statuses such as blocked host or malformed URL still remain
# deduped forever.
#
# scan_history:
# recheck_after_days: 30
# -- Location filter (optional) --
# Filter scanned jobs by location. Applied AFTER title filter, BEFORE dedup.
# If this entire block is absent, all locations pass (current default behavior).
#
# Semantics (case-insensitive substring, in this order):
# - Empty location string on a job → pass (don't penalize missing data)
# - Any `always_allow` keyword present → pass (takes precedence over `block`)
# - Any `block` keyword present → reject
# - `allow` empty → pass (already cleared block)
# - `allow` non-empty → must match at least one keyword
#
# `always_allow` is optional. It rescues multi-location postings that name your
# home region: with always_allow ["New York"] and block ["India"], a job listed
# "Remote, New York or India" passes (New York wins), while "Remote, India" is
# still rejected. Omit always_allow entirely and the filter behaves as before.
#
# Example below targets US-based remote + a couple of US metros, blocking
# common foreign hubs. Customize to your geography.
# location_filter:
# # always_allow is checked BEFORE block — keep this list to your home region only
# always_allow:
# - "United States" # (replace with your home region)
# - "New York"
# allow:
# - "Remote"
# - "United States"
# - "USA"
# - "Atlanta"
# - "New York"
# block:
# - "India"
# - "Bengaluru"
# - "United Kingdom"
# - "London"
# - "Germany"
# - "France"
# - "Singapore"
# - "Japan"
# - "Brazil"
# - "Australia"
# -- Salary filter (optional) --
# Filter scanned jobs by annual compensation range. Applied AFTER location
# filter, BEFORE dedup. Only applies when structured salary data exists.
#
# Semantics:
# - min/max are annual compensation filters (use annualized values)
# - max: 0 means "no upper limit"
# - If no salary data exists on a job, it passes (conservative behavior)
# - If both currencies are known and differ, the job is rejected by the salary filter
# - Partial ranges (min only or max only) work correctly
# - If this entire block is absent, salary is not filtered (default behavior)
#
# Example: target roles paying at least $100k, no upper limit
# salary_filter:
# min: 100000
# max: 0
# currency: "USD"
# -- Posting-age filter (optional) --
# Opt-in freshness gate. Skips offers whose posting date (postedAt, supplied by
# the provider) is older than N days. Offers from providers that expose no date
# are never skipped — same "don't penalize missing data" rule as location_filter.
# Absent, 0, or non-positive → disabled (all ages pass).
#
# max_posting_age_days: 45
# -- Trust filter (optional) --
# Enriches each scanned job with a trust score (0-100) and flags.
# Jobs are NEVER dropped — only annotated. The trust score helps you
# prioritize which postings to evaluate first.
#
# Heuristics (V1):
# 1. URL structure validation (malformed or non-http URLs)
# 2. Missing application URL
# 3. Suspicious domain detection (link shorteners, form builders)
# 4. Company ↔ domain mismatch (with ATS allowlist)
#
# If this block is absent or enabled: false, all jobs get score 100.
#
# trust_filter:
# enabled: true
# suspicious_domains:
# - "bit.ly"
# - "tinyurl.com"
# - "t.co"
# - "forms.gle"
# - "goo.gl"
# - "shorturl.at"
# # Override the built-in ATS allowlist (greenhouse, lever, workday, etc.).
# # URLs hosted on these domains skip the company↔domain mismatch check.
# # ats_allowlist:
# # - "greenhouse.io"
# # - "ashbyhq.com"
# # - "lever.co"
# # - "custom-ats.example.com"
# -- Content filter (optional) --
# Filters on the job DESCRIPTION text, not just the title — useful when
# companies post generic titles ("Software Engineer") with very different
# stacks. Case-insensitive substring match.
# Semantics:
# - A job with no description always passes (see provider support below)
# - Any `negative` keyword present → reject
# - `positive` empty → pass (after clearing negatives)
# - `positive` non-empty → at least one keyword must be present
# - If this entire block is absent, descriptions are not filtered (default)
#
# Provider support: the scanner is zero-token and only reads descriptions that
# a provider already returns in its list payload — it never fetches each job
# page. Currently Lever (`descriptionPlain`) supplies descriptions; jobs from
# providers that don't always pass this filter (they're never silently dropped).
#
# Example: keep roles that mention Rust/Go, drop legacy PHP/WordPress shops
# content_filter:
# positive:
# - "rust"
# - "golang"
# negative:
# - "php"
# - "wordpress"
#
# by_title_keyword (optional): scope a stricter positive/negative pair to only
# the jobs matched via a specific title_filter.positive keyword, instead of
# applying it to every scanned job. Useful when a title keyword is broad
# enough to need extra confirmation from the description (e.g. "AI Engineer"
# roles where you want the JD to actually mention a concrete AI tool) without
# that same requirement leaking onto unrelated categories (Instructional
# Designer, HR Coordinator, ...). Jobs matched via a keyword with no entry
# here fall back to the global positive/negative pair above.
# content_filter:
# by_title_keyword:
# "AI Engineer":
# positive:
# - "gpt"
# - "llm"
# - "claude"
# -- Title filter --
# The scanner uses these keywords to decide if a title is relevant.
# At least 1 positive must match AND 0 negatives must match (case-insensitive).
#
# skip_tiers: [intern, entry] # optional: skip listings by seniority tier (note: unrecognized/plain titles fall back to 'mid')
title_filter:
positive:
# [CUSTOMIZE] Add keywords matching YOUR target roles
# -- AI/ML roles --
- "AI"
- "ML"
- "LLM"
- "Agent"
- "Agentic"
- "GenAI"
- "Generative AI"
- "NLP"
- "LLMOps"
- "MLOps"
- "Voice AI"
- "Conversational AI"
- "Speech"
# -- German AI/ML keywords (DACH market) --
- "KI"
- "Künstliche Intelligenz"
- "KI Engineer"
- "KI Trainer"
- "Dozent"
- "Weiterbildung"
# -- Engineering roles --
- "Platform Engineer"
- "Solutions Architect"
- "Solutions Engineer"
- "Forward Deployed"
- "Deployed Engineer"
- "Customer Engineer"
- "Integration Engineer"
# -- Product roles --
- "Product Manager"
- "Technical PM"
# -- Automation roles --
- "Automation"
- "Hyperautomation"
- "Low-Code"
- "No-Code"
- "GTM Engineer"
- "RevOps"
- "Business Systems"
- "Internal Tools"
- "Transformation"
negative:
# [CUSTOMIZE] Add keywords for roles you want to exclude
- "Junior"
- "Intern"
- ".NET"
- "Java "
- "iOS"
- "Android"
- "PHP"
- "Ruby"
- "Embedded"
- "Firmware"
- "FPGA"
- "ASIC"
- "Blockchain"
- "Web3"
- "Crypto"
- "Salesforce Admin"
- "SAP "
- "Oracle EBS"
- "Mainframe"
- "COBOL"
seniority_boost:
# These prefixes add relevance but are not required
- "Senior"
- "Staff"
- "Principal"
- "Lead"
- "Head"
- "Director"
# -- Search queries --
# Each query triggers a WebSearch. Use site: to filter by portal.
# The scanner extracts title, URL, and company from results.
search_queries:
# -- Ashby --
- name: Ashby — AI PM
query: 'site:jobs.ashbyhq.com "AI Product Manager" OR "Senior Product Manager AI" remote'
enabled: true
- name: Ashby — Solutions Architect
query: 'site:jobs.ashbyhq.com "Solutions Architect" AI OR automation remote'
enabled: true
- name: Ashby — AI Engineer
query: 'site:jobs.ashbyhq.com "AI Engineer" OR "LLM Engineer" OR "Forward Deployed" remote'
enabled: true
- name: Ashby — Agentic
query: 'site:jobs.ashbyhq.com "Agentic" OR "AI Agent" OR "Automation Architect" remote'
enabled: true
# -- Greenhouse --
- name: Greenhouse — AI PM
query: 'site:boards.greenhouse.io OR site:job-boards.greenhouse.io "AI Product Manager" OR "Senior Product Manager" AI remote'
enabled: true
- name: Greenhouse — SA & FDE
query: 'site:boards.greenhouse.io OR site:job-boards.greenhouse.io "Solutions Architect" OR "Forward Deployed" AI remote'
enabled: true
- name: Greenhouse — AI Engineer
query: 'site:boards.greenhouse.io OR site:job-boards.greenhouse.io "AI Engineer" OR "LLM" OR "Agentic" remote'
enabled: true
# -- Workable --
- name: Workable — AI Roles
query: 'site:apply.workable.com "AI" "Product Manager" OR "Solutions Architect" OR "AI Engineer" remote'
enabled: true
# -- No-Code / Low-Code / Automation --
- name: Ashby — No-Code & Automation
query: 'site:jobs.ashbyhq.com "no-code" OR "low-code" OR "automation engineer" OR "n8n" OR "Make" OR "Airtable" remote senior'
enabled: true
- name: Greenhouse — No-Code & Automation
query: 'site:job-boards.greenhouse.io "no-code" OR "low-code" OR "automation engineer" OR "business systems" senior remote'
enabled: true
- name: GTM Engineer — All portals
query: '"GTM Engineer" OR "RevOps Engineer" OR "Growth Engineer" automation Airtable OR Make OR Clay remote'
enabled: true
# -- Voice AI & Conversational AI --
- name: Voice AI — FDE & SA
query: 'site:job-boards.greenhouse.io OR site:jobs.ashbyhq.com "Voice AI" OR "Conversational AI" OR "Speech" "Solutions" OR "Forward Deployed" OR "Customer Engineer"'
enabled: true
- name: Voice AI — AI Engineer
query: 'site:job-boards.greenhouse.io OR site:jobs.ashbyhq.com "Voice" OR "Speech" "AI Engineer" OR "Deployment" OR "Integration"'
enabled: true
# -- Contact Center AI --
- name: Contact Center AI — SA & SE
query: '"contact center" OR "customer service" "AI" "Solutions Architect" OR "Solutions Engineer" OR "Forward Deployed" remote'
enabled: true
# -- FDE specific (cross-portal) --
- name: FDE & Deployed Engineer — All portals
query: '"Forward Deployed Engineer" OR "Deployed Engineer" OR "Deployment Engineer" AI site:job-boards.greenhouse.io OR site:jobs.ashbyhq.com OR site:jobs.lever.co'
enabled: true
# -- Remote-friendly Europe boards --
- name: Remotive — AI/DevRel/SA/FDE
query: 'site:remotive.com "AI Engineer" OR "Developer Advocate" OR "Solutions Architect" OR "Forward Deployed" OR "DevRel" Europe'
enabled: true
- name: WeWorkRemotely — AI & DX
query: 'site:weworkremotely.com "AI" OR "DevRel" OR "Solutions Engineer" OR "Forward Deployed" OR "Founding Engineer"'
enabled: true
- name: Working Nomads — AI/DevRel/SA
query: 'site:workingnomads.com "AI Engineer" OR "Developer Advocate" OR "Solutions Architect" OR "Forward Deployed"'
enabled: true
- name: EU Remote Jobs — AI/DevRel/SA
query: 'site:euremotejobs.com "AI" OR "DevRel" OR "Solutions Architect" OR "Forward Deployed" OR "Founding Engineer"'
enabled: true
- name: RemoteOK — AI/DevRel/SA
query: 'site:remoteok.com "AI Engineer" OR "Developer Advocate" OR "Solutions Architect" OR "Forward Deployed" OR "Founding Engineer"'
enabled: true
# -- Specialized AI / Dev-Tools / FDE boards --
- name: ai-jobs.net — DevRel/SA/FDE
query: 'site:ai-jobs.net "Developer Advocate" OR "Solutions Architect" OR "Forward Deployed" OR "DevRel" remote Europe'
enabled: true
- name: ai-jobs.net — Founding/Applied AI
query: 'site:ai-jobs.net "Founding Engineer" OR "Applied AI Engineer" OR "Founding" remote'
enabled: true
- name: fwddeploy.com — Forward Deployed roles
query: 'site:fwddeploy.com "Forward Deployed" OR "Deployed Engineer" remote Europe OR EMEA'
enabled: true
- name: YC Jobs — DevRel/SA/FDE/Founding
query: 'site:ycombinator.com/jobs OR site:workatastartup.com "Forward Deployed" OR "Developer Advocate" OR "Founding Engineer" OR "Solutions Architect" remote'
enabled: true
- name: YC Jobs — Applied AI
query: 'site:workatastartup.com "Applied AI" OR "AI Engineer" OR "AI Agent" remote Europe'
enabled: true
# -- Spanish market specialized (high-value for Madrid/Barcelona-based candidates) --
- name: Manfred — Tech Senior España
query: 'site:getmanfred.com/en/job-offers "Solutions Architect" OR "DevRel" OR "Forward Deployed" OR "AI Engineer" OR "Founding"'
enabled: true
- name: Manfred — Remote AI/Senior
query: 'site:getmanfred.com "remote" "AI" OR "Senior" OR "Staff" OR "Lead"'
enabled: true
- name: Tecnoempleo — España IT
query: 'site:tecnoempleo.com "AI Engineer" OR "Solutions Architect" OR "DevRel" OR "Forward Deployed" OR "Founding Engineer"'
enabled: true
- name: Tecnoempleo — Remoto Senior
query: 'site:tecnoempleo.com "remoto" OR "remote" Senior "AI" OR "Architect" OR "Lead"'
enabled: true
- name: JobFluent — Spain startups
query: 'site:jobfluent.com Madrid OR Barcelona "AI" OR "Engineer" OR "Solutions" OR "DevRel"'
enabled: true
- name: Welcome to the Jungle — Spain tech
query: 'site:welcometothejungle.com Spain OR Madrid OR Barcelona "AI Engineer" OR "Solutions Architect" OR "DevRel" OR "Forward Deployed"'
enabled: true
# -- DevRel-specific boards --
- name: DevRelX Jobs
query: 'site:devrelx.com/jobs remote OR Europe OR EMEA'
enabled: true
- name: TrueUp — DevRel roles
query: 'site:trueup.io/devrel OR site:trueup.io "Developer Advocate" OR "DevRel" remote Europe'
enabled: true
- name: Remote Rocketship — DevRel
query: 'site:remoterocketship.com/jobs/developer-relations OR site:remoterocketship.com "DevRel" remote'
enabled: true
- name: DevRel Job board
query: 'site:devreljob.com remote OR Europe OR EMEA'
enabled: true
# -- European / global aggregators --
- name: Himalayas — Remote AI/Dev-tools
query: 'site:himalayas.app "AI Engineer" OR "Solutions Architect" OR "Developer Advocate" OR "Forward Deployed" OR "Founding Engineer" Europe'
enabled: true
- name: Jooble — España Tech Senior
query: 'site:jooble.org "AI Engineer" OR "Solutions Architect" OR "DevRel" Madrid OR remote España'
enabled: true
- name: EU Data Jobs — AI/ML Europe
query: 'site:eudatajobs.com "AI" OR "ML" OR "Data" "Engineer" OR "Architect" remote Europe'
enabled: true
- name: HN Who's Hiring — Remote AI
query: 'site:news.ycombinator.com OR site:hnrss.org "AI Engineer" OR "Forward Deployed" OR "DevRel" OR "Founding Engineer" remote'
enabled: true
# -- Türkiye / Turkey job portals --
# WebSearch queries for Turkish job boards (no public ATS APIs).
# [CUSTOMIZE] Replace keywords with your target roles in Turkish.
- name: Kariyer.net — Backend / Software Engineer
query: 'site:kariyer.net "Backend Developer" OR "Software Engineer" OR "Yazılım Geliştirici" OR "Backend Geliştirici" Ankara OR Istanbul OR uzaktan'
enabled: false
- name: Kariyer.net — Frontend Engineer
query: 'site:kariyer.net "Frontend Developer" OR "React Developer" OR "Frontend Geliştirici" Ankara OR Istanbul OR uzaktan'
enabled: false
- name: Yenibiris.com — Software Engineer
query: 'site:yenibiris.com "Software Engineer" OR "Backend Developer" OR "Frontend Developer" OR "Yazılım Geliştirici"'
enabled: false
- name: Secretcv.com — Tech Roles
query: 'site:secretcv.com "Software Engineer" OR "Backend" OR "Frontend" OR "Full Stack"'
enabled: false
- name: İşin Olsun — Startup / Tech
query: 'site:isinolsun.com "Yazılım" OR "Software" OR "Backend" OR "Frontend" OR "Full Stack"'
enabled: false
- name: LinkedIn — Turkey Tech Roles
query: 'site:linkedin.com/jobs "Software Engineer" OR "Backend Engineer" OR "Frontend Engineer" Turkey OR Türkiye OR Ankara OR Istanbul'
enabled: false
# -- Tracked companies --
# Companies whose career pages are checked directly.
# scan_method: playwright (default), websearch, local_parser
# For Greenhouse companies, add api: field for faster structured JSON access.
#
# Provider routing (scan.mjs):
# By default each entry is auto-detected from `careers_url` against the
# loaded providers in providers/*.mjs (local-parser, ashby, greenhouse, lever).
# local-parser runs first when parser.command + parser.script are set.
#
# Optional fields on a tracked_companies entry:
# provider: <id> — force a specific provider, skipping detect().
# transport: http — reserved for future transports. Defaults to http.
#
# For SSR/static career pages, add parser.command + parser.script. The command
# can be python3, node, or another local executable. The script must print JSON
# jobs to stdout: [{ "title": "...", "url": "...", "location": "..." }]
#
# Generic local parser examples. Most parser scripts are company-specific and
# already know their target careers URL. `args` are optional and can help the
# parser author (reuse across companies, debug flags, JSON snapshots, etc.).
#
# JavaScript parser:
# - name: Example JS Company
# careers_url: https://example.com/careers
# scan_method: local_parser
# parser:
# command: node
# script: scripts/parsers/example-js-company-jobs.js
# format: jobs-json-v1
# enabled: true
#
# Python parser:
# - name: Example Python Company
# careers_url: https://example.org/jobs
# scan_method: local_parser
# parser:
# command: python3
# script: scripts/parsers/example_python_company_jobs.py
# format: jobs-json-v1
# enabled: true
# ── Provider auto-detection ───────────────────────────────────────
# scan.mjs auto-loads everything in providers/*.mjs and tries each
# provider's detect() in order. URL patterns recognized:
#
# greenhouse job-boards(.eu)?.greenhouse.io/<slug> (or api: field)
# ashby jobs.ashbyhq.com/<slug>
# lever jobs.(eu.)?lever.co/<slug>
# workable apply.workable.com/<slug>
# smartrecruiters (careers|jobs).smartrecruiters.com/<slug>
# recruitee <slug>.recruitee.com
# bamboohr <tenant>.bamboohr.com (or api: field)
# breezy <tenant>.breezy.hr (or api: field)
# solidjobs solid.jobs/public-api/offers/<division>
# comeet api: https://www.comeet.co/careers-api/2.0/company/<uid>/positions?token=<token>
# personio <slug>.jobs.personio.(de|com)
# pinpoint <slug>.pinpointhq.com
# rippling ats.rippling.com/<slug>/jobs
# jibeapply <slug>.jibeapply.com/jobs (or provider: jibeapply + api: for a branded host's own /jobs path)
# tencent careers.tencent.com (zh-CN board; each keywords: entry queried server-side, results deduped)
# workday <tenant>.wd<N>.myworkdayjobs.com[/<locale>]/<board>
# avature <tenant>.avature.net (branded host → provider: avature + api: the /careers/SearchJobs URL)
# amazon amazon.jobs (global board; provider: amazon + an amazon: filter block, see below)
# successfactors *.successfactors.(eu|com) / *.jobs2web.com (SAP SF Recruiting Marketing / RMK boards;
# branded hosts like jobs.<company>.com need provider: successfactors + api: <board origin>)
#
# When the public careers URL is a branded custom domain (e.g.
# careers.adyen.com), set `provider: smartrecruiters` explicitly to
# bypass detect(). The `provider:` field wins over auto-detection.
#
# Some providers are job boards / aggregators with no per-company careers
# URL to detect, so they must be selected with an explicit `provider:`
# field: 4dayweek, arbeitnow, arbeitsagentur, getonbrd, glints, himalayas, ibm, jobicy,
# jobstreet, justjoin, landingjobs, nofluffjobs, remoteok, remotive, thehub,
# weworkremotely, workingnomads. Examples for every built-in provider are below.
# ── Built-in provider examples ────────────────────────────────────
# Commented config for each provider in providers/. Copy a stanza into
# tracked_companies, uncomment, and adjust. Auto-detected providers only
# need careers_url; the rest need provider: plus any fields shown.
#
# -- Auto-detected company ATS (careers_url is enough) --
#
# - name: Example BambooHR Co
# careers_url: https://exampleco.bamboohr.com/careers # any *.bamboohr.com host
# enabled: true
#
# - name: Example Breezy Co
# careers_url: https://exampleco.breezy.hr # any *.breezy.hr host
# enabled: true
#
# - name: Example Pinpoint Co
# careers_url: https://exampleco.pinpointhq.com # any *.pinpointhq.com host
# enabled: true
#
# - name: Example Rippling Co
# careers_url: https://ats.rippling.com/exampleco/jobs # any ats.rippling.com/<slug>
# enabled: true
#
# - name: Example JibeApply Co
# careers_url: https://exampleco.jibeapply.com/jobs # any *.jibeapply.com/jobs host
# max_pages: 50 # optional page cap (10 jobs/page, default 50, max 500) —
# # raise it for a tenant with 500+ open postings (a warning
# # is logged if the cap truncates real results)
# enabled: true
#
# - name: 腾讯 (Tencent)
# careers_url: https://careers.tencent.com/search.html # any https://careers.tencent.com URL
# keywords: ["AI", "大模型"] # each keyword is a separate server-side query, results deduped;
# # omit keywords to pull the whole board
# max_pages: 20 # optional per-keyword page cap (100 posts/page, default 20)
# enabled: true
#
# - name: Example Workday Co
# careers_url: https://exampleco.wd5.myworkdayjobs.com/en-US/exampleco-careers # any <tenant>.wd<N>.myworkdayjobs.com
# max_pages: 100 # optional page cap (20 jobs/page, default 100, max 1500) —
# # raise it for a tenant with 2000+ open postings (a warning
# # is logged if the cap truncates real results)
# enabled: true
#
# - name: Example Avature Co
# # Avature career site. Auto-detects any *.avature.net host; for a branded
# # host that proxies Avature, set provider: avature + api: the SearchJobs URL.
# careers_url: https://exampleco.avature.net/careers/SearchJobs
# max_pages: 50 # optional page cap (only 6 jobs/page — Avature's hard
# # limit — so ~300 postings by default, max 200 pages)
# enabled: true
#
# - name: Example SuccessFactors Co
# # SAP SuccessFactors Recruiting Marketing (RMK, ex-jobs2web) branded board —
# # what many large industrials run at their own domain (jobs.<company>.com).
# # Branded hosts carry no "successfactors" string, so set provider: explicitly
# # and point api: at the board origin (host only, no path). The provider pulls
# # the public /tile-search-results fragment (zero-token, no auth).
# careers_url: https://www.exampleco.com/careers # public/branded careers page
# provider: successfactors
# api: https://jobs.exampleco.com # RMK board origin
# enabled: true
#
# - name: SolidJobs — Engineering
# # division path is required; one of:
# # it, engineering, marketing, sales, hr, logistics, finances, other
# careers_url: https://solid.jobs/public-api/offers/engineering
# enabled: true
#
# -- Job boards / aggregators (no careers_url; set provider: explicitly) --
#
# - name: Amazon / AWS # global amazon.jobs board
# provider: amazon
# amazon: # keys pass straight through to the search.json API
# normalized_country_code: [DEU] # array → facet filter (…[]=DEU); REQUIRED-ish,
# # the board is 100k+ postings otherwise
# base_query: machine learning # optional keyword filter
# # loc_query: Berlin # optional free-text location (fuzzy, not a hard filter)
# enabled: true
#
# - name: 4 Day Week # 4-day-week / reduced-hours roles
# provider: 4dayweek
# max_pages: 3 # optional page cap (25 jobs/page, default 3, max 50)
# enabled: true
#
# - name: The Hub # Nordic/EU startup board
# provider: thehub
# max_pages: 3 # optional page cap (15 jobs/page, default 3, max 67)
# enabled: true
#
# - name: Arbeitnow # EU/DACH-heavy board, newest-first
# provider: arbeitnow
# max_pages: 3 # optional page cap (100 jobs/page, default 3, max 50)
# enabled: true
#
# - name: Arbeitsagentur — AI Roles # German federal jobs API
# provider: arbeitsagentur
# arbeitsagentur:
# keywords: ["AI Engineer", "Machine Learning"] # required (>=1)
# wo: Berlin # optional anchor city ('' / omit = all of Germany)
# umkreis: 50 # optional km radius around wo (0-1000)
# days: 30 # optional recency window (1-1000)
# size: 100 # optional results per keyword (1-100)
# enabled: true
#
# - name: Glints — Indonesia # SE-Asia aggregator (SG/ID/MY/VN)
# provider: glints
# searchKeywords: "AI Engineer"
# countryCode: ID # optional 2-letter code (default ID)
# enabled: true
#
# - name: Jobstreet — Indonesia # SEEK aggregator
# provider: jobstreet
# searchKeywords: "Software Engineer"
# siteKey: ID-Main # SEEK site key (ID-Main, SG-Main, MY-Main)
# searchLocation: "" # optional location filter
# enabled: true
#
# - name: IBM — Germany SWE # IBM global careers
# provider: ibm
# ibm:
# country: Germany # optional facet filter
# categories: ["Software Engineering"] # optional facet filter
# enabled: true
#
# - name: Dassault Systèmes # single-company; Exalead card_search_api
# careers_url: https://www.3ds.com/careers/jobs # auto-detects on *.3ds.com
# provider: dassault # optional — 3ds.com host also auto-detects
# enabled: true # ~445 English postings (zero-token XML)
#
# - name: Deutsche Bahn # single-company; db.jobs Avature front
# careers_url: https://db.jobs # auto-detects; SSR search, paginated over HTTP
# provider: deutschebahn # optional — db.jobs host also auto-detects
# enabled: true
#
# - name: Heckler & Koch # single-company; SSR Nuxt vacancy list
# careers_url: https://www.heckler-koch.com/de/Karriere/Stellenangebote
# provider: hecklerkoch # optional — heckler-koch.com host also auto-detects
# enabled: true
#
# - name: Rheinmetall # single-company; SSR Nuxt vacancy list
# careers_url: https://www.rheinmetall.com/en/career/vacancies
# provider: rheinmetall # optional — rheinmetall.com host also auto-detects
# enabled: true
#
# - name: OHB # Cornerstone OnDemand (csod) branded site
# careers_url: https://career-ohb.csod.com/ux/ats/careersite/4/home?c=career-ohb
# provider: csod # anonymous-JWT bootstrap, then public search API
# enabled: true
#
# - name: RENK # softgarden hosted job widget
# careers_url: https://renk-group.softgarden.io/de/widgets/jobs
# provider: softgarden
# enabled: true
#
# - name: Mercedes-Benz # BeeSite (milch & zucker) search backend
# careers_url: https://mercedes-benz.app.beesite.de # the *.app.beesite.de host, not the branded front
# provider: beesite
# enabled: true
#
# -- Remote-job feeds (no careers_url, no extra fields) --
# title_filter / location_filter defined above still apply.
#
# - name: Himalayas
# provider: himalayas
# - name: Landing.jobs # tech board, Europe-focused
# provider: landingjobs
# enabled: true
#
# - name: RemoteOK
# provider: remoteok
# enabled: true
#
# - name: Remotive
# provider: remotive
# enabled: true
#
# - name: Get on Board
# provider: getonbrd
# enabled: true
#
# - name: NoDesk
# provider: nodesk
# enabled: true
#
# - name: We Work Remotely
# provider: weworkremotely
# enabled: true
#
# - name: Working Nomads
# provider: workingnomads
# enabled: true
#
# - name: Jobicy
# provider: jobicy
# enabled: true
#
# - name: EchoJobs # tech jobs aggregated from company ATS boards
# provider: echojobs
# max_pages: 3 # 100 jobs/page; raise for deeper coverage
# enabled: true
#
# - name: Hacker News "Who is hiring?" # monthly "Ask HN: Who is hiring?" thread
# provider: hackernews
# enabled: true
#
# - name: Jobspresso # curated remote roles (public WordPress feed)
# provider: jobspresso
# enabled: true
#
# - name: The Muse # board-wide public jobs API
# provider: themuse
# enabled: true
#
# - name: LaraJobs # Laravel / PHP jobs (public RSS feed)
# provider: larajobs
# enabled: true
#
# Comeet needs the full careers-api URL (it carries a per-tenant token that a
# branded careers page does not expose), so set it via the api: field — e.g.:
#
# - name: Spark Hire
# careers_url: https://www.comeet.com/jobs/spark-hire/30.005
# api: https://www.comeet.co/careers-api/2.0/company/30.005/positions?token=YOUR_TOKEN
# enabled: true
#
# Find <uid> and <token> in Comeet under Settings → Sourcing → Careers Website →
# Integrated website → Careers API.
#
# Personio (common across DACH/EU) auto-detects from its careers host and
# pulls the public no-auth XML feed at <slug>.jobs.personio.de/xml — e.g.:
#
# - name: Example GmbH
# careers_url: https://example-gmbh.jobs.personio.de
# enabled: true
#
# Teamtailor auto-detects from a <slug>.teamtailor.com careers host and reads
# the public no-auth /jobs.rss feed — e.g.:
#
# - name: Example Co
# careers_url: https://example.teamtailor.com
# enabled: true
#
# # If the tenant fronts a branded careers domain, set provider: teamtailor
# # explicitly and point careers_url at that host (it serves the same feed):
# - name: Example Co (branded)
# careers_url: https://careers.example.com
# provider: teamtailor
# enabled: true
#
# Some JibeApply sites run on a branded custom domain rather than
# *.jibeapply.com (iCIMS acquired Jibe in 2019, and tenants can front the
# same API on their own domain). Set provider: jibeapply and point api: at
# the branded host's /api/jobs endpoint — e.g.:
#
# - name: Booking.com
# careers_url: https://jobs.booking.com/booking/jobs
# api: https://jobs.booking.com/api/jobs
# provider: jibeapply
# enabled: true
# -- Company aliases (optional) --
# Map alternate company names to a single canonical label so the scanner's
# company+role dedup matches your tracker. The scanner keys dedup on the name a
# provider returns — usually the ATS org (e.g. Greenhouse "Intercom") — which
# may differ from the brand you track (e.g. "Fin"). Without an alias, the same
# role is re-scanned and re-evaluated every run because "intercom::role" never
# matches "fin::role" in data/applications.md.
#
# Format: `CanonicalName: [alias, ...]`. Every alias AND the canonical name
# resolve to the canonical label (case-insensitive). Companies with no entry are
# unaffected. Combined with title normalization, this suppresses URL-new
# duplicates caused by requisition URL changes and per-location title splits
# ("Engineer (Berlin)" vs "Engineer"). It does not classify repost patterns or
# produce `postingChurn` evidence; detect-reposts.mjs and company-history.mjs own
# that post-tracking layer.
#
# company_aliases:
# Fin: [Intercom]
tracked_companies:
# -- AI Labs & LLM providers --
- name: Anthropic
careers_url: https://job-boards.greenhouse.io/anthropic
api: https://boards-api.greenhouse.io/v1/boards/anthropic/jobs
enabled: true
- name: OpenAI
careers_url: https://openai.com/careers
scan_method: websearch
scan_query: 'site:openai.com/careers "Solutions" OR "Forward Deployed" OR "AI Engineer"'
enabled: true
# -- Voice AI & Conversational AI --
- name: PolyAI
careers_url: https://job-boards.eu.greenhouse.io/polyai
api: https://boards-api.greenhouse.io/v1/boards/polyai/jobs
notes: "UK. Voice AI for enterprise contact centers."
enabled: true
- name: Parloa
careers_url: https://job-boards.eu.greenhouse.io/parloa
api: https://boards-api.greenhouse.io/v1/boards/parloa/jobs
notes: "Berlin EMEA. Voice AI enterprise."
enabled: true
- name: Intercom
careers_url: https://job-boards.greenhouse.io/intercom
api: https://boards-api.greenhouse.io/v1/boards/intercom/jobs
notes: "Dublin EMEA. Fin AI agent."
enabled: true
- name: Hume AI
careers_url: https://job-boards.greenhouse.io/humeai
api: https://boards-api.greenhouse.io/v1/boards/humeai/jobs
notes: "NYC. Empathic voice AI."
enabled: true
- name: ElevenLabs
careers_url: https://jobs.ashbyhq.com/elevenlabs
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/elevenlabs'
notes: "Voice AI TTS leader."
enabled: true
- name: Deepgram
careers_url: https://jobs.ashbyhq.com/deepgram
scan_method: websearch
scan_query: 'site:deepgram.com/careers OR "deepgram" "Solutions" OR "AI Engineer" site:jobs.ashbyhq.com'
notes: "STT/TTS APIs."
enabled: true
- name: Vapi
careers_url: https://jobs.ashbyhq.com/vapi
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/vapi'
notes: "Voice AI infrastructure."
enabled: true
- name: Bland AI
careers_url: https://jobs.ashbyhq.com/bland
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/bland'
notes: "Voice phone agents. $65M Series B."
enabled: true
# -- AI-native platforms (FDE/SA teams) --
- name: Retool
careers_url: https://retool.com/careers
scan_method: websearch
scan_query: 'site:retool.com/careers "Deployed" OR "AI" OR "Solutions"'
notes: "London. Popularized Deployed Engineer role."
enabled: true
- name: Airtable
careers_url: https://job-boards.greenhouse.io/airtable
api: https://boards-api.greenhouse.io/v1/boards/airtable/jobs
notes: "No-code + AI platform."
enabled: true
- name: Vercel
careers_url: https://job-boards.greenhouse.io/vercel
api: https://boards-api.greenhouse.io/v1/boards/vercel/jobs
notes: "AI SDK, v0.dev. Frontend AI tooling."
enabled: true
- name: Temporal
careers_url: https://job-boards.greenhouse.io/temporal
api: https://boards-api.greenhouse.io/v1/boards/temporal/jobs
notes: "Workflow orchestration."
enabled: true
- name: Arize AI
careers_url: https://job-boards.greenhouse.io/arizeai
api: https://boards-api.greenhouse.io/v1/boards/arizeai/jobs
notes: "LLMOps / AI observability."
enabled: true
- name: RunPod
careers_url: https://job-boards.greenhouse.io/runpod
api: https://boards-api.greenhouse.io/v1/boards/runpod/jobs
notes: "GPU cloud for AI."
enabled: true
- name: Weights & Biases (CoreWeave)
careers_url: https://job-boards.greenhouse.io/coreweave
api: https://boards-api.greenhouse.io/v1/boards/coreweave/jobs
notes: "Acquired by CoreWeave (announced March 2025, closed May 2025). W&B roles now live on CoreWeave's Greenhouse board. Old Lever URL (jobs.lever.co/wandb) returns 404."
enabled: true
- name: Glean
careers_url: https://job-boards.greenhouse.io/gleanwork
api: https://boards-api.greenhouse.io/v1/boards/gleanwork/jobs
notes: "Enterprise AI search."
enabled: true
# -- Contact Center AI & CX --
- name: Ada
careers_url: https://job-boards.greenhouse.io/ada
scan_method: websearch
scan_query: '"ada.cx" OR "ada" "AI" "Solutions" OR "Engineer" site:jobs.ashbyhq.com OR site:job-boards.greenhouse.io'
notes: "Toronto + remote. AI customer service."
enabled: true
- name: LivePerson
careers_url: https://liveperson.com/company/careers
scan_method: websearch
scan_query: 'site:liveperson.com/careers OR "liveperson" "Solutions" OR "AI" site:job-boards.greenhouse.io'
notes: "Remote EMEA. Conversational AI enterprise."
enabled: true
- name: Sierra
careers_url: https://jobs.ashbyhq.com/sierra
scan_method: websearch
scan_query: '"sierra.ai" "AI" "Forward Deployed" OR "Applied" OR "Solutions" site:jobs.ashbyhq.com'
notes: "Bret Taylor (ex-CEO Salesforce). AI customer agents."
enabled: true
- name: Decagon
careers_url: https://jobs.ashbyhq.com/decagon
scan_method: websearch
scan_query: '"decagon" "AI" "Forward Deployed" OR "Solutions" site:jobs.ashbyhq.com'
notes: "AI customer support agents."
enabled: true
# -- Enterprise comms & contact center --
- name: Talkdesk
careers_url: https://www.talkdesk.com/careers
scan_method: websearch
scan_query: 'site:talkdesk.com/careers "AI" OR "Solutions Architect" OR "AI Engineer"'
notes: "Lisbon. Contact center AI. EMEA friendly."
enabled: true
- name: Twilio
careers_url: https://www.twilio.com/en-us/company/jobs
scan_method: websearch
scan_query: 'site:twilio.com/company/jobs "AI" OR "Voice" "Solutions" OR "Architect"'
notes: "Voice/messaging infrastructure."
enabled: true
- name: Dialpad
careers_url: https://www.dialpad.com/careers
scan_method: websearch
scan_query: '"dialpad" "AI" "Solutions" OR "Engineer" site:job-boards.greenhouse.io OR site:jobs.ashbyhq.com'
notes: "Voice AI for business comms."
enabled: true
- name: Gong
careers_url: https://www.gong.io/careers
scan_method: websearch
scan_query: 'site:gong.io/careers "AI" OR "Solutions" OR "Architect"'
notes: "Revenue intelligence with voice AI."
enabled: true
- name: Genesys
careers_url: https://www.genesys.com/careers
scan_method: websearch
scan_query: 'site:genesys.com/careers "AI" "Solutions Architect" OR "AI Engineer"'
notes: "Contact center cloud + AI."
enabled: true
- name: Salesforce
careers_url: https://careers.salesforce.com
scan_method: websearch
scan_query: 'site:careers.salesforce.com "Forward Deployed" OR "AI Engineer" OR "Agentforce"'
notes: "Agentforce = AI agents platform."
enabled: true
# -- AI infra & LLMOps --
- name: Langfuse
careers_url: https://langfuse.com/careers
scan_method: websearch
scan_query: '"langfuse" careers OR jobs "engineer" OR "solutions"'
notes: "Berlin. LLMOps / observability."
enabled: true
- name: Lindy
careers_url: https://jobs.ashbyhq.com/lindy
scan_method: websearch
scan_query: '"lindy.ai" "AI" "Forward Deployed" OR "Solutions" site:jobs.ashbyhq.com'
notes: "AI agent management platform."
enabled: true
- name: Cognigy
careers_url: https://careers.cognigy.com
scan_method: websearch
scan_query: '"cognigy" careers "AI" OR "Solutions" OR "Engineer"'
notes: "Dusseldorf EMEA. Conversational AI enterprise."
enabled: true
- name: Speechmatics
careers_url: https://job-boards.greenhouse.io/speechmatics
api: https://boards-api.greenhouse.io/v1/boards/speechmatics/jobs
notes: "Cambridge UK. Speech recognition platform."
enabled: true
# -- No-Code/Low-Code & Automation --
- name: n8n
careers_url: https://jobs.ashbyhq.com/n8n
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/n8n'
notes: "Berlin + remote EU/US. Workflow automation."
enabled: true
- name: Zapier
careers_url: https://jobs.ashbyhq.com/zapier
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/zapier'
notes: "Remote-first. Automation platform leader."
enabled: true
- name: Make.com (Celonis)
careers_url: https://www.make.com/en/careers
scan_method: websearch
scan_query: 'site:make.com/en/careers OR "make.com" "engineer" OR "solutions" site:jobs.ashbyhq.com'
notes: "Celonis parent company. Automation platform."
enabled: true
- name: Boomi
careers_url: https://job-boards.greenhouse.io/boomilp
api: https://boards-api.greenhouse.io/v1/boards/boomilp/jobs
notes: "Integration and automation platform."
enabled: true
# -- Ashby-based (Playwright direct) --
- name: Cohere
careers_url: https://jobs.ashbyhq.com/cohere
notes: "AI/LLM provider. Toronto + remote."
enabled: true
- name: LangChain
careers_url: https://jobs.ashbyhq.com/langchain
notes: "LangChain/LangSmith framework."
enabled: true
- name: Pinecone
careers_url: https://jobs.ashbyhq.com/pinecone
notes: "Vector database."
enabled: true
# -- Lever-based (Playwright direct) --
- name: Mistral AI
careers_url: https://jobs.lever.co/mistral
notes: "Paris. European AI lab."
enabled: true
- name: Palantir
careers_url: https://jobs.lever.co/palantir
notes: "FDE roles. Mostly US/London."
enabled: true
# -- Canada / Vancouver tech & AI --
- name: Later
careers_url: https://job-boards.greenhouse.io/later
api: https://boards-api.greenhouse.io/v1/boards/later/jobs
notes: "Vancouver/Toronto. Social media and creator platform."
enabled: true
- name: Safari AI
careers_url: https://job-boards.greenhouse.io/safariai
api: https://boards-api.greenhouse.io/v1/boards/safariai/jobs
notes: "Miami HQ / Vancouver engineering. Computer vision AI for operations in the physical economy."
enabled: true
- name: Hootsuite
careers_url: https://job-boards.greenhouse.io/hootsuite
api: https://boards-api.greenhouse.io/v1/boards/hootsuite/jobs
notes: "Vancouver. Social media management platform."
enabled: true
- name: Klue
careers_url: https://jobs.ashbyhq.com/klue
notes: "Vancouver. Competitive intelligence SaaS."
enabled: true
- name: Glacis AI
careers_url: https://jobs.ashbyhq.com/glacis-ai
notes: "Ho Chi Minh City. AI agents for supply chain and logistics workflows."
enabled: true
- name: Sanctuary AI
careers_url: https://jobs.lever.co/sanctuary
notes: "Vancouver. Humanoid robotics and embodied AI."
enabled: true
- name: Semios
careers_url: https://apply.workable.com/semios/
scan_method: websearch
scan_query: 'site:apply.workable.com/semios'
notes: "Vancouver. Agtech and crop intelligence platform."
enabled: true
# -- European tech (EMEA-friendly) --
- name: Factorial
careers_url: https://job-boards.greenhouse.io/factorial
scan_method: websearch
scan_query: 'site:jobs.greenhouse.io/factorial'
notes: "Barcelona. HR SaaS unicorn."
enabled: true
- name: Attio
careers_url: https://jobs.ashbyhq.com/attio
scan_method: websearch
scan_query: 'site:attio.com/careers OR site:jobs.ashbyhq.com/attio'
notes: "Remote EU. AI-native CRM. Series B $52M."
enabled: true
- name: Tinybird
careers_url: https://jobs.ashbyhq.com/tinybird
scan_method: websearch
scan_query: 'site:tinybird.co/careers OR site:jobs.ashbyhq.com/tinybird'
notes: "Remote. Real-time data platform."
enabled: true
- name: Clarity AI
careers_url: https://jobs.lever.co/clarity-ai
scan_method: websearch
scan_query: 'site:clarity.ai/careers OR site:jobs.lever.co/clarity-ai'
notes: "Madrid/Remote. Sustainability analytics with AI."
enabled: true
- name: Travelperk
careers_url: https://jobs.ashbyhq.com/travelperk
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/travelperk'
notes: "Barcelona. Business travel unicorn."
enabled: true
# -- DACH & European AI ecosystem --
# All entries below have been verified against the Greenhouse / Ashby /
# Lever / Workable APIs or live job boards. Greenhouse boards expose a
# JSON API at https://boards-api.greenhouse.io/v1/boards/{slug}/jobs which
# the scanner can hit directly via the api: field.
# -- DACH AI labs & frontier model providers --
- name: Aleph Alpha
careers_url: https://jobs.ashbyhq.com/AlephAlpha
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/AlephAlpha'
notes: "Heidelberg DE. Sovereign European LLM provider, enterprise & government focus."
enabled: true
- name: DeepL
careers_url: https://jobs.ashbyhq.com/DeepL
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/DeepL'
notes: "Cologne DE. Translation & language AI. 60+ open roles, EU/DACH heavy."
enabled: true
- name: Black Forest Labs
careers_url: https://job-boards.greenhouse.io/blackforestlabs
api: https://boards-api.greenhouse.io/v1/boards/blackforestlabs/jobs
notes: "Freiburg DE / SF. FLUX image models, ex-Stable Diffusion team."
enabled: true
- name: Helsing
careers_url: https://job-boards.greenhouse.io/helsing
api: https://boards-api.greenhouse.io/v1/boards/helsing/jobs
notes: "Munich / Berlin / London / Paris. Defence AI unicorn. 100+ roles, ML & FDE."
enabled: true
# -- DACH enterprise & SaaS (AI-heavy) --
- name: Celonis
careers_url: https://job-boards.greenhouse.io/celonis
api: https://boards-api.greenhouse.io/v1/boards/celonis/jobs
notes: "Munich / NYC. Process intelligence, Applied AI Engineer roles, Field CTOs."
enabled: true
- name: Contentful
careers_url: https://job-boards.greenhouse.io/contentful
api: https://boards-api.greenhouse.io/v1/boards/contentful/jobs
notes: "Berlin / Denver. Headless CMS, AI content workflows."
enabled: true
- name: GetYourGuide
careers_url: https://job-boards.greenhouse.io/getyourguide
api: https://boards-api.greenhouse.io/v1/boards/getyourguide/jobs
notes: "Berlin. Travel marketplace, ML & data platform roles."
enabled: true
- name: HelloFresh
careers_url: https://job-boards.greenhouse.io/hellofresh
api: https://boards-api.greenhouse.io/v1/boards/hellofresh/jobs
notes: "Berlin. Meal kit unicorn, large data/ML org."
enabled: true
# -- DACH fintech --
- name: N26
careers_url: https://job-boards.greenhouse.io/n26
api: https://boards-api.greenhouse.io/v1/boards/n26/jobs
notes: "Berlin / Barcelona. Mobile bank, ~50 roles, ML & risk."
enabled: true
- name: Trade Republic
careers_url: https://job-boards.greenhouse.io/traderepublicbank
api: https://boards-api.greenhouse.io/v1/boards/traderepublicbank/jobs
notes: "Berlin / London / Paris. Neobroker, ~50 roles, platform & data."
enabled: true
- name: SumUp
careers_url: https://job-boards.greenhouse.io/sumup
api: https://boards-api.greenhouse.io/v1/boards/sumup/jobs
notes: "Berlin / London. Payments fintech, EU + LATAM hiring."
enabled: true
- name: Qonto
careers_url: https://jobs.lever.co/qonto
notes: "Paris / Berlin / Barcelona / Milan. SMB neobank, MLOps for AI Product roles."
enabled: true
# -- DACH logistics / mobility --
- name: Forto
careers_url: https://jobs.lever.co/forto
notes: "Berlin DE. Digital freight forwarder, product & data roles, German + English."
enabled: true
# -- Switzerland / Austria AI --
- name: Lakera
careers_url: https://jobs.ashbyhq.com/lakera.ai
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/lakera.ai'
notes: "Zurich CH / SF. AI security & guardrails. Has Forward Deployed Engineer roles."
enabled: true
- name: Scandit
careers_url: https://job-boards.greenhouse.io/scandit
api: https://boards-api.greenhouse.io/v1/boards/scandit/jobs
notes: "Zurich CH. Computer vision / smart data capture, ML roles."
enabled: true
- name: Cradle
careers_url: https://jobs.ashbyhq.com/cradlebio
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/cradlebio'
notes: "Zurich CH / Amsterdam. AI-guided protein design, ML researcher roles."
enabled: true
# -- France AI ecosystem --
- name: Hugging Face
careers_url: https://apply.workable.com/huggingface/
scan_method: websearch
scan_query: 'site:apply.workable.com/huggingface'
notes: "Paris / NYC / Remote. ML hub & open-source models."
enabled: true
- name: Photoroom
careers_url: https://jobs.ashbyhq.com/photoroom
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/photoroom'
notes: "Paris FR. AI photo editor, Head of CV / Head of ML roles."
enabled: true
- name: Pigment
careers_url: https://jobs.lever.co/pigment
notes: "Paris FR / NYC / London. AI-powered FP&A planning platform."
enabled: true
- name: Diabolocom
careers_url: https://jobs.eu.lever.co/diabolocom
notes: "Paris FR. AI-native contact center (CCaaS) platform — Frost & Sullivan 2026 AI CX Leader in Europe; hybrid LLM/SLM architecture powering Agent Assist, Voice Analytics, and automated QA."
enabled: true
# -- UK & Ireland AI (EU-friendly hiring) --
- name: Wayve
careers_url: https://job-boards.greenhouse.io/wayve
api: https://boards-api.greenhouse.io/v1/boards/wayve/jobs
notes: "London UK. Embodied AI for self-driving, ML & robotics roles."
enabled: true
- name: Isomorphic Labs
careers_url: https://job-boards.greenhouse.io/isomorphiclabs
api: https://boards-api.greenhouse.io/v1/boards/isomorphiclabs/jobs
notes: "London / Lausanne / Cambridge MA. DeepMind spin-out for drug discovery AI."
enabled: true
- name: PhysicsX
careers_url: https://job-boards.greenhouse.io/physicsx
api: https://boards-api.greenhouse.io/v1/boards/physicsx/jobs
notes: "London UK. Physics-informed ML for engineering, ~40 roles."
enabled: true
- name: Stability AI
careers_url: https://job-boards.greenhouse.io/stabilityai
api: https://boards-api.greenhouse.io/v1/boards/stabilityai/jobs
notes: "London / SF. Generative AI image/video research lab."
enabled: true
- name: Synthesia
careers_url: https://jobs.ashbyhq.com/synthesia
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/synthesia OR site:job-boards.greenhouse.io/synthesia'
notes: "London UK. AI video generation for enterprise, $4B valuation."
enabled: true
- name: Faculty
careers_url: https://jobs.ashbyhq.com/faculty
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/faculty'
notes: "London UK. Applied AI consultancy. 80+ roles, AI Safety / MLE / Delivery."
enabled: true
- name: Causaly
careers_url: https://jobs.ashbyhq.com/causaly
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/causaly'
notes: "London / Athens. Biomedical knowledge graph + AI."
enabled: true
# -- Nordics AI --
- name: Lovable
careers_url: https://jobs.ashbyhq.com/lovable
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/lovable'
notes: "Stockholm SE. AI app builder (text-to-app), 80+ open roles."
enabled: true
- name: Legora
careers_url: https://jobs.ashbyhq.com/legora
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/legora'
notes: "Stockholm SE / NYC / London. AI-native legal workspace."
enabled: true
- name: Spotify
careers_url: https://jobs.lever.co/spotify
notes: "Stockholm SE / NYC / London. Audio platform, large ML/personalization org."
enabled: true
- name: Vinted
careers_url: https://jobs.lever.co/vinted
notes: "Vilnius LT / Berlin. C2C marketplace unicorn, data science & ML roles."
enabled: true
# -- Denmark AI / tech --
- name: Corti
careers_url: https://jobs.ashbyhq.com/corti
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/corti'
notes: "Copenhagen DK. Medical AI (ambient clinical documentation), ML / NLP roles."
enabled: true
- name: Pleo
careers_url: https://jobs.ashbyhq.com/pleo
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/pleo'
notes: "Copenhagen DK. Spend-management fintech, ML / data / platform roles."
enabled: true
- name: Templafy
careers_url: https://job-boards.greenhouse.io/templafy
api: https://boards-api.greenhouse.io/v1/boards/templafy/jobs
notes: "Copenhagen DK. Document-generation / content-enablement platform."
enabled: true
# -- Iberia AI --
- name: Amplemarket
careers_url: https://job-boards.greenhouse.io/amplemarket
api: https://boards-api.greenhouse.io/v1/boards/amplemarket/jobs
notes: "Lisbon PT / Remote. AI-native sales platform."
enabled: true
# -- AI / Developer Tools --
- name: Perplexity
careers_url: https://jobs.ashbyhq.com/perplexity
scan_method: websearch
scan_query: site:jobs.ashbyhq.com/perplexity "AI" OR "Applied AI" OR "Forward Deployed" OR "Engineer"
notes: "AI-native search and enterprise AI platform."
enabled: true
- name: Clay Labs
careers_url: https://jobs.ashbyhq.com/claylabs
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/claylabs "AI" OR "Developer Experience" OR "Growth" OR "Engineer"'
notes: "AI-native GTM and workflow automation platform."
enabled: true
- name: Runway
careers_url: https://job-boards.greenhouse.io/runwayml
api: https://boards-api.greenhouse.io/v1/boards/runwayml/jobs
notes: "Generative AI video and creative tooling platform."
enabled: true
- name: Hightouch
careers_url: https://job-boards.greenhouse.io/hightouch
api: https://boards-api.greenhouse.io/v1/boards/hightouch/jobs
notes: "Data activation platform with AI agents and solutions engineering roles."
enabled: true
- name: WorkOS
careers_url: https://jobs.ashbyhq.com/workos
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/workos "Solutions Engineer" OR "Developer Success" OR "Engineer"'
notes: "Developer tools and enterprise-ready auth/platform APIs."
enabled: true
# -- Dev Tools / AI Infra (DevRel, SA, FDE focus) --
- name: Supabase
careers_url: https://jobs.ashbyhq.com/supabase
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/supabase'
notes: "Open-source Firebase alternative. Remote-first. Postgres + Auth + Storage. Strong DevRel/DX hiring."
enabled: true
- name: Resend
careers_url: https://jobs.ashbyhq.com/resend
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/resend'
notes: "Email API for developers. Remote-first. DX/DevRel focused."
enabled: true
- name: Clerk
careers_url: https://jobs.ashbyhq.com/clerk
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/clerk'
notes: "Auth & user management for developers. SE / TAM / PM roles."
enabled: true
- name: Inngest
careers_url: https://jobs.ashbyhq.com/inngest
scan_method: websearch
scan_query: 'site:jobs.ashbyhq.com/inngest'
notes: "Durable workflow engine for serverless. DX/DevRel/Engineering hiring."
enabled: true
- name: PlanetScale
careers_url: https://job-boards.greenhouse.io/planetscale
api: https://boards-api.greenhouse.io/v1/boards/planetscale/jobs
notes: "Serverless MySQL platform. Customer Engineering, Engineering, Sales."
enabled: true
- name: Zep AI
careers_url: https://www.getzep.com/careers
scan_method: websearch
scan_query: '"Zep" "Forward Deployed" OR "Developer Relations" OR "Founding" site:workatastartup.com OR site:getzep.com'
notes: "Context engineering platform for AI agents. YC W24. Lead FDE + DevRel Lead roles. US-only currently."
enabled: true
- name: Maxim AI
careers_url: https://www.getmaxim.ai/careers
scan_method: websearch
scan_query: '"Maxim AI" OR "getmaxim" careers "engineer" OR "product"'
notes: "AI evaluation and observability platform. Bangalore-based, mostly on-site."
enabled: true
# ============================================================
# -- Türkiye / Turkey market
# ============================================================
# Tech companies for candidates targeting the Turkish market or
# Turkish-language postings. Job-portal search queries (Kariyer.net,
# Yenibiris.com, Secretcv, İşin Olsun, LinkedIn-TR) live in the
# `search_queries:` section above — that's where the scanner picks
# them up.
#
# NOTE on scanning: Most Turkish companies below do NOT expose a
# public ATS API (Greenhouse / Lever / Ashby) on their careers_url,
# so `scan.mjs` will filter them out automatically (it requires a
# detectable ATS). They are listed here as discovery aids — paste
# the URL of any specific role into `data/pipeline.md` and run
# `/career-ops pipeline`, which uses Playwright/WebFetch instead.
# Only Getir (jobs.lever.co/getir) is currently scannable.
#
# Key Turkish market notes:
# - Salaries often quoted as NET (after tax/SGK deductions)
# - Common benefits: yemek kartı (meal card), özel sağlık sigortası
# (private health insurance), servis (company shuttle)
# - Probation (deneme süresi): max 2 months by law
# - Severance (kıdem tazminatı): 1 month per year of service
# - Use modes/tr/ for Turkish-language evaluations and applications
# ============================================================
- name: Trendyol
careers_url: https://www.trendyol.com/kariyerimiz
scan_method: websearch
scan_query: 'site:trendyol.com/kariyerimiz OR "trendyol" "Software Engineer" OR "Backend" OR "Frontend" careers'
notes: "Istanbul (Maslak tech HQ). Turkey's largest e-commerce platform (Alibaba-owned). Large tech org, competitive salaries."
enabled: false
- name: Hepsiburada
careers_url: https://www.hepsiburada.com/kariyer
scan_method: websearch
scan_query: '"hepsiburada" careers "Software Engineer" OR "Backend" OR "Frontend" OR "Yazılım"'
notes: "Istanbul. Major Turkish e-commerce platform. Listed on NASDAQ."
enabled: false
- name: Getir
careers_url: https://jobs.lever.co/getir
scan_method: websearch
scan_query: 'site:jobs.lever.co/getir OR "getir" careers "Software Engineer" OR "Backend" OR "Frontend"'
notes: "Istanbul. Ultra-fast delivery unicorn. Exited international markets in April 2024; now Turkey-only."
enabled: false
- name: Insider
careers_url: https://useinsider.com/careers
scan_method: websearch
scan_query: '"useinsider" OR "insider" careers "Software Engineer" OR "Backend" OR "Frontend" site:jobs.lever.co OR site:jobs.ashbyhq.com'
notes: "Istanbul. B2B SaaS marketing platform. Unicorn. Strong remote-friendly culture."
enabled: false
- name: Dream Games
careers_url: https://www.dreamgames.com/careers
scan_method: websearch
scan_query: '"dreamgames" OR "dream games" careers "Software Engineer" OR "Backend" OR "Frontend"'
notes: "Istanbul. Mobile gaming company (Royal Match). Strong engineering culture, competitive pay."
enabled: false
- name: Peak Games (Zynga)
careers_url: https://www.peakgames.net/en/career
scan_method: websearch
scan_query: '"peak games" careers "Software Engineer" OR "Backend" OR "Frontend"'
notes: "Istanbul. Mobile gaming studio acquired by Zynga. Strong tech team."
enabled: false
- name: Yemeksepeti (Delivery Hero)
careers_url: https://www.yemeksepeti.com/kariyer
scan_method: websearch
scan_query: '"yemeksepeti" careers "Software Engineer" OR "Backend" OR "Frontend" OR "Yazılım"'
notes: "Istanbul. Food delivery platform (Delivery Hero subsidiary). Large tech team."
enabled: false
- name: Sahibinden.com
careers_url: https://www.sahibinden.com/kariyer
scan_method: websearch
scan_query: '"sahibinden" careers "Software Engineer" OR "Backend" OR "Frontend" OR "Yazılım Geliştirici"'
notes: "Istanbul. Turkey's largest classifieds platform. Established tech org."
enabled: false
- name: Garanti BBVA Technology
careers_url: https://www.garantibbvateknoloji.com.tr/kariyer
scan_method: websearch
scan_query: '"garanti bbva teknoloji" OR "garantibbvateknoloji" careers "Software Engineer" OR "Backend" OR "Frontend"'
notes: "Istanbul. Fintech/banking tech arm of Garanti BBVA. Large engineering org, competitive benefits."
enabled: false
- name: Akbank Tech
careers_url: https://www.akbank.com/tr-tr/sayfalar/kariyer.aspx
scan_method: websearch
scan_query: '"akbank" careers "Software Engineer" OR "Yazılım Mühendisi" OR "Backend" OR "Frontend"'
notes: "Istanbul. Turkish bank with large in-house tech team."
enabled: false
- name: Turkcell
careers_url: https://kariyer.turkcell.com.tr
scan_method: websearch
scan_query: 'site:kariyer.turkcell.com.tr OR "turkcell" careers "Software Engineer" OR "Backend" OR "Frontend"'
notes: "Istanbul. Turkey's largest telecom. Large digital and tech transformation team."
enabled: false
- name: Iyzico (PayU)
careers_url: https://iyzico.com/kariyer
scan_method: websearch
scan_query: '"iyzico" careers "Software Engineer" OR "Backend" OR "Frontend" OR "Yazılım"'
notes: "Istanbul. Fintech / payment infrastructure (PayU subsidiary). Good engineering culture."
enabled: false
- name: Papara
careers_url: https://papara.com/kariyer
scan_method: websearch
scan_query: '"papara" careers "Software Engineer" OR "Backend" OR "Frontend"'
notes: "Istanbul. Turkish fintech / digital wallet. Fast-growing, unicorn valuation."
enabled: false
- name: Craftgate
careers_url: https://craftgate.io/career
scan_method: websearch
scan_query: '"craftgate" careers "Software Engineer" OR "Backend" OR "Frontend"'
notes: "Istanbul. Payment orchestration platform. Strong engineering-first culture."
enabled: false
- name: n11.com (Doğuş)
careers_url: https://www.n11.com/kurumsal/kariyer
scan_method: websearch
scan_query: '"n11" careers "Software Engineer" OR "Backend" OR "Frontend" OR "Yazılım"'
notes: "Istanbul. E-commerce marketplace (Doğuş Group)."
enabled: false
# ── Job Boards ────────────────────────────────────────────────────────
# Multi-employer aggregators. Unlike tracked_companies (one entry = one employer),
# job boards return offers from many companies in a single API call.
# Same title/location filtering and dedup apply.
job_boards:
# ── SolidJobs (Polish market) ──────────────────────────────────────
# Public API — no auth needed. Division in URL path, campaign=career-ops for tracking.
# Available divisions: it, engineering, marketing, sales, hr, logistics, finances, other
- name: SolidJobs IT
careers_url: https://solid.jobs/public-api/offers/it?campaign=career-ops
provider: solidjobs
enabled: true
notes: "Polish IT job board — IT division"
- name: SolidJobs Engineering
careers_url: https://solid.jobs/public-api/offers/engineering?campaign=career-ops
provider: solidjobs
enabled: false
notes: "Polish job board — Engineering & Production division"
- name: SolidJobs Marketing
careers_url: https://solid.jobs/public-api/offers/marketing?campaign=career-ops
provider: solidjobs
enabled: false
notes: "Polish job board — Marketing division"
- name: SolidJobs Sales
careers_url: https://solid.jobs/public-api/offers/sales?campaign=career-ops
provider: solidjobs
enabled: false
notes: "Polish job board — Sales division"
- name: SolidJobs HR
careers_url: https://solid.jobs/public-api/offers/hr?campaign=career-ops
provider: solidjobs
enabled: false
notes: "Polish job board — HR division"
- name: SolidJobs Logistics
careers_url: https://solid.jobs/public-api/offers/logistics?campaign=career-ops
provider: solidjobs
enabled: false
notes: "Polish job board — Logistics division"
- name: SolidJobs Finances
careers_url: https://solid.jobs/public-api/offers/finances?campaign=career-ops
provider: solidjobs
enabled: false
notes: "Polish job board — Finances division"
- name: SolidJobs Other
careers_url: https://solid.jobs/public-api/offers/other?campaign=career-ops
provider: solidjobs
enabled: false
notes: "Polish job board — Other specialists division"
# ── JustJoin.it / NoFluffJobs (Polish tech market) ────────────────────────
# Public job-board APIs. Disabled by default; enable and rely on the global
# title_filter/location_filter/salary_filter above for your target profile.
- name: JustJoin.it
careers_url: https://justjoin.it/job-offers/all-locations
provider: justjoin
enabled: false
notes: "Polish tech job board — newest public offers"
- name: NoFluffJobs
careers_url: https://nofluffjobs.com/pl
provider: nofluffjobs
enabled: false
notes: "Polish tech job board — newest public postings"
# -- Indonesia job boards (provider: jobstreet / glints) --
- name: Jobstreet Indonesia
provider: jobstreet
api: https://id.jobstreet.com/api/jobsearch/v5/search
siteKey: ID-Main
searchKeywords: "data scientist"
searchLocation: "Jakarta"
pageSize: 30
maxPages: 3
enabled: false
notes: "Indonesia's largest job board (SEEK group). Uses SEEK v5 JobSearch API — zero tokens."
- name: Glints Indonesia
provider: glints
api: https://glints.com/api/v2-alc/graphql # searchJobsV3 endpoint
searchKeywords: "data scientist"
countryCode: ID
pageSize: 30
maxPages: 3
enabled: false
notes: "SEA job platform covering ID/SG/MY/VN. Uses searchJobsV3 GraphQL endpoint (v2-alc). WAF blocks non-browser requests — works best from Playwright context."
# ── HigherEdJobs (university / higher-ed RSS) ────────────────────────
# Public no-auth RSS category feed. cat_id selects the HigherEdJobs
# category. Common ones:
# 68 = Higher Education, 64 = Educational Administration, 22 = Career Development
# Full list: https://www.higheredjobs.com/rss/
# - name: HigherEdJobs — Higher Education
# provider: higheredjobs
# cat_id: 68
# enabled: true