Discovery & scoring fixes (location filter discarding all jobs, real company name, retryable scoring)#60
Open
sebastianmukuria wants to merge 4 commits into
Conversation
- New applypilot.locfilter reads both the current location.accept_patterns schema and the legacy keys; empty accept list now accepts anything not explicitly rejected (was: reject every non-remote job) - Replace the three duplicated copies in jobspy/workday/smartextract Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Add company column to schema + _ALL_COLUMNS (migrates existing DBs) - Populate company from jobspy/workday/smartextract discovery - Scoring, tailoring, cover letters, apply prompt and dashboard now use job.company (falling back to site for legacy rows) instead of the board name Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- score_job returns None (not 0) on LLM error; parser returns None when no
integer SCORE is found, so failures stay pending and are retried next run
- Tolerate markdown decoration ('**SCORE:** 8', 'Score: 7/10')
- Commit each score as it lands instead of one batch at the end (Ctrl+C safe)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Discovery and scoring correctness fixes from a pre-flight review of the codebase. 2 of 4 focused PRs from that review; independent and reviewable on its own.
What & why
location_accept/location_reject_non_remote) that nothing — not the wizard, not the example config — ever writes; the shipped schema islocation.accept_patterns/reject_patterns. With empty lists, every non-remote location was rejected (so even a remote job listed as "San Francisco, CA" was dropped). Newapplypilot.locfilterreads both schemas, treats an empty accept list as "keep unless explicitly rejected", and replaces the three duplicated copies injobspy/workday/smartextract.job['site'](the job board, e.g. "linkedin") because there was nocompanycolumn. Added acompanycolumn (with forward migration viaensure_columns), populated it from each discovery source, and switched consumers tojob.company(falling back tositefor legacy rows). (database.py,discovery/*,scoring/scorer.py,scoring/cover_letter.py,scoring/tailor.py,apply/prompt.py,apply/launcher.py)fit_score=0, and since the pending filter isfit_score IS NULL, those jobs (e.g. Gemini free-tier rate limits) were never retried. Failures now leave the scoreNULL(retried next run); scores commit incrementally so an interrupt doesn't discard the whole batch; and markdown-decorated scores like**SCORE:** 8/7/10parse correctly. (scoring/scorer.py)Tests
Adds
tests/test_locfilter.py,tests/test_company_column.py,tests/test_scoring.py(17 tests, all passing). CHANGELOG updated under[Unreleased].