Records the 2026-06-06 application (Observe by Snowflake, ~86/100) in the
decision log so it stops resurfacing as a new match.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Track per-job decisions across runs so we don't re-evaluate roles.
- state/decisions.json (keyed by URL: company/title/decision/note/date), now
git-tracked while seen_jobs.json stays local
- --decide "<url>" <status> [note] records a decision; --hide-decided gives an
undecided-only view; report tags each role inline with its decision
- usage docstring updated
- seed 18 decisions (9 shortlist, 7 skip, 1 paused, 1 maybe); flags Google Staff
FDE GenAI as the paused prior session
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add positive keywords for the core DevOps/data-platform/cloud lane and
technical-architect titles (cloud/data/platform architect) that previously
scored 0 and surfaced only via the generic "senior" term. Rebalances rankings
so hands-on engineering roles aren't buried under pre-sales "Solutions
Architect" + crypto keyword stacking.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Two scoring bugs inflated the rankings:
- Substring matching: 'rag' matched sto[rag]e / tet[rag]on, 'intern'
matched inte[rnal], 'lead' matched [lead]ership. Roche's staff
restaurant and Cisco Tetragon roles scored as fits. Now keywords must
not be flanked by alphanumerics (c#/.net/c++ keep matching).
- Body boilerplate: every Kraken post mentions crypto/blockchain/trading,
so sales/PM/design roles scored as high as engineering ones. Title
matches now score full weight, body-only matches half (min 1);
negatives still count fully anywhere.
Strong-fit count drops 13 -> 5; the bogus 'intern' negatives and rag
false positives are gone. Shared _kw_in() also backs the title filter.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Dennis is interested in trading roles (energy/finance/crypto), but the
scorer had no terms for them, so trading-tech roles scored 0 and got
buried. Add a trading/quant cluster (trading, trader, quant, market
data, low-latency, FIX protocol, brokerage, commodity, execution) plus
singular "solution architect" and adjacent stack (C#, .NET).
Bitcoin Suisse's Solution Architect Trading now scores 4 (medium) on
title alone, up from 0.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Bitcoin Suisse's careers page is a JS-rendered Next.js SPA, but the
underlying onlyfy.jobs ATS exposes a plain HTML job list at
candidate/job/ajax_list (title + location per card). Add an onlyfy
adapter that parses it — no headless browser needed. Surfaces the 3
current Zug roles correctly (CH filter + pre-dedup location filtering
keep the Swiss posting over its Bratislava/Copenhagen cross-posts).
MANUAL_CHECK is now empty (all 22 target companies automated), so the
report's manual-check section is suppressed when the list is empty.
Coverage notes updated.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AMINA Bank rates poorly on Glassdoor and isn't worth tracking. Remove
its manual-check entry, leaving Bitcoin Suisse as the only manual source.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Coinbase cut ~14% of staff and is not actively hiring; remove its
manual-check entry. The getro Coinbase Ventures source covers portfolio
companies only, not Coinbase itself, so Coinbase is now off the radar
until they reopen. Now 2 manual sources (AMINA, Bitcoin Suisse).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add a getro adapter (POST JSON search API) and wire up the Coinbase
Ventures portfolio talent network (collection 1625), CH + eng-title
filtered. Note this covers portfolio companies (Ashby, Notion, VALR,
World, ...), not Coinbase itself, which doesn't list on its Ventures
board — Coinbase-the-employer stays in MANUAL_CHECK.
Also clean up stale comments: drop Sonova (MedTech, off-thesis, dead
scrape) from MANUAL_CHECK, remove the dangling BIS comment now that
BIS is automated via rss, and refresh the adapter-coverage notes and
module docstring to the current 21-automated / 3-manual state.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Generic RSS/RDF feed parser (handles RSS 1.0 namespaced items + RSS 2.0)
- BIS (Bank for International Settlements, Basel) promoted from manual-check
to an automated source via its vacancies RSS feed — commutable from Bern,
salary net of Swiss tax. Scout now 20 automated + 4 manual-check.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>