What it does
One person's job search, made more honest and less repetitive.
Rates the fit
Compares each required skill in a posting with the evidence in your profile and gives Strong, Good, Worth a try, Stretch or Pass. The rating comes from counts, so the same posting and profile always give the same answer.
Refuses weak applications
A gate in code, not in a prompt, blocks documents when the fit is weak, the location rules fail, you already applied, or the pay is below your minimum. Some refusals cannot be confirmed past.
Drafts, never sends
Writes a tailored resume and cover letter as Word files for you to read and send. It never applies for you, never scrapes job boards, and never records an application as sent unless you say so.
The refusal is the point
Real output from the fictional demo profile. A strong match is rated; a weak one is refused.
$ jobo fit-check tests/fixtures/strong-fit-jd.md ## Fit Check โ Senior Full-Stack .NET Developer | Skill | Status | Evidence | |-----------------------|--------|--------------------------| | c# | โ | production | | asp.net core | โ | production | | azure | โ | production | | ... | | | | typescript | ๐ก | coursework or self-study | | graphql | ๐ด | no evidence | Fit Rating: Strong All 9 required skills covered; 4 nice-to-haves present.
Output trimmed. Employers and skills come from a made-up persona.
$ jobo generate-resume tests/fixtures/data-engineer-jd.md REFUSED: Fit rating is Pass โ refusing to generate resume/cover letter. 7 core requirements have no evidence; coverage 22% of 9 required skills. A Pass on skills cannot be confirmed past: run fit-check for the full breakdown, or supply a stronger-fit posting. exit status 2
Weaker fits (Stretch, Worth a try) can be confirmed past, only when you say so.
How it works
Your data stays in a separate private vault. This repository holds code only.
Three ways in, one codebase: a command line (jobo), an MCP server for Claude Desktop, and skills for Claude Code.
Try it
Uses the fictional demo vault. No personal data, no model calls.
# Python 3.11+ git clone https://github.com/andreak3779/job-o-matic-assistant.git cd job-o-matic-assistant python3 -m venv .venv .venv/bin/pip install -c requirements-lock.txt -e ".[mcp,parser,pdf,dev,lint]" source .venv/bin/activate export JOBOMATIC_VAULT=$PWD/demo-vault jobo fit-check tests/fixtures/strong-fit-jd.md # rating: Strong jobo generate-resume tests/fixtures/data-engineer-jd.md # refused: the skills do not match
Full setup, including your own vault, is in the README.
Built with Claude Code, and honest about it
Claude wrote the code. I wrote the requirements, the design decisions, the standing instructions and the skill files, asked for tests and revisions, and decided whether each change merged. I read every generated document myself.
It began as resume-editing prompts. It became tested code because prompt versions let wrong claims through, and the repository documents where the AI went wrong and how each case was caught.
What it is not
- Not an auto-apply tool. You submit every application by hand.
- Not a scraper. You save a posting and give it to the tool.
- Not an applicant-screening tool. It serves the candidate's own go or no-go decision.
- Not a multi-user product. It is built for one person's search.
Read more
The engineering is written down.