Job-O-Matic

Assistant

A rule-based job-search toolkit. It rates a posting against a typed career profile, refuses weak or duplicate applications, and drafts documents for you to review and send yourself.

Job-O-Matic Assistant logo: a retro appliance with a rating gauge pointing at green and a resume coming out of its top slot

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.

Save a postingAs a markdown file. The tool never reads job boards.
Rate itThe fit engine matches skills to your typed profile, plus location and soft requirements.
Pass the gateFit, location, duplicate and pay checks run for the command line and the MCP server alike.
Review and sendTailored Word documents, checked for page count. You read them and you send them.

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

Read more

The engineering is written down.