peregrine/docs/user-guide/job-review.md
pyr0ball 8e36863a49
Some checks failed
CI / Backend (Python) (push) Failing after 2m15s
CI / Frontend (Vue) (push) Failing after 21s
Mirror / mirror (push) Failing after 9s
feat: Interview prep Q&A, cf-orch hardware profile, a11y fixes, dark theme
Backend
- dev-api.py: Q&A suggest endpoint, Log Contact, cf-orch node detection in wizard
  hardware step, canonical search_profiles format (profiles:[...]), connections
  settings endpoints, Resume Library endpoints
- db_migrate.py: migrations 002/003/004 — ATS columns, resume review, final
  resume struct
- discover.py: _normalize_profiles() for legacy wizard YAML format compat
- resume_optimizer.py: section-by-section resume parsing + scoring
- task_runner.py: Q&A and contact-log task types
- company_research.py: accessibility brief column wiring
- generate_cover_letter.py: restore _candidate module-level binding

Frontend
- InterviewPrepView.vue: Q&A chat tab, Log Contact form, MarkdownView rendering
- InterviewCard.vue: new reusable card component for interviews kanban
- InterviewsView.vue: rejected analytics section with stage breakdown chips
- ResumeProfileView.vue: sync with new resume store shape
- SearchPrefsView.vue: cf-orch toggle, profile format migration
- SystemSettingsView.vue: connections settings wiring
- ConnectionsSettingsView.vue: new view for integration connections
- MarkdownView.vue: new component for safe markdown rendering
- ApplyWorkspace.vue: a11y — h1→h2 demotion, aria-expanded on Q&A toggle,
  confirmation dialog on Reject action (#98 #99 #100)
- peregrine.css: explicit [data-theme="dark"] token block for light-OS users (#101),
  :focus-visible outline (#97)
- wizard.css: cf-orch hardware step styles
- WizardHardwareStep.vue: cf-orch node display, profile selection with orch option
- WizardLayout.vue: hardware step wiring

Infra
- compose.yml / compose.cloud.yml: cf-orch agent sidecar, llm.cloud.yaml mount
- Dockerfile.cfcore: cf-core editable install in image build
- HANDOFF-xanderland.md: Podman/systemd setup guide for beta tester
- podman-standalone.sh: standalone Podman run script

Tests
- test_dev_api_settings.py: remove stale worktree path bootstrap (credential_store
  now in main repo); fix job_boards fixture to use non-empty list
- test_wizard_api.py: update profiles assertion to superset check (cf-orch added);
  update step6 assertion to canonical profiles[].titles format
2026-04-14 17:01:18 -07:00

72 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Job Review
![Peregrine job review triage](../screenshots/02-review.png)
The Job Review page is where you approve or reject newly discovered jobs before they enter the application pipeline.
---
## The Pending Queue
All jobs with status `pending` appear in the review queue. Jobs with email leads (matching email threads already in the `job_contacts` table) are sorted to the top of the queue automatically.
---
## Sorting Options
Use the sort control at the top of the page to order the queue:
| Sort option | Description |
|-------------|-------------|
| **Match score (high to low)** | Jobs with the strongest keyword match appear first |
| **Match score (low to high)** | Useful for finding niche roles that scored low but are still interesting |
| **Date found (newest)** | Most recently discovered jobs first |
| **Date found (oldest)** | Oldest jobs first (useful for clearing a backlog) |
| **Company (A-Z)** | Alphabetical by company name |
---
## Match Score and Keyword Gaps
Each job card shows:
- **Match score** (0100) — percentage of your resume keywords found in the job description
- **Keyword gaps** — specific keywords from your profile that the job description is missing
A high match score does not guarantee a good fit; use it as a signal to prioritise your review, not as a final filter.
---
## Reviewing Jobs
For each job in the queue you can:
- **Approve** — moves the job to `approved` status, making it available in the Apply Workspace
- **Reject** — moves the job to `rejected` status and removes it from the queue
- **Skip** — leaves the job in `pending` for a later review session
### Batch actions
Use the checkboxes to select multiple jobs at once, then click **Approve selected** or **Reject selected** to process them in bulk.
---
## Job Detail View
Click a job title to expand the full detail view, which shows:
- Full job description
- Company name and location
- Source board and original URL
- Salary (if available)
- Remote/on-site status
- Match score and keyword gaps
- Any email threads already linked to this job
---
## After Approval
Approved jobs appear in the **Apply Workspace** (page 4). From there you can generate a cover letter, export a PDF, and mark the job as applied.
If you decide not to apply after approving, you can reject the listing from within the Apply Workspace without losing your cover letter draft.