Skip to content

feat(cli): add top-level nerajob match --resume-file --jobs-file --demo (Fixes #54) - #141

Open
laurentketterle-hub wants to merge 2 commits into
mergeos-bounties:masterfrom
laurentketterle-hub:feat/cli-match-offline-demo
Open

feat(cli): add top-level nerajob match --resume-file --jobs-file --demo (Fixes #54)#141
laurentketterle-hub wants to merge 2 commits into
mergeos-bounties:masterfrom
laurentketterle-hub:feat/cli-match-offline-demo

Conversation

@laurentketterle-hub

Copy link
Copy Markdown

Summary

Adds the top-level No profile found. Run: nerajob profile init
Or use offline mode: nerajob match --resume-file --jobs-file command for offline resume/jobs matching as requested in #54.

What's new vs the existing No profile. Run: nerajob profile init:

  • Top-level command No profile found. Run: nerajob profile init
    Or use offline mode: nerajob match --resume-file --jobs-file — exactly what the issue spec asks for
  • ** flag** — runs instantly with bundled fixtures (resume + 6 jobs across Python/DevOps/Frontend/ML/Rust roles)
  • Rich table output with Score, Band, Title, Company, Location, and Skill hits columns
  • Band breakdown footer showing strong/medium/weak counts
  • Graceful error handling for invalid JSON, missing files, non-array jobs format, partial flag usage
  • Fallback to stored DB when no flags provided (informative error messages)

Files changed (4):

File Change
+183 lines: new top-level command
+228/−50: 14 tests (was 4), covers demo, error cases, weights, ranking
New: Senior Python backend profile fixture
New: 6 jobs fixture across roles

Commands added:

Offline match: 6 jobs × 10 skills
Job matches (top 6)
┌───────┬────────┬────────────────┬───────────────┬──────────┬────────────────┐
│ Score │ Band │ Title │ Company │ Location │ Skill hits │
├───────┼────────┼────────────────┼───────────────┼──────────┼────────────────┤
│ 100.0 │ strong │ Senior Python │ Remote APIs │ Remote │ python, │
│ │ │ Backend │ Co │ │ fastapi, │
│ │ │ Engineer │ │ │ postgresql, │
│ │ │ │ │ │ docker, │
│ │ │ │ │ │ kubernetes │
│ 54.0 │ medium │ DevOps / │ CloudScale │ Remote │ docker, │
│ │ │ Platform │ Inc. │ │ kubernetes, │
│ │ │ Engineer │ │ │ aws, ci/cd, │
│ │ │ │ │ │ terraform │
│ 42.0 │ medium │ Data Platform │ Data Flow │ │ python, │
│ │ │ Engineer │ Labs │ │ fastapi, │
│ │ │ │ │ │ postgresql, │
│ │ │ │ │ │ aws, terraform │
│ 33.0 │ weak │ Machine │ AI │ Remote │ python, │
│ │ │ Learning │ Innovations │ │ fastapi │
│ │ │ Engineer │ │ │ │
│ 26.0 │ weak │ Senior │ WebStudio Inc │ Remote │ │
│ │ │ Frontend │ │ │ │
│ │ │ Engineer │ │ │ │
│ 26.0 │ weak │ Systems │ ZeroPoint │ Remote │ grpc │
│ │ │ Engineer │ Systems │ │ │
│ │ │ (Rust) │ │ │ │
└───────┴────────┴────────────────┴───────────────┴──────────┴────────────────┘
Band breakdown: 1 strong · 2 medium · 3 weak
Offline match: 6 jobs × 10 skills
Job matches (top 6)
┌───────┬────────┬────────────────┬───────────────┬──────────┬────────────────┐
│ Score │ Band │ Title │ Company │ Location │ Skill hits │
├───────┼────────┼────────────────┼───────────────┼──────────┼────────────────┤
│ 95.0 │ strong │ Senior Python │ Remote APIs │ Remote │ python, │
│ │ │ Backend │ Co │ │ fastapi, │
│ │ │ Engineer │ │ │ postgresql, │
│ │ │ │ │ │ docker, │
│ │ │ │ │ │ kubernetes │
│ 48.5 │ medium │ DevOps / │ CloudScale │ Remote │ docker, │
│ │ │ Platform │ Inc. │ │ kubernetes, │
│ │ │ Engineer │ │ │ aws, ci/cd, │
│ │ │ │ │ │ terraform │
│ 43.5 │ medium │ Data Platform │ Data Flow │ │ python, │
│ │ │ Engineer │ Labs │ │ fastapi, │
│ │ │ │ │ │ postgresql, │
│ │ │ │ │ │ aws, terraform │
│ 24.5 │ weak │ Machine │ AI │ Remote │ python, │
│ │ │ Learning │ Innovations │ │ fastapi │
│ │ │ Engineer │ │ │ │
│ 16.5 │ weak │ Systems │ ZeroPoint │ Remote │ grpc │
│ │ │ Engineer │ Systems │ │ │
│ │ │ (Rust) │ │ │ │
│ 12.0 │ weak │ Senior │ WebStudio Inc │ Remote │ │
│ │ │ Frontend │ │ │ │
│ │ │ Engineer │ │ │ │
└───────┴────────┴────────────────┴───────────────┴──────────┴────────────────┘
Band breakdown: 1 strong · 2 medium · 3 weak

Test results:

Evidence:

Local command output:

Payout identity: .

…mergeos-bounties#54)

- Add top-level 'nerajob match' command supporting --resume-file/--jobs-file for offline matching
- Add --demo flag to run with bundled demo fixtures instantly
- Add data/samples/resume_match_demo.json (Senior Python backend profile)
- Add data/samples/jobs_match_demo.json (6 jobs across Python, DevOps, Frontend, ML, Rust)
- Graceful error handling for invalid JSON, missing files, non-array jobs
- Band breakdown summary footer (strong/medium/weak counts)
- Fallback to stored profile + jobs DB when no flags provided
- 14 tests covering: top-level match, --demo, --resume-file, --jobs-file,
  error cases (invalid JSON, only-one-flag, jobs-not-array, missing-files),
  custom weights, and ranking correctness
- All 159 existing tests pass
@laurentketterle-hub

Copy link
Copy Markdown
Author

/attempt 54

@laurentketterle-hub

Copy link
Copy Markdown
Author

Friendly ping - PR open for a few days. Anything needed? Thanks!

@laurentketterle-hub

Copy link
Copy Markdown
Author

/claim

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant