github srbhr/Resume-Matcher v1.4.0
1.4 Short Circuit

5 hours ago

Resume Matcher 1.4: Short Circuit

Short Circuit makes the resume itself better, not only better matched. Every tailoring run now critiques its own writing and rewrites the weak lines without adding a single fact, you can push a missing job keyword in when you confirm you have it, and you can watch each stage of the work as it happens. It also brings agent mode, an MCP server, new templates and multi-page resumes, and a round of security hardening.

Named after Short Circuit from Daft Punk's Discovery, this release continues the v1 series after 1.3 Crescendolls.

What's new

Writing that holds up

  • Critique and rewrite in every tailoring run. Fixed rules and an AI critic check each bullet and the summary. Lines with an em dash, a weak opener such as "Responsible for", or no stated outcome get one rewrite. A fact check drops any rewrite that adds or loses a number, name, tool or skill, so your work stays on the page and nothing is invented. Light nudge only critiques.
  • Writing score. A 0 to 100 score from the fixed rules (the same with every AI provider), with before and after, the lines to fix and the reviewer's notes.
  • Improve writing in the Builder. A new Writing tab scores any resume, master included, and rewrites its weak lines. You review every change before it goes into the editor.
  • Heavy rewrite. A fourth tailoring mode for bigger edits: full Challenge, Action, Result rewrites, a new summary and reordered bullets, with a clear hallucination warning.
  • Evidence-based cover letters. One page, usually 200 to 300 words: a hook tied to the job, two or three matching examples, a company-fit paragraph grounded in the job description and a specific close. Contributed by @AlexanderMorris2k.

Keywords on your terms

  • Add missing keywords. In the review dialog, missing job keywords become chips. Keywords your master shows are applied directly; a keyword it does not show needs your "I have this". Each one goes into your skills plus at most two lines where it fits, and nothing else is added around it.
  • See where they went. The dialog lists where every keyword landed, marks it in the changed lines and shows the ATS score before and after. JD Match highlights the keywords you added in blue, and interview prep asks about them first.
  • One match number. JD Match now shows the same keyword match as the ATS score, and keeps C++, .NET, Node.js and CI/CD whole.
  • A sharper ATS score. It now scores the job title and date consistency, and the builder keeps the last calculated score with a Recalculate button. Contributed by @himalyansailor.
  • ATS parse check. A new ATS CHECK tab shows whether a plain text extractor can read your exported PDF in the right order.

Watch it work

  • Live progress. Tailoring shows each real stage as it runs, with a note when a slow model needs a minute.
  • Tailoring queue. Queue several job descriptions and tailor them one after another, with cooldowns that respect rate limits. Contributed by @coolb0y.

Use it your way

  • Agent mode. Open Claude Code, Codex, Cursor, Copilot or Antigravity in the repo and ask it to tailor your resume: no API key, and the web app updates live as the agent saves.
  • MCP server. Its tools let any MCP client drive Resume Matcher against the same database as the app. Contributed by @rrvrs.
  • Claude Code and ChatGPT plans as providers. Run on a Claude Code install with no API key (contributed by @GongYuanCaiJi), pick its model, or sign in with a ChatGPT plan, with a clear note on subscription risk.
  • Optional PostgreSQL for larger or shared setups.

More control over the resume

  • Several master resumes. Keep up to five, one per career track; tailoring picks the strongest bullets with code, not the AI.
  • Page limit and bullet cap settings for tailoring. Contributed by @himalyansailor.
  • New templates: Deedy, Modern Deedy and Vivid Single Column, plus multi-page resumes with predictable page breaks and an academic CV mode.
  • The PDF matches the preview, and each resume keeps its own formatting.
  • Reorder everything: projects, custom section items (contributed by @Bdysj) and the bullets within an entry.

Security

  • Saved API keys can no longer be sent to arbitrary servers (#1045, reported and fixed by @MahediBuilds). An unauthenticated caller could point a stored key at their own server; a saved custom Base URL is now bound to the key that confirmed it.
  • Local by default (#1048). The app has no login, so it now listens on loopback only and rejects unexpected Host headers.
  • LiteLLM. Resume Matcher pins litellm==1.104.2 and was not affected by the compromised LiteLLM 1.107.0 release of 2026-10-21. Keep that pin in mind before upgrading LiteLLM.
  • Dependency updates: cryptography 50.0.0, Next.js 16.3.3, DOMPurify 3.4.13, undici 7.30.0, sharp 0.35.4, js-yaml 4.3.2 and Vitest.

Upgrading from 1.3

Back up the complete data directory first, as always: the database, config.json, uploaded files and the hidden .secret_key together.

  • The app now listens on 127.0.0.1 only. If you open it from another machine or a reverse proxy, set BIND_ADDRESS (Docker Compose) or HOST (source installs) and add the host name to ALLOWED_HOSTS, for example BIND_ADDRESS=0.0.0.0 ALLOWED_HOSTS=192.168.1.20 docker compose up -d. See SETUP.md for details.
  • Database changes are additive and run on startup: new columns for ATS scores, per-resume formatting and forced keywords.
  • Source installs still need Node.js 22+ and Python 3.13+; reinstall dependencies after pulling.

Docker images

Release tag: v1.4.0. Versioned images for Linux amd64 and arm64 publish to GHCR and Docker Hub:

docker pull ghcr.io/srbhr/resume-matcher:1.4.0
# or
docker pull srbhr/resume-matcher:1.4.0

The image tags are 1.4.0 and 1.4.

Verification

The release passed 1,944 backend tests and 1,596 frontend tests with type checking. The writing loop, live progress and keyword forcing were also run end to end against a real model through the app's proxy.

Thank you

Thank you to everyone who contributed code, reported bugs on Discord and GitHub, tested fixes and reviewed this release.

Contributors to this release: @576657922, @AlexanderMorris2k, @Bdysj, @coolb0y, @Frankli9986, @gingeekrishna, @GongYuanCaiJi, @himalyansailor, @HT-Moh, @kobihikri, @MahediBuilds, @rrvrs, @srbhr.

Automation contributions are credited to @dependabot.

All changes and first-time contributors

What's Changed

  • build(deps): bump @vitest/mocker and vitest in /apps/frontend by @dependabot[bot] in #996
  • chore(deps): bump cryptography from 48.0.1 to 50.0.0 in /apps/backend by @dependabot[bot] in #910
  • build(deps): bump sharp from 0.35.3 to 0.35.4 in /apps/frontend by @dependabot[bot] in #998
  • build(deps-dev): bump js-yaml from 4.3.0 to 4.3.2 in /apps/frontend by @dependabot[bot] in #997
  • chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /apps/frontend by @dependabot[bot] in #915
  • build(deps): bump next from 16.2.12 to 16.3.3 in /apps/frontend by @dependabot[bot] in #999
  • fix(builder): allow reordering items in Projects and custom sections by @Bdysj in #1001
  • feat(builder): allow reordering description points within an entry by @srbhr in #1007
  • build(deps): bump undici from 7.29.0 to 7.30.0 in /apps/frontend by @dependabot[bot] in #1009
  • feat: multi-track master resumes, harness-steered bullet selection, and resume duplication by @srbhr in #1010
  • chore: configure ruff linter and formatter for backend by @srbhr in #1016
  • docs(readme): refresh PDF template previews and add LaTeX, Clean and Vivid by @srbhr in #1028
  • feat(tailor): configurable page limit and bullet cap by @himalyansailor in #1034
  • feat(ats): score title match and dates, keep the last score in the builder by @himalyansailor in #1033
  • fix(refiner): stop the phrase scrub rewriting the candidate's own words by @himalyansailor in #1041
  • feat: MCP server, ATS parse-check and optional PostgreSQL backend by @rrvrs in #1022
  • fix(parser): keep every skill when parsing an uploaded resume by @himalyansailor in #1037
  • Release: promote dev to main (contributor PRs, MCP server, ATS check, subscription sign-in, community links) by @srbhr in #1042
  • docs: add Windows 11 setup instructions by @576657922 in #1021
  • feat(queue): Sequential resume tailoring queue with zero-LLM metadata extraction & cooldown protection by @coolb0y in #1027
  • feat(llm): add Claude Code CLI as a local, key-less LLM provider by @GongYuanCaiJi in #886
  • ci: attach provenance and SBOM attestations to the published image by @kobihikri in #904
  • fix: #909 deferred finding #3 (api_base null bug) and #4 (customSections filter) by @Frankli9986 in #912
  • fix(resume): render skills/languages/certs/awards as individual tags, not a continuous string by @gingeekrishna in #875
  • Release: promote dev to main (#1035, #875, faster Docker builds, WebP README images) by @srbhr in #1043
  • fix(llm): omit temperature for models without sampling; raise diff budget by @HT-Moh in #1035
  • Release: new templates (Deedy, Modern Deedy, Vivid Single) and multi-page resumes by @srbhr in #1044
  • fix: stop saved API keys being sent to arbitrary servers, fix .doc uploads, and 6 more bugs by @MahediBuilds in #1045
  • chore(frontend): replace Prettier with Oxfmt by @srbhr in #1046
  • Release: API-key security fix, upload/PDF reliability fixes, Oxfmt by @srbhr in #1047
  • Listen on loopback by default, reject unexpected hosts; Ollama-in-Docker setup by @srbhr in #1048
  • fix(pdf): match the PDF to the preview and save formatting per resume (#1050) by @srbhr in #1051
  • feat(settings): pick the Claude Code model; confirm subscription provider risk by @srbhr in #1052
  • Release: Claude Code model picker and subscription risk dialog (#1052) by @srbhr in #1053
  • Use Resume Matcher with a coding agent: no API key, live UI updates by @srbhr in #1054
  • Use Resume Matcher with a coding agent: no API key, live UI updates by @srbhr in #1056
  • Updated README by @srbhr in #1055
  • Update README by @srbhr in #1058
  • fix(jd-match): show the ATS keyword match, not a second number by @srbhr in #1057
  • Writing critique-and-rewrite loop, Heavy rewrite, live progress, and keyword forcing by @srbhr in #1060
  • Evidence-based cover letters (#1059) with agent mode, editor tip and docs aligned by @srbhr in #1061
  • feat: adopt evidence-based cover-letter writing approach by @AlexanderMorris2k in #1059 (merged through #1061)
  • Release 1.4 Short Circuit by @srbhr in #1062

New Contributors

Full Changelog: v1.3.0...v1.4.0

Don't miss a new Resume-Matcher release

NewReleases is sending notifications on new releases.