mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-09-17 00:26:26 +00:00
feat(apply,interview): cache company research to skip repeat lookups (#349)
/apply Step 3's reviewer agent and /interview Step 2 each independently execute the Company Research Checklist (04-job-evaluation.md) for the same company - applying to a role and later prepping for its interview researches the company twice from scratch, same WebSearch/WebFetch cost both times, no sharing between the two commands. Adds a company_research/<normalized-name>.json cache (30-day TTL) that either consumer checks before researching and writes after a fresh pass. Defined once in 04-job-evaluation.md, next to the checklist it mirrors, so both commands point at one source instead of restating the schema. Does not change the verification model: 03-writing-style.md rule 5 already treats reviewer-agent research as a lead, not a source, requiring independent re-confirmation before any company claim ships in a final artifact - the cache stores source URLs alongside each fact so that re-confirmation stays cheap, but the requirement itself is untouched and restated in both consumers. company_research/*.json added to .gitignore and security_guards.py's REQUIRED_IGNORE_RULES as a plain rooted pattern (not **/-prefixed): the cache is referenced from commands, not a skill, so it resolves against the repo root normally, unlike job_scraper/upskill's skill-relative paths. Pinned by tests/test_company_research_cache.py, mirroring the spec-pinning pattern in test_rank_command.py and test_onboarding_privacy.py. The write-back assertions for both apply.md and interview.md were verified to actually fail against the regression they guard (the instruction stripped, confirmed the test catches it, restored) before being considered done - the write half is the one most likely to be dropped silently in a future edit, since the read half is the more obvious change to make. framework_version bumped 1.2.4 -> 1.2.5 in 04-job-evaluation.md, the only touched file inside the tracked skill set.
This commit is contained in:
@@ -11,6 +11,26 @@ prefer updating to a tagged release over pulling raw `master` (see
|
||||
files a release touched; `python3 tools/check_upstream_updates.py` lists them with
|
||||
per-file diff commands.
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
|
||||
- **Company-research cache for `/apply` and `/interview`** - `/apply` Step 3's reviewer
|
||||
agent and `/interview` Step 2 each independently execute the Company Research
|
||||
Checklist (`04-job-evaluation.md`) for the same company, so applying and later
|
||||
prepping for an interview on the same application researches the company twice from
|
||||
scratch. A new `company_research/<normalized-name>.json` cache (30-day TTL, documented
|
||||
in `04-job-evaluation.md` alongside the checklist it mirrors) lets either consumer
|
||||
reuse a recent result instead of repeating the search/fetch work. This does not
|
||||
change how a claim gets verified: cached research is a lead, exactly like
|
||||
reviewer-agent research already is under `03-writing-style.md` rule 5 - only the
|
||||
discovery step is cached, never the final verification before a claim ships in a
|
||||
cover letter or prep pack. `company_research/*.json` added to `.gitignore` and
|
||||
`security_guards.py`'s `REQUIRED_IGNORE_RULES` (a plain rooted pattern, not `**/`
|
||||
-prefixed - the cache is referenced from commands, not a skill, so it resolves
|
||||
against the repo root normally). Pinned by the new
|
||||
`tests/test_company_research_cache.py`.
|
||||
|
||||
## [1.6.0] - 2026-08-19
|
||||
|
||||
### Added
|
||||
|
||||
Reference in New Issue
Block a user