Skip to main content

Job Hunt

An evidence-gated, human-in-the-loop CLI for finding and triaging jobs.

Job Hunt discovers listings from public company hiring systems, removes duplicates, scores the remaining roles against claims you have verified, and builds a short daily report. It can prepare context for semantic analysis and application materials. Every application remains a human decision.

Install

Job Hunt is distributed as the evidence-job-hunt Python package. The installed command is jobhunt.

pipx install evidence-job-hunt

If pipx is missing, follow the official pipx installation guide.

Job Hunt requires Python 3.10 or newer.

First run

jobhunt init
jobhunt doctor

jobhunt init asks a few plain-language questions about:

  • the roles you want;
  • where you can work;
  • technologies you can honestly claim;
  • compensation and excluded industries;
  • one concrete piece of verified professional evidence.

It creates a private workspace in ~/.jobhunt. Your profile, listings, decisions, and generated reports stay there rather than inside the installed package.

When configuration is valid, jobhunt doctor ends with:

RESULT: READY

Morning routine

jobhunt daily
jobhunt open

daily reads configured public Ashby, Greenhouse, and Lever boards, filters titles, normalizes descriptions, removes previously seen listings, calculates provisional evidence-based scores, and writes the daily report.

open opens the report folder. The shortlist is deliberately small enough to inspect rather than another feed to scroll.

To preview discovery without writing jobs or changing state:

jobhunt discover --preview

LinkedIn searches

jobhunt linkedin --freshness day

This generates targeted LinkedIn search links. It does not log into LinkedIn, scrape an account, or automate applications. You open the searches and choose listings manually.

One manually selected listing

Save the public job description as a text file, then run:

jobhunt ingest PATH_TO_JOB.txt

The same normalization, deduplication, and scoring pipeline is used.

From candidate to application

Mechanical scores are provisional. A title can say “AI” while the actual job requires browser internals, Kubernetes operations, or another profession entirely.

Prepare a self-contained semantic-analysis bundle:

jobhunt analyze JOB

After reviewing the evidence map and gaps, record a decision:

jobhunt decide JOB SHORTLISTED \
  --analysis-score 74 \
  --analysis-recommendation "STRONG MATCH" \
  --reason "Evidence-backed reason for the decision."

Optional stretch assessment remains separate from factual fit:

jobhunt stretch JOB STRETCH_CANDIDATE \
  --direct-matches 4 \
  --core-gap "Explicit missing requirement" \
  --hard-blockers 0 \
  --learning-ramp-weeks 8 \
  --reason "Why this is a credible bounded stretch."

For an eligible shortlisted role:

jobhunt application-bundle JOB

The lifecycle is explicit:

DISCOVERED → REJECTED / MAYBE / SHORTLISTED
SHORTLISTED → APPROVED_TO_APPLY → APPLIED

Only record APPLIED after you have submitted the application yourself.

Why the evidence registry exists

~/.jobhunt/profile/evidence.yaml is the factual boundary. Each claim has safe wording, technologies, evidence strength, and forbidden exaggerations.

The mechanical layer can match and score those claims. An LLM can interpret whether the evidence is direct, transferable, missing, or blocked. Neither layer receives permission to invent experience or turn an experiment into production work.

Useful commands

jobhunt init                         Create a private workspace
jobhunt doctor                       Validate configuration
jobhunt daily                        Run discovery, triage, and reporting
jobhunt open                         Open the report folder
jobhunt discover --preview           Preview public ATS matches
jobhunt linkedin --freshness day     Generate manual LinkedIn searches
jobhunt ingest JOB.txt               Process one saved listing
jobhunt analyze JOB                  Prepare semantic-analysis context
jobhunt decide JOB STATE             Record a human lifecycle decision
jobhunt stretch JOB STATUS           Record a stretch assessment
jobhunt application-bundle JOB       Prepare gated application context
jobhunt help                          Show CLI help

Private workspace

The default workspace is ~/.jobhunt. To use another location:

export JOBHUNT_HOME="$HOME/my-job-search"

Back up this directory if you want to preserve listing history and lifecycle decisions.

Advanced users can edit the generated YAML, profile, evidence registry, resume template, discovery targets, and prompts directly. See GETTING_STARTED.md.

Safety boundary

Job Hunt does not submit forms, contact employers, send outreach, fabricate qualifications, or automate a LinkedIn account. It prepares evidence and preserves an audit trail; the candidate controls every consequential action.

Development

git clone https://github.com/Tesliana-code/job-hunt.git
cd job-hunt
python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/python -m unittest discover -s tests -v

The project is licensed under the MIT License.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

evidence_job_hunt-0.1.0.tar.gz (39.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

evidence_job_hunt-0.1.0-py3-none-any.whl (49.4 kB view details)

Uploaded Python 3

File details

Details for the file evidence_job_hunt-0.1.0.tar.gz.

File metadata

  • Download URL: evidence_job_hunt-0.1.0.tar.gz
  • Upload date:
  • Size: 39.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for evidence_job_hunt-0.1.0.tar.gz
Algorithm Hash digest
SHA256 01adc0c6bca632e783e557452d48b0b1687c1a1d9fffc4d3476cdd27f9dd8309
MD5 05bcd795b8485c6d4f1734162ef8194d
BLAKE2b-256 cc3d90c1aa6cfa020cda311a001397c9946ba990823ac7df8e4210df4add6943

See more details on using hashes here.

File details

Details for the file evidence_job_hunt-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for evidence_job_hunt-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8aadfe415bd039c00be38ed212564bd2effe9b41394287fc1ac5acf0d4e03fcf
MD5 4b6c10381e0ce49faa2c8d159700696f
BLAKE2b-256 3eea52c9887534d5654076118df15abd98f98c94feb86fd566c971e09986d841

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page