feat(applications): archive Aker BP package, add Compass evidence, extend scout
Aker BP ASA — Data Product Architect (FINN 469067315): archive the finalized resume/CL sources, JD, session and critique. Submitted 2026-07-30 ahead of the 2026-08-02 deadline; logged as applied in the scout decision log and marked SUBMITTED in Active Sessions. KB: record Atlassian Compass as Swisscom's metadata/catalogue platform for data products and lineage (user-confirmed 2026-07-29). Practitioner use only — claims.json forbids claiming administration, rollout or ownership, and it is explicitly not a substitute claim for Purview, Collibra or Alation. Also: close out the Google Business Home session (no interview), extend the job scout, and allow the job-board domains used during the Aker BP research. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -204,6 +204,21 @@ COMPANIES = [
|
||||
# ops and score 0 under the English eng keyword list — keep them visible.
|
||||
"_score_floor": 2,
|
||||
}),
|
||||
# Telenor Norge (Teamtailor) — Nordic telco; Swisscom is the direct domain analogue
|
||||
# and Dennis worked in Norway before (Vizrt, Bergen). NOTE: the old Workday tenant
|
||||
# telenorgroup.wd3.myworkdayjobs.com is dead (HTTP 422 on /wday/cxs, 2026-07-29) —
|
||||
# Telenor migrated to Teamtailor. Slug telenorgroup is a near-empty group-HQ board;
|
||||
# telenornorway is the real Norway board (redirects to careers.telenor.no).
|
||||
# CAVEAT: most Telenor Norge postings require Norwegian ("norsk og engelsk") and are
|
||||
# Oslo/Trondheim onsite-hybrid — verify both per role before tailoring.
|
||||
# Norwegian-language titles/descriptions score ~0 under the English eng keyword
|
||||
# list, so keep a score floor (same pattern as Equinor).
|
||||
("telenor", "Telenor Norge", "teamtailor", {
|
||||
"slug": "telenornorway",
|
||||
"default_location": "Oslo/Trondheim, Norway",
|
||||
"_location_policy": "norway_only",
|
||||
"_score_floor": 2,
|
||||
}),
|
||||
# NATO civilian vacancies (Oracle Taleo). Public marketing page is
|
||||
# https://www.nato.int/en/work-with-us/careers/vacancies — jobs actually live on
|
||||
# nato.taleo.net career section 2. Location policy dk_no: Denmark + Norway only
|
||||
@@ -232,6 +247,10 @@ COMPANIES = [
|
||||
"collection": 1625,
|
||||
"locations": ["Switzerland"],
|
||||
"job_functions": ["Software Engineering", "IT", "Data Science"],
|
||||
# User preference 2026-07-28: recruiting-software domain is not a target.
|
||||
# Exclude the underlying employer here without hiding unrelated companies
|
||||
# carried by the Coinbase Ventures portfolio board.
|
||||
"_exclude_orgs": ["Ashby"],
|
||||
"_title_filter": ENG_TITLE_FILTER,
|
||||
}),
|
||||
# Bitcoin Suisse (Zug) uses the onlyfy.jobs ATS. No title filter — small crypto
|
||||
@@ -628,6 +647,42 @@ def fetch_rss(args):
|
||||
return jobs
|
||||
|
||||
|
||||
def fetch_teamtailor(args):
|
||||
"""Teamtailor public JSON Feed (`https://<slug>.teamtailor.com/jobs.json`).
|
||||
|
||||
Used by Telenor. The public /jobs HTML page paginates and under-reports; the feed
|
||||
returns the full board in one call, so prefer it. The feed carries no location
|
||||
field, so default_location is required (Teamtailor boards are per-country anyway).
|
||||
Descriptions are frequently Norwegian — see the _score_floor note on the company.
|
||||
|
||||
TRAP: an unclaimed slug returns Teamtailor's *demo* board (HTTP 200, plausible JSON)
|
||||
instead of 404. Verified 2026-07-29: `ksat` and `akerbp` both served the seed set
|
||||
below though neither company uses Teamtailor. Filtered here so phantom roles never
|
||||
reach a report — if a real board is ever dropped by this, widen the fingerprint."""
|
||||
DEMO_TITLES = {"sales development manager", "team lead - csm", "social media manager",
|
||||
"customer success manager", "key account manager", "ux designer"}
|
||||
url = f"https://{args['slug']}.teamtailor.com/jobs.json"
|
||||
req = urllib.request.Request(url, headers={"User-Agent": USER_AGENT, "Accept": "application/json"})
|
||||
with urllib.request.urlopen(req, timeout=30, context=_ssl_context()) as resp:
|
||||
data = json.loads(resp.read().decode("utf-8", "replace"))
|
||||
jobs = []
|
||||
for it in data.get("items", []):
|
||||
jobs.append({
|
||||
"id": it.get("id") or it.get("url", ""),
|
||||
"title": it.get("title", ""),
|
||||
"location": args.get("default_location", ""),
|
||||
"url": it.get("url", ""),
|
||||
"posted": it.get("date_published", ""),
|
||||
"description": re.sub(r"<[^>]+>", " ", it.get("content_html", ""))[:2500],
|
||||
})
|
||||
titles = {j["title"].strip().lower() for j in jobs}
|
||||
if jobs and len(titles & DEMO_TITLES) >= 4:
|
||||
raise RuntimeError(
|
||||
f"teamtailor slug '{args['slug']}' served the demo board, not a real one "
|
||||
f"({len(jobs)} placeholder ads) — the company likely uses a different ATS")
|
||||
return jobs
|
||||
|
||||
|
||||
def fetch_getro(args):
|
||||
"""Getro network job-board search API (POST JSON). Powers VC portfolio talent
|
||||
networks — here the Coinbase Ventures web3 network (collection 1625). Returns roles
|
||||
@@ -643,6 +698,7 @@ def fetch_getro(args):
|
||||
if args.get("job_functions"):
|
||||
filters["job_functions"] = args["job_functions"]
|
||||
jobs, page = [], 0
|
||||
excluded_orgs = {name.casefold() for name in args.get("_exclude_orgs", [])}
|
||||
while True:
|
||||
data = http_get_json(url, method="POST", data={
|
||||
"hitsPerPage": 100, "page": page, "query": "", "filters": filters,
|
||||
@@ -651,6 +707,8 @@ def fetch_getro(args):
|
||||
batch = res.get("jobs", []) or []
|
||||
for j in batch:
|
||||
org = (j.get("organization") or {}).get("name", "")
|
||||
if org.casefold() in excluded_orgs:
|
||||
continue
|
||||
locs = j.get("searchable_locations") or j.get("locations") or []
|
||||
loc_str = " | ".join(locs) if isinstance(locs, list) else str(locs)
|
||||
ts = j.get("created_at")
|
||||
@@ -1255,6 +1313,7 @@ ADAPTERS = {
|
||||
"pcsx": fetch_pcsx,
|
||||
"smartrecruiters": fetch_smartrecruiters,
|
||||
"rss": fetch_rss,
|
||||
"teamtailor": fetch_teamtailor,
|
||||
"getro": fetch_getro,
|
||||
"onlyfy": fetch_onlyfy,
|
||||
"lever": fetch_lever,
|
||||
|
||||
@@ -688,9 +688,9 @@
|
||||
"https://ch.linkedin.com/jobs/view/staff-platform-engineer-eu-at-ashby-4403620521": {
|
||||
"company": "Coinbase Ventures (web3)",
|
||||
"title": "Staff Platform Engineer, EU @ Ashby",
|
||||
"decision": "maybe",
|
||||
"note": "Claude judgment 2026-07-06: Staff Platform Engineer generically matches your core skill, but employer is Ashby not crypto - unfamiliar company, needs research",
|
||||
"date": "2026-07-06"
|
||||
"decision": "skip",
|
||||
"note": "User decision 2026-07-28: exclude Ashby entirely; recruiting-software domain is not of interest.",
|
||||
"date": "2026-07-28"
|
||||
},
|
||||
"https://jobs.ashbyhq.com/confluent/0c8cd0e5-8a53-47bc-9699-2934fbdaa7be": {
|
||||
"company": "Confluent",
|
||||
@@ -1577,9 +1577,9 @@
|
||||
"https://jobs.ashbyhq.com/snowflake/db4f0492-ae21-49b7-a7eb-100be61e92bb": {
|
||||
"company": "Snowflake",
|
||||
"title": "Senior Software Engineer - Observe by Snowflake, Metrics Platform",
|
||||
"decision": "shortlist",
|
||||
"note": "Claude judgment 2026-07-06: same Observe team as your pending application; 'metrics platform' is closer to your observability/platform-eng background than the indexing req",
|
||||
"date": "2026-07-06"
|
||||
"decision": "paused",
|
||||
"note": "Strong Observe metrics/data-platform overlap and CHF 176-253k band, but an Enterprise-team application has been open since 2026-06-06. Do not stack another cold application to the same organization/team; pursue recruiter routing or wait for status.",
|
||||
"date": "2026-07-28"
|
||||
},
|
||||
"https://jobs.ashbyhq.com/snowflake/26a0ae52-97a6-4a46-9216-3c382570d89b": {
|
||||
"company": "Snowflake",
|
||||
@@ -1671,5 +1671,54 @@
|
||||
"decision": "skip",
|
||||
"note": "OpenAI FDE Zurich: decline to pursue. Structural gaps in customer-facing external deployments, current full-stack frontend delivery, production LLM ownership/evaluation; 50% travel also a deliberate lifestyle tradeoff. Keep core search on Staff Data Engineering, data/AI platform, and more evidence-aligned FDE roles.",
|
||||
"date": "2026-07-22"
|
||||
},
|
||||
"https://careers.datadoghq.com/detail/7959966/?gh_jid=7959966": {
|
||||
"company": "",
|
||||
"title": "",
|
||||
"decision": "shortlist",
|
||||
"note": "Best fresh high-comp tech lead: remote Switzerland; Senior distributed data platform, ingestion/query pipelines, multiple datastores and production operation are direct. Graph DB and query-planner internals are bonus gaps. Verify Swiss compensation before late-stage investment.",
|
||||
"date": "2026-07-28"
|
||||
},
|
||||
"https://jobs.ashbyhq.com/kraken.com/f9f63509-ac06-449b-a534-397f74f1180e": {
|
||||
"company": "",
|
||||
"title": "",
|
||||
"decision": "skip",
|
||||
"note": "False-positive score: hard asks include 3+ years agent/workflow automation, production LLM APIs and growth/marketing context. Verified evidence is configuration/integration and historical RPA PoC, not this depth; prior Kraken cold applications also produced no interviews.",
|
||||
"date": "2026-07-28"
|
||||
},
|
||||
"https://jobs.elastic.co/jobs?gh_jid=8091748&gh_jid=8091748": {
|
||||
"company": "",
|
||||
"title": "",
|
||||
"decision": "skip",
|
||||
"note": "Hard gaps: professional search/vector-database experience at scale, HNSW/IVF relevance algorithms and current solid core Java. Historical Java and ELK PoC do not satisfy the role.",
|
||||
"date": "2026-07-28"
|
||||
},
|
||||
"https://nato.taleo.net/careersection/2/jobdetail.ftl?job=261162&lang=en": {
|
||||
"company": "",
|
||||
"title": "",
|
||||
"decision": "skip",
|
||||
"note": "Hard gates: 3 years RPA development/deployment, cloud AI services and RPA certification. Historical UiPath/Camunda PoC plus military context are insufficient.",
|
||||
"date": "2026-07-28"
|
||||
},
|
||||
"https://jobs.sbb.ch/v2/offene-stellen/platform-engineer-modern-client-infrastructure-m-w-d/16407ce1-44df-48af-a98e-d75135cfebd2": {
|
||||
"company": "",
|
||||
"title": "",
|
||||
"decision": "skip",
|
||||
"note": "Endpoint/workplace specialization requires extensive Intune, Windows 11, Entra ID, Autopilot and PowerShell experience; unrelated to the data/platform evidence base.",
|
||||
"date": "2026-07-28"
|
||||
},
|
||||
"https://jobs.ashbyhq.com/ashby/fa001346-ea81-41b2-bfbe-2271d3faac1a": {
|
||||
"company": "",
|
||||
"title": "",
|
||||
"decision": "skip",
|
||||
"note": "User decision 2026-07-28: exclude Ashby entirely; recruiting-software domain is not of interest.",
|
||||
"date": "2026-07-28"
|
||||
},
|
||||
"https://www.finn.no/job/fulltime/ad.html?finnkode=469067315": {
|
||||
"company": "",
|
||||
"title": "",
|
||||
"decision": "applied",
|
||||
"note": "Aker BP ASA - Data Product Architect, AI-ready Data Products (FINN 469067315). SUBMITTED 2026-07-30, ahead of 2026-08-02 deadline. Evidence Fit 79/100, Document Quality 93/100, hard gate PASS, channel weak. Stavanger/Oslo/Trondheim, English working language.",
|
||||
"date": "2026-07-31"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user