Skip to content

fradford/jobscanner

Repository files navigation

jobscanner

jobscanner is a command line utility that automatically scans job boards and surfaces the best jobs for you by matching them against a rich candidate profile.

Installing From Source

Note

Installing this project has only been tested on Linux. It may install without modification on macOS. You may have success running it on Windows through WSL.

  1. Install Dependencies
  2. Install jobscanner
  3. Profit

Install Dependencies

Bun is an alternative to the node ecosystem, it offers much faster dependency resolution and package installs and is fully compatible with the node API.

If you don't already have bun installed, follow the installation instructions at bun.sh

Additionally, for generating resume and cover letter templates, you will need LaTeX installed locally. See The LaTeX Project for more info.

Install jobscanner

Download this repo's source, extract the archive, navigate to the root of the project, and run the install script.

./install.sh

Usage

jobscanner <command> [options]

Available Commands

profile

Interactively manage user profiles for job matching.

jobscanner profile [--create | --update | --delete | --list]

Options:

  • --create, -c - Create a new profile
  • --update, -u - Update an existing profile
  • --delete, -d - Delete a profile
  • --list, -l - List all existing profiles

Example:

jobscanner profile --create
jobscanner profile --list
jobscanner profile --update

run

Run the job search pipeline to scan job boards and match them against your profile.

jobscanner run [--config <path>]

Options:

  • --config <path> - Path to config file (YAML). If not specified, defaults to ~/.config/jobscanner/scan.yaml

Example:

jobscanner run
jobscanner run --config config/jobs.yaml

Config Options:

When installed, the default config file is stored at ~/.config/jobscanner

  • request:

    • timeoutMs: Limits the time to wait on network requests, default: 15000
    • throttleMs: Wait time between requests to reduce chance of blacklisting, default: 300
    • maxPages: Pagination limit for supported sources, default: 5
    • userAgent: User agent to send requests as, default: "jobscanner/0.1"
  • output:

    • maxResults: Limits the number of results shown in the terminal, all matches are stored, default: 10

resume

Manually generate a résumé PDF from structured résumé data.

jobscanner resume <data> <output> [--template <name>] [--sections <section1> <section2> ...]

Arguments:

  • data - Input file path with structured résumé content (YAML)
  • output - Output file path for the generated PDF (e.g., output/resume.pdf)

Options:

  • --template, -t - Template to use (default: traditional)
  • --sections - Sections to include in the résumé. Sections will be placed in the order provided. Valid sections: summary, coreCompetencies, experience, additionalExperience, volunteerExperience, education, projects, skills

Example:

jobscanner resume resume-data.yaml my-resume.pdf
jobscanner resume resume-data.yaml my-resume.pdf --sections summary experience education skills
jobscanner resume resume-data.yaml my-resume.pdf --template traditional

See resume.example.yaml for supported fields and structure.

letter

Manually generate a cover letter PDF from structured letter data.

jobscanner letter <data> <output> [--template <name>]

Arguments:

  • data - Input file path with structured cover letter content (YAML)
  • output - Output file path for the generated PDF (e.g., output/letter.pdf)

Options:

  • --template, -t - Template to use (default: traditional)

Example:

jobscanner letter letter-data.yaml my-letter.pdf
jobscanner letter letter-data.yaml my-letter.pdf --template traditional

See letter.example.yaml for supported fields and structure.

About

Scans across job boards to find you the best opportunities

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors