Some checks failed
CI / Linting (Biome) (push) Failing after 41s
CI / Tests (push) Successful in 5m25s
CI / Type Check (adzuna-extractor) (push) Successful in 1m8s
CI / Type Check (gradcracker-extractor) (push) Successful in 1m12s
CI / Type Check (hiringcafe-extractor) (push) Successful in 1m9s
CI / Type Check (orchestrator) (push) Successful in 1m25s
CI / Type Check (startupjobs-extractor) (push) Successful in 1m9s
CI / Type Check (ukvisajobs-extractor) (push) Successful in 1m9s
CI / Documentation (push) Failing after 1m56s
Dedup by employer+title and description at import; cascade skip on dismiss; hide repeats in the job list. Document product scope and duplicate detection in docs. Co-authored-by: Cursor <cursoragent@cursor.com>
6.9 KiB
6.9 KiB
id, title, description, sidebar_position, slug
| id | title | description | sidebar_position | slug |
|---|---|---|---|---|
| intro | JobOps Documentation | Documentation index for setup, features, extractors, and common problems. | 1 | / |
Welcome to the JobOps documentation. This site contains guides for setup, configuration, and day-to-day usage.
What JobOps does
JobOps is a self-hosted job search operations stack: it discovers roles from many boards, filters them to your geography and profile, scores fit, tailors resumes and PDFs, and tracks applications after you apply.
In practice:
- Discover — Run a pipeline against LinkedIn, Indeed, Glassdoor, QAJobsBoard, Canadian boards, and other extractors using your search terms and country (for example Canada, remote-only QA).
- Filter — Drop unwanted countries, companies, co-op/intern patterns, non-matching locations, expired LinkedIn reposts, and duplicate postings you already skipped or applied to.
- Review — Work through Discovered and Ready in the Orchestrator; skip noise, move strong fits to Ready, generate tailored PDFs.
- Apply & track — Mark applied, sync Gmail for recruiter mail, and use the in-progress board and analytics.
Key filters and quality controls are documented under Core Features — especially Blocked countries, Company skip list, and Duplicate job detection.
Getting Started
-
- Docker setup instructions
- Gmail OAuth configuration for email tracking
- Environment variables reference
- Demo mode deployment
-
- Automatic backup scheduling and retention
- Manual backup creation/deletion
- Restore workflow and troubleshooting
Workflows
-
- Run pipeline first, then review discovered and ready jobs
- Use fit assessment and score to prioritize applications
- Mark jobs as applied to trigger webhooks and analytics
-
- Track events manually for direct control
- Or configure automatic Gmail sync and inbox review
- Move confirmed updates into in-progress tracking
Feature Documentation
-
- Job states explained (
discovered,ready,applied, etc.) - The ready flow (manual vs auto)
- PDF generation and regeneration
- Post-application tracking overview
- Job states explained (
-
- Run modal controls (
AutomaticvsManual) - Presets, source/country compatibility, and advanced settings
- Run estimate and start conditions
- Run modal controls (
-
- Open with
Cmd+K/Ctrl+Kor the Search button - Fuzzy search across title, company, and location
- Use
@statuslock syntax to scope results quickly
- Open with
-
- Full Jobs-page shortcut reference by context
?shortcut help dialog andControlhint bar behavior- Tab-specific actions like skip, move to ready, and mark applied
-
- Cross-source dedup by employer and title
- Auto-skip repeats when you skip or apply
- Hide duplicate open rows in the Jobs list
-
- Block listings that mention specific countries
- Canada-only (and other) search geography enforcement
-
- Block employers by keyword during discovery
-
- Select many jobs using row checkboxes or select-all
- Run bulk move, skip, and rescore actions from the floating action bar
- Keyboard support for select, clear, and fast bulk move-to-ready
-
- LLM provider/model and task-specific overrides
- Webhooks, service accounts, and basic auth controls
- Backup scheduling, scoring thresholds, and danger-zone cleanup tools
-
- Base resume selection and RxResume integration
- Project inclusion controls (must-include, AI-selectable, max)
- PDF generation behavior and troubleshooting
-
- Applications-per-day trend
- Conversion analytics and funnel
- Duration window controls (
7d,14d,30d,90d)
-
- Pre-application vs post-application workflow split
- Kanban tracking for higher-attention opportunities
- Drag-and-drop stage management
-
- One persistent conversation per job
- Streaming responses, stop, and regenerate
- Markdown rendering and drawer behavior
- Writing style settings impact
-
- How the Smart Router AI works
- Gmail integration setup
- Using the Tracking Inbox
- Privacy and security details
- API reference
-
- Search licensed UK sponsor organizations
- Review company routes and sponsor ratings
- Trigger manual data refresh
Extractors
Quick Reference
Main Components
- Orchestrator: Main application (UI, API, database)
- Extractors: Specialized job crawlers
- Shared: Common types and utilities
Key Features
- Job discovery: Find roles from multiple extractors in one pipeline run.
- Geography and quality filters: Block countries and employers, enforce search-country allow-lists, remote-only runs, and profile deal-breakers.
- Duplicate suppression: Collapse cross-board reposts; remember skips and applications.
- AI scoring: Rank jobs by suitability for your profile.
- Resume tailoring: Generate custom resumes and PDFs per job (RxResume).
- Application tracking: Applied status, post-application Gmail sync, in-progress board, and analytics.
Contributing to Documentation
When adding user-visible behavior:
- Update the relevant feature page in current docs.
- Add API documentation where relevant.
- Keep examples realistic and copy-pasteable.
- Include diagrams for non-trivial workflows.
Support
- Open an issue for documentation errors.
- Check these docs before opening support requests.