35 Commits

Author SHA1 Message Date
dennisthiessen d0350ca668 chore(job_scout): log Snowflake Sr SWE Enterprise as applied
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>
2026-06-08 16:53:49 +02:00
dennisthiessen b4b5e3fbe1 chore(resume): shelve Isovalent Data Engineer package (role pulled, ~86/100)
Finalized package retained for reuse; role closed (Cisco scrape 2026-06-02:
not on board, Recruitee link dead). PDFs/build artifacts gitignored.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 20:46:11 +02:00
dennisthiessen d576254971 docs(skills): enforce JD integrity — real posting verbatim + Playwright recipe
Add the JD Integrity section to shared_ops (no reconstructed/inferred JDs;
WebFetch is JS-blind on careers boards; scrape JS-gated postings via the
job_scout Playwright venv; STOP and ask if the real text is unobtainable).
Wire the rule into /make-resume and /critique. Allow cisco/bkw WebFetch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 20:46:10 +02:00
dennisthiessen 7ed9e5b615 feat(job_scout): add data-infra adapters + Oracle manual-check
Add Databricks, Snowflake, Datadog, Elastic, dbt Labs (greenhouse/ashby,
title-filtered). Snowflake slug surfaced the Zürich Observe SWE role.
HashiCorp dropped (IBM acquisition killed public boards); Oracle moved to
MANUAL_CHECK (ORC SPA resists scraping; REST endpoint documented in code).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 20:46:10 +02:00
dennisthiessen dd2f0308c5 feat(resume): Snowflake Sr SWE Enterprise (Observe) package (sent, ~86/100)
Observability-spine framing: Bosch telemetry/observability PoC promoted to
lead, Swisscom Iceberg lakehouse + on-call/RCA. Real Ashby JD (verbatim).
Tier 1+2 critique fixes applied; Vizrt low-latency skipped per user.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 20:44:30 +02:00
dennisthiessen 09316a73cf feat(resume): QuantCo Cloud Engineer package (sent, ~82/100)
- Full resume + cover letter + critique for QuantCo Cloud Engineer (Zürich)
- Applied Tier 1+2 critique fixes: corrected education dates, hedged Data
  Mesh ownership, sharpened tagline/summary, added SRE token
- Mark QuantCo Cloud Engineer + Equinor as sent in trackers
- decisions.json: QuantCo Cloud Engineer -> applied

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 21:40:40 +02:00
dennisthiessen 8a5955c0a8 feat(job_scout): decision log + report annotations
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>
2026-06-01 15:30:49 +02:00
dennisthiessen da66443aa8 feat(job_scout): add 6 Swiss/EU companies, new adapters, and scan-stats table
Automate Palantir, QuantCo, Swissgrid, RUAG, SBB, BKW (drop BFH/Dialectic);
25 companies automated, 0 manual.

- adapters: lever (Palantir/QuantCo), generic json (Swissgrid), sbb, bkw
- fetch_playwright: optional ?page=N pagination (page_param/max_pages) for RUAG
- location_matches: treat pan-EU "Europe"/"EMEA" postings as eligible
- per-company _score_floor so pre-filtered German-language boards stay visible
- POSITIVE_KEYWORDS: add data scientist / data science (medium)
- report: scan-stats table (scraped / CH-remote / match>=2 / newest / time) + totals

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 15:15:22 +02:00
dennisthiessen 49ba42138d chore(job_scout): drop Sygnum, Vitol, ClickHouse (Glassdoor culture/comp red flags)
- Sygnum: 3.4 / 51% recommend, comp 2.3/5 (structurally below 180k bar)
- Vitol: 3.5 / 55% recommend, grueling-hours/blame-culture flag, WLB 2.5
- ClickHouse: 3.3 / 36% recommend, WLB 2.6, multiple toxic-culture reviews

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 16:20:34 +02:00
dennisthiessen 0c098daadf feat(job_scout): score devops/cloud/platform + technical-architect roles
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>
2026-05-29 15:46:14 +02:00
dennisthiessen 54d8ec7a5e chore: add Swisscom SW-7 data mesh achievement, Google FDE drafts, scout perms
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 14:25:23 +02:00
dennisthiessen f00b9df59d fix(equinor): correct education dates on resume
B.Eng. Oct 2009-Oct 2012, M.Eng. Apr 2012-Oct 2013 (overlap intentional).
Log correction in config.md KB Corrections.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 22:42:48 +02:00
dennisthiessen e61c4bac6d feat(equinor): tailored AI Architect resume + cover letter package
Pass 2 critique 80.0/100 (honest-stretch reach app, converged near ceiling).
Includes accuracy fix: Swisscom Data Mesh reframed from sole-build to
company-wide migration contributed to (hedged verbs); orchestration +
reference-architecture surfaced; removed -ing bullet trailers; CL trimmed
to 300 words with matching ownership hedge.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 20:58:58 +02:00
dennisthiessen 1e83966049 fix(job_scout): word-boundary keyword matching + title-weighted scoring
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>
2026-05-24 21:37:00 +02:00
dennisthiessen 74dcc244b8 feat(job_scout): add trading/quant-finance scoring keywords
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>
2026-05-24 19:15:18 +02:00
dennisthiessen b44360f99a feat(job_scout): automate Bitcoin Suisse via onlyfy adapter
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>
2026-05-24 19:06:31 +02:00
dennisthiessen f4d2c6c969 chore(job_scout): drop AMINA Bank from MANUAL_CHECK (poor Glassdoor)
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>
2026-05-24 18:50:38 +02:00
dennisthiessen 913a5de5ac chore(job_scout): drop Coinbase from MANUAL_CHECK (hiring freeze)
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>
2026-05-24 18:48:56 +02:00
dennisthiessen cb27fa3ecf feat(job_scout): add getro adapter for Coinbase Ventures web3 network
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>
2026-05-24 18:47:29 +02:00
dennisthiessen 1331a7f1f5 feat(job_scout): add RSS adapter, automate BIS vacancies
- 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>
2026-05-24 09:55:50 +02:00
dennisthiessen 3b07c4b900 feat(job_scout): expand to 19 companies + new adapters, filters, dedup
- New SmartRecruiters adapter (EU energy/commodity firms)
- Add data-infra US tech (Confluent/GitLab/ClickHouse/Grafana) and
  commodity/energy traders (MET Group/Vitol/Louis Dreyfus)
- Headless stealth (navigator.webdriver mask + chrome fingerprint) — unblocks
  Google; also enabled Meta and Cisco scraping
- Tight title prefilter + title-only scoring + cross-region dedup so
  high-volume all-remote boards don't flood the report
- Remove Canonical (below-market pay, poor culture) and IBM Research
  (research-scale pay below bar; weak data-eng fit) per reputation review

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 12:38:35 +02:00
dennisthiessen eeec77b1e3 feat: add job_scout — automated CH job-board scraper for target companies
Pulls fresh postings from the quarterly target-company list, filters by Swiss
location / EU-remote eligibility, scores fit against profile keywords, tracks
seen jobs, and writes a markdown report.

Adapters (13 companies automated):
- Workday: NVIDIA, Novartis
- Ashby: Kraken, OpenAI
- Greenhouse: Anthropic
- PCSX (Eightfold): Microsoft
- WordPress AJAX: Sygnum
- Playwright (headless + stealth): Google, Apple, Meta, Roche, Cisco, IBM

4 companies (Sonova, Coinbase, AMINA, Bitcoin Suisse) resist automation
(server-side bot blocks / JS widgets) and surface as a manual-check checklist.

venv, reports/, and state/ are gitignored; only scout.py + requirements.txt
are tracked.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 10:12:27 +02:00
dennisthiessen 1fde4c6b34 first commit 2026-05-21 11:07:51 +02:00
Akhil Reddy Peeketi 69930e9de2 fix: use consistent 'skills' terminology in DOCS.md 2026-03-09 20:05:35 -06:00
Akhil Reddy Peeketi 712034decc fix: fill example resume to full 2 pages
- Add postdoc bullets: unfolding pathways, mentorship (6 total)
- Add PhD bullet: force field benchmarking (4 total)
- Add 2 more publications (7 total) and 1 more award (4 total)
- Add Selected Presentations section (5 entries)
- Fix skill line wrapping — all lines fit single rendered line
2026-03-09 20:02:32 -06:00
Akhil Reddy Peeketi 80fb7d6d5a docs: restructure README, add example output PDFs and DOCS.md
- README.md: rewritten as landing page (~160 lines) — problem/solution
  hook, "what makes this different", example output links, "try it first"
  fast path, streamlined quickstart
- DOCS.md: new reference doc with architecture, concepts, customization
  tables, design decisions, and FAQ (moved from README)
- Example output: compiled resume + cover letter PDFs for Dr. Jordan Chen
  (fictional) applying to Whitfield University faculty position
- Example .tex sources in resume_builder/examples/output/
- GitHub repo description and topics updated
2026-03-09 19:37:54 -06:00
Akhil Reddy Peeketi 54f7b91aa6 feat: add CL hook verification, JD copy, and PDF rename to kit
- cl_reference.md: mandatory web-search verification for all CL hooks
- make-cl/SKILL.md: hook verification gate before presenting CL draft
- critique/SKILL.md: step 8b paper hook verification (Tier 1 if wrong)
- shared_ops.md: copy JD into output folder during Phase 0
- shared_ops.md: rename final PDFs to clean names at finalization
2026-03-09 19:15:08 -06:00
Akhil Reddy Peeketi fd0de39b4e fix: add CV Page 1 rule — first bullet must be 2L
A 3L first bullet in the first experience position overflows page 1,
wasting prime real estate. Updated resume_reference.md (Page Fill
Budgets), critical_rules.md (Budget Reminder), cv_template.tex
(comment block), and /make-resume SKILL.md (Phase 1 checklist).

Co-Authored-By: Akhil Peeketi <akhil@lanl.gov>
2026-03-09 16:57:13 -06:00
Akhil Reddy Peeketi 75f5c01799 docs: feature AI fingerprint avoidance in intro and flow diagram
Co-Authored-By: Akhil Reddy Peeketi <peeketiakhilreddy@gmail.com>
2026-03-09 05:28:08 -06:00
Akhil Reddy Peeketi c81edf303e docs: add AI fingerprint scan to critique system listing in README
Co-Authored-By: Akhil Reddy Peeketi <peeketiakhilreddy@gmail.com>
2026-03-09 05:25:09 -06:00
Akhil Reddy Peeketi 486ad0b29e docs: remove redundant file listing from architecture tree
Co-Authored-By: Akhil Reddy Peeketi <peeketiakhilreddy@gmail.com>
2026-03-09 05:24:03 -06:00
Akhil Reddy Peeketi b7953a38e3 docs: add ai_fingerprint_rules.md to architecture tree in README
Co-Authored-By: Akhil Reddy Peeketi <peeketiakhilreddy@gmail.com>
2026-03-09 05:21:37 -06:00
Akhil Reddy Peeketi 449c9b8ade docs: update README with AI fingerprint rules, audit for personal content
Co-Authored-By: Akhil Peeketi <peeketiakhilreddy@gmail.com>
2026-03-09 05:19:26 -06:00
Akhil Reddy Peeketi 9a7c627cc3 feat: add AI fingerprint avoidance rules and fix em-dash patterns
- Add ai_fingerprint_rules.md with banned words, structural rules, and
  12-item post-gen checklist
- Fix Fellowships/Honors template format: --- to period separator
- Fix Publications under-review template format
- Update all 4 skills to load fingerprint rules during generation
- Add AI scan section to critique framework
- Update resume_reference and cl_reference with em-dash limits
- Reduce em-dashes in example files

Co-Authored-By: Akhil Peeketi <peeketiakhilreddy@gmail.com>
2026-03-09 05:08:57 -06:00
Akhil Reddy Peeketi c51b49882f Initial release — claude-resume-kit v1.0
Complete AI-assisted resume/CV generation framework:
- 6 Claude Code skills (setup-extract, setup-build-kb, make-resume, make-cl, edit-resume, critique)
- LaTeX templates (resume, CV, cover letter) with .cls class files
- 6 reference docs (shared_ops, resume_reference, cl_reference, critical_rules, session_file_template, critique_framework)
- Fictional Dr. Jordan Chen examples (extraction, experience, bundle, config, session, JD)
- Knowledge base scaffolding and config template
- README with setup guide and workflow documentation
2026-03-09 02:42:10 -06:00