chore(scout): version the application cohort tracker

application_cohort.json was caught by the blanket job_scout/state/*
ignore, so the cohort slot record (core/adjacent/stretch mix and every
application's fit class, evidence fit, hard gate and outcome) existed
only on one machine. decisions.json escaped the same rule only because
it had been tracked before the rule was added - an accident of history,
not a decision.

Both files are durable application history and belong in the repo. The
churny scan state (seen_jobs.json, last_scrape.json) stays ignored, as
does reports/ - all of it is regenerable by re-running the scout.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MHtzyTKBcg6BWhD5qFegtK
This commit is contained in:
2026-08-25 09:08:14 +02:00
co-authored by Claude Opus 5
parent e53abd4ff6
commit af7189a93d
2 changed files with 55 additions and 1 deletions
+4 -1
View File
@@ -24,8 +24,11 @@ __pycache__/
job_scout/.venv/ job_scout/.venv/
job_scout/reports/ job_scout/reports/
job_scout/state/* job_scout/state/*
# ...but track the decision log (job application history), not the churny seen-state # ...but track the durable application records, not the churny seen-state:
# decisions.json — per-posting decision log (applied/skip/shortlist/closed)
# application_cohort.json — cohort slot tracker (core/adjacent/stretch mix)
!job_scout/state/decisions.json !job_scout/state/decisions.json
!job_scout/state/application_cohort.json
# One-off job-board data pulls (debug artifacts) # One-off job-board data pulls (debug artifacts)
*_jd.json *_jd.json
+51
View File
@@ -0,0 +1,51 @@
{
"cohort_id": "evidence-first-2026-01",
"status": "active",
"started": "2026-07-27",
"target_mix": {
"core": 7,
"adjacent": 2,
"stretch": 1
},
"definitions": {
"core": "Evidence Fit 75+ and no hard-gate failure",
"adjacent": "Evidence Fit 60-74, no required Gap, normally at most one serious preferred gap",
"stretch": "Evidence Fit below 60 or a defining responsibility is only Adjacent"
},
"applications": [
{
"company": "Google",
"role": "Software Engineer III, Business Home",
"application_date": "2026-07-27",
"fit_class": "core",
"evidence_fit": 89.0,
"hard_gate": "pass",
"channel": "weak",
"outcome": "rejected_no_interview"
},
{
"company": "Aker BP ASA",
"role": "Data Product Architect - AI-ready Data Products",
"application_date": "2026-07-29",
"fit_class": "adjacent",
"evidence_fit": 79.0,
"hard_gate": "pass",
"channel": "weak",
"outcome": "applied",
"submitted": "2026-07-29"
},
{
"company": "SBB",
"role": "Data Engineer (m/w/d), Asset Management Infrastrukturanlagen, Bern",
"job_id": "103755",
"application_date": "2026-08-25",
"fit_class": "core",
"evidence_fit": 79.0,
"hard_gate": "pass",
"channel": "warm_contact_published",
"outcome": "applied",
"submitted": "2026-08-25",
"open_risk": "Anforderungsniveau K is a capped GAV band, figures not public; seat may read lateral or below current Staff + Component Owner scope."
}
]
}