{"_id":"@anth0nycodes/resume-analyzer","_rev":"5-5ad115d1da07f42c5c4b18d04a869ac1","name":"@anth0nycodes/resume-analyzer","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@anth0nycodes/resume-analyzer","version":"1.0.0","keywords":["ai","resume","resume-analyzer","job-search","cli","agent","llm"],"author":{"name":"anth0nycodes"},"license":"MIT","_id":"@anth0nycodes/resume-analyzer@1.0.0","maintainers":[{"name":"anth0nycodes","email":"hoanganthony2207@gmail.com"}],"homepage":"https://github.com/anth0nycodes/resume-analyzer#readme","bugs":{"url":"https://github.com/anth0nycodes/resume-analyzer/issues"},"bin":{"resume-analyzer":"dist/index.js"},"dist":{"shasum":"9f171a0b738ab1b0997065bd99e8841f53ca6c96","tarball":"https://registry.npmjs.org/@anth0nycodes/resume-analyzer/-/resume-analyzer-1.0.0.tgz","fileCount":59,"integrity":"sha512-SmDs2K9lP9dp4SEgbsavg83EXSoDoQi+FvGZx27inOjItduQDMZrGSKqL3JhQwrqx9yEHe75Hak0NGttRPgHiQ==","signatures":[{"sig":"MEUCIQC6ioC46zXHVDPJaZ+5RfurPofhyx/M7KZgZZe32vS/4AIgDufo8vwCnmczf8DxG+KJsOGqU1il+TX1FggG3YlkMok=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84101},"main":"dist/index.js","type":"module","_from":"file:anth0nycodes-resume-analyzer-1.0.0.tgz","types":"./dist/index.d.ts","scripts":{"dev":"tsx src/index.ts","build":"tsc","check":"tsc --noEmit","start":"node dist/index.js","publish:npm":"pnpm publish --access public"},"_npmUser":{"name":"anth0nycodes","email":"hoanganthony2207@gmail.com"},"_resolved":"/private/var/folders/t_/fd2z6bpn1nq0vhz1dfty2f6c0000gn/T/2051031e1698f5a4a2c94dceaf2d41b8/anth0nycodes-resume-analyzer-1.0.0.tgz","_integrity":"sha512-SmDs2K9lP9dp4SEgbsavg83EXSoDoQi+FvGZx27inOjItduQDMZrGSKqL3JhQwrqx9yEHe75Hak0NGttRPgHiQ==","repository":{"url":"git+https://github.com/anth0nycodes/resume-analyzer.git","type":"git"},"_npmVersion":"10.9.4","description":"An AI-powered CLI that analyzes your resume against a job description and scores how well they match.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ai":"^7.0.66","zod":"^4.4.3","chalk":"^6.0.0","commander":"^15.0.0","@ai-sdk/openai":"^4.0.42","@clack/prompts":"^1.7.0","@firecrawl/anydoc":"^0.1.9","@inquirer/prompts":"^8.5.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/resume-analyzer_1.0.0_1787205921033_0.8173608619076529","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@anth0nycodes/resume-analyzer","version":"1.0.1","keywords":["ai","resume","resume-analyzer","job-search","cli","agent","llm"],"author":{"name":"anth0nycodes"},"license":"MIT","_id":"@anth0nycodes/resume-analyzer@1.0.1","maintainers":[{"name":"anth0nycodes","email":"hoanganthony2207@gmail.com"}],"homepage":"https://github.com/anth0nycodes/resume-analyzer#readme","bugs":{"url":"https://github.com/anth0nycodes/resume-analyzer/issues"},"bin":{"resume-analyzer":"dist/index.js"},"dist":{"shasum":"33ba706fc3797f67857e2c36e392e56d5a1e0529","tarball":"https://registry.npmjs.org/@anth0nycodes/resume-analyzer/-/resume-analyzer-1.0.1.tgz","fileCount":59,"integrity":"sha512-3949XWZCHx8aR1CRT3k4Z15++mDdUnVPNT/3WHrlRPLSslD7Q0xbDTjPXwNsMRbhavtudGGhV4Kg3ITdYDOV8A==","signatures":[{"sig":"MEQCIF6agtLDI2RNdqsHh2x4tJH2hoa7VHbN6vk+dnfxfyR2AiBm0BSqCrf9lPbC7ulZVpIxe/og8OKxiboftoRP2bxd0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84926},"main":"dist/index.js","type":"module","_from":"file:anth0nycodes-resume-analyzer-1.0.1.tgz","types":"./dist/index.d.ts","scripts":{"dev":"tsx src/index.ts","build":"tsc","check":"tsc --noEmit","start":"node dist/index.js","publish:npm":"pnpm publish --access public"},"_npmUser":{"name":"anth0nycodes","email":"hoanganthony2207@gmail.com"},"_resolved":"/private/var/folders/t_/fd2z6bpn1nq0vhz1dfty2f6c0000gn/T/ff132b7194db30f2bf4ca317c0951fbe/anth0nycodes-resume-analyzer-1.0.1.tgz","_integrity":"sha512-3949XWZCHx8aR1CRT3k4Z15++mDdUnVPNT/3WHrlRPLSslD7Q0xbDTjPXwNsMRbhavtudGGhV4Kg3ITdYDOV8A==","repository":{"url":"git+https://github.com/anth0nycodes/resume-analyzer.git","type":"git"},"_npmVersion":"10.9.4","description":"An AI-powered CLI that analyzes your resume against a job description and scores how well they match.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ai":"^7.0.66","zod":"^4.4.3","chalk":"^6.0.0","commander":"^15.0.0","@ai-sdk/openai":"^4.0.42","@clack/prompts":"^1.7.0","@firecrawl/anydoc":"^0.1.9","@inquirer/prompts":"^8.5.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/resume-analyzer_1.0.1_1787207455647_0.7184964220467813","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@anth0nycodes/resume-analyzer","version":"1.0.2","keywords":["ai","resume","resume-analyzer","job-search","cli","agent","llm"],"author":{"name":"anth0nycodes"},"license":"MIT","_id":"@anth0nycodes/resume-analyzer@1.0.2","maintainers":[{"name":"anth0nycodes","email":"hoanganthony2207@gmail.com"}],"homepage":"https://github.com/anth0nycodes/resume-analyzer#readme","bugs":{"url":"https://github.com/anth0nycodes/resume-analyzer/issues"},"bin":{"resume-analyzer":"dist/index.js"},"dist":{"shasum":"615d4cd17f2ce3a9e45a3777a4b21a9ded2d24f9","tarball":"https://registry.npmjs.org/@anth0nycodes/resume-analyzer/-/resume-analyzer-1.0.2.tgz","fileCount":59,"integrity":"sha512-IYCYVYgmJbstypFsnepvcClVlXajzda+LPCtQXaSygvBs8oxNhU7stQLsLAZWv5R7BSusqc/2rxIq7ay94eNFw==","signatures":[{"sig":"MEUCIQC2DLGwlCv3YQINj0H3dcA7bDCUKNW1lqDanz9htlK5FwIgKfDaWCizEOak/7wXRHHtlPKTM4TUlRGEnRtcU6tqH0s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84954},"main":"dist/index.js","type":"module","_from":"file:anth0nycodes-resume-analyzer-1.0.2.tgz","types":"./dist/index.d.ts","scripts":{"dev":"tsx src/index.ts","build":"tsc","check":"tsc --noEmit","start":"node dist/index.js","publish:npm":"pnpm publish --access public"},"_npmUser":{"name":"anth0nycodes","email":"hoanganthony2207@gmail.com"},"_resolved":"/private/var/folders/t_/fd2z6bpn1nq0vhz1dfty2f6c0000gn/T/4c4bf7f587b8f74c11f2ba6bfeb060c3/anth0nycodes-resume-analyzer-1.0.2.tgz","_integrity":"sha512-IYCYVYgmJbstypFsnepvcClVlXajzda+LPCtQXaSygvBs8oxNhU7stQLsLAZWv5R7BSusqc/2rxIq7ay94eNFw==","repository":{"url":"git+https://github.com/anth0nycodes/resume-analyzer.git","type":"git"},"_npmVersion":"10.9.4","description":"An AI-powered CLI that analyzes your resume against a job description and scores how well they match.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ai":"^7.0.66","zod":"^4.4.3","chalk":"^6.0.0","commander":"^15.0.0","@ai-sdk/openai":"^4.0.42","@clack/prompts":"^1.7.0","@firecrawl/anydoc":"^0.1.9","@inquirer/prompts":"^8.5.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/resume-analyzer_1.0.2_1787208581931_0.7458108723898624","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@anth0nycodes/resume-analyzer","version":"1.0.3","keywords":["ai","resume","resume-analyzer","job-search","cli","agent","llm"],"author":{"name":"anth0nycodes"},"license":"MIT","_id":"@anth0nycodes/resume-analyzer@1.0.3","maintainers":[{"name":"anth0nycodes","email":"hoanganthony2207@gmail.com"}],"homepage":"https://github.com/anth0nycodes/resume-analyzer#readme","bugs":{"url":"https://github.com/anth0nycodes/resume-analyzer/issues"},"bin":{"resume-analyzer":"dist/index.js"},"dist":{"shasum":"b639bd554d25ff50d1bfbfa17e80352e2abb8f33","tarball":"https://registry.npmjs.org/@anth0nycodes/resume-analyzer/-/resume-analyzer-1.0.3.tgz","fileCount":59,"integrity":"sha512-KooDOLqgE646ZchfquEvO5zAdIrHGfwb8SU+4iXkI2iM2uh9u0B8X0n/rhP1tdRww8QUKXJJP20mF2gtN/C4Gg==","signatures":[{"sig":"MEYCIQCUuE9w2L4trGDD8pvMmThtQc2a6zNmbb4krboplwxxVwIhAMLj0ICvWTM7jEGO7gAqvD/B7RhU/fsSK/7ldnbldJ8x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85457},"main":"dist/index.js","type":"module","_from":"file:anth0nycodes-resume-analyzer-1.0.3.tgz","types":"./dist/index.d.ts","scripts":{"dev":"tsx src/index.ts","build":"tsc","check":"tsc --noEmit","start":"node dist/index.js","publish:npm":"pnpm publish --access public"},"_npmUser":{"name":"anth0nycodes","email":"hoanganthony2207@gmail.com"},"_resolved":"/private/var/folders/t_/fd2z6bpn1nq0vhz1dfty2f6c0000gn/T/e53e1d3d12a278da59bd465596be68b5/anth0nycodes-resume-analyzer-1.0.3.tgz","_integrity":"sha512-KooDOLqgE646ZchfquEvO5zAdIrHGfwb8SU+4iXkI2iM2uh9u0B8X0n/rhP1tdRww8QUKXJJP20mF2gtN/C4Gg==","repository":{"url":"git+https://github.com/anth0nycodes/resume-analyzer.git","type":"git"},"_npmVersion":"10.9.4","description":"An AI-powered CLI that analyzes your resume against a job description and scores how well they match.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ai":"^7.0.66","zod":"^4.4.3","chalk":"^6.0.0","commander":"^15.0.0","@ai-sdk/openai":"^4.0.42","@clack/prompts":"^1.7.0","@firecrawl/anydoc":"^0.1.9","@inquirer/prompts":"^8.5.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/resume-analyzer_1.0.3_1787211366715_0.4983870612020602","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@anth0nycodes/resume-analyzer","version":"1.0.4","description":"An AI-powered CLI that analyzes your resume against a job description and scores how well they match.","type":"module","main":"dist/index.js","bin":{"resume-analyzer":"dist/index.js"},"keywords":["ai","resume","resume-analyzer","job-search","cli","agent","llm"],"license":"MIT","author":{"name":"anth0nycodes"},"repository":{"type":"git","url":"git+https://github.com/anth0nycodes/resume-analyzer.git"},"bugs":{"url":"https://github.com/anth0nycodes/resume-analyzer/issues"},"homepage":"https://github.com/anth0nycodes/resume-analyzer#readme","dependencies":{"@ai-sdk/openai":"^4.0.42","@clack/prompts":"^1.7.0","@firecrawl/anydoc":"^0.1.9","@inquirer/prompts":"^8.5.2","ai":"^7.0.66","chalk":"^6.0.0","commander":"^15.0.0","zod":"^4.4.3"},"devDependencies":{"@types/node":"^26.2.0","tsx":"^4.23.12","typescript":"^7.0.2"},"scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","check":"tsc --noEmit","publish:npm":"pnpm publish --access public"},"_id":"@anth0nycodes/resume-analyzer@1.0.4","types":"./dist/index.d.ts","_integrity":"sha512-kpw9YE/WD0DYUwpipmuRlGD6g/n/QQUMeJstAZ+Klajpsp31rrxe+3QubhGxxN6egFnNb301MDnpyDY+0Vmo4w==","_resolved":"/private/var/folders/t_/fd2z6bpn1nq0vhz1dfty2f6c0000gn/T/1415082394cc8a9b79dfd07d27f7ad42/anth0nycodes-resume-analyzer-1.0.4.tgz","_from":"file:anth0nycodes-resume-analyzer-1.0.4.tgz","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-kpw9YE/WD0DYUwpipmuRlGD6g/n/QQUMeJstAZ+Klajpsp31rrxe+3QubhGxxN6egFnNb301MDnpyDY+0Vmo4w==","shasum":"1ccd0ba9992285d339ac07821552cab7a74ffd20","tarball":"https://registry.npmjs.org/@anth0nycodes/resume-analyzer/-/resume-analyzer-1.0.4.tgz","fileCount":59,"unpackedSize":86796,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCXzF7jF0R/74m7CCybO1RapJbZ9olSrV6woeH5s2GPMwIgWf/w2nWoOD1VlyCP1TdHmuI+2WzhWe1SNTQUTtkHJQ0="}]},"_npmUser":{"name":"anth0nycodes","email":"hoanganthony2207@gmail.com"},"directories":{},"maintainers":[{"name":"anth0nycodes","email":"hoanganthony2207@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/resume-analyzer_1.0.4_1787366579266_0.4697489590048318"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-20T06:05:20.845Z","modified":"2026-08-22T02:42:59.550Z","1.0.0":"2026-08-20T06:05:21.174Z","1.0.1":"2026-08-20T06:30:55.788Z","1.0.2":"2026-08-20T06:49:42.078Z","1.0.3":"2026-08-20T07:36:06.862Z","1.0.4":"2026-08-22T02:42:59.402Z"},"bugs":{"url":"https://github.com/anth0nycodes/resume-analyzer/issues"},"author":{"name":"anth0nycodes"},"license":"MIT","homepage":"https://github.com/anth0nycodes/resume-analyzer#readme","keywords":["ai","resume","resume-analyzer","job-search","cli","agent","llm"],"repository":{"type":"git","url":"git+https://github.com/anth0nycodes/resume-analyzer.git"},"description":"An AI-powered CLI that analyzes your resume against a job description and scores how well they match.","maintainers":[{"name":"anth0nycodes","email":"hoanganthony2207@gmail.com"}],"readme":"# 🤖 resume-analyzer\n\nAn AI-powered CLI that analyzes your resume against a job description and scores how well they match.\n\n![demo](./assets/demo.gif)\n\n<p align=\"center\">\n  <img alt=\"GitHub Stars\" src=\"https://img.shields.io/github/stars/anth0nycodes/resume-analyzer?style=plastic\">\n  <img alt=\"NPM Downloads\" src=\"https://img.shields.io/npm/d18m/%40anth0nycodes%2Fresume-analyzer?style=plastic\">\n</p>\n\n## Installation\n\n```bash\nnpm install -g @anth0nycodes/resume-analyzer\n```\n\n## Setup\n\nThe CLI calls the OpenAI API with **your own** API key, so you need one before running an analysis.\n\n1. Get an API key — run `resume-analyzer config --aki` for step-by-step instructions.\n2. Save it:\n\n   ```bash\n   resume-analyzer config --set-api-key <api-key>\n   ```\n\n3. (Optional) Pick a default model:\n\n   ```bash\n   resume-analyzer models\n   ```\n\nYour API key, default model, and analysis history live in `~/.resume-analyzer/`.\n\n> [!NOTE]\n> An OpenAI API key needs billing credits to work — a ChatGPT Plus subscription does **not** cover API usage.\n\n## Usage\n\n### Default\n\n```bash\nresume-analyzer\n```\n\nShows basic information about the tool. Run `resume-analyzer -h` / `resume-analyzer --help` for additional information.\n\n### Commands\n\n#### Analyze a Resume\n\nRun an analysis against a job description:\n\n```bash\nresume-analyzer analyze\n```\n\nThe flow is interactive:\n\n1. Pick your resume — via a native file dialog, or from a list of files in `Desktop/` and `Downloads/`.\n2. Paste the job description into your `$EDITOR` (`$VISUAL`/`$EDITOR`, falling back to `vi` or `notepad`), then save and close.\n3. The resume is converted to Markdown and sent to OpenAI along with the job description.\n\nYou get back a **score out of 100**, plus strengths, suggestions, gaps, and missing keywords — all judged against that specific posting. Every run is saved to your history.\n\n> [!NOTE]\n> Only `PDF` and `DOCX` resumes are supported.\n\n#### View History\n\nBrowse past analyses in an interactive picker:\n\n```bash\nresume-analyzer history\n```\n\nOr jump straight to a run by its ID:\n\n```bash\nresume-analyzer history <run-id>\n```\n\n#### Manage Models\n\nPick the default model interactively:\n\n```bash\nresume-analyzer models\n```\n\nList the supported models (the current default is marked):\n\n```bash\nresume-analyzer models --lm\n# or\nresume-analyzer models --list-models\n```\n\nSet your default model:\n\n```bash\nresume-analyzer models --sm <model>\n# or\nresume-analyzer models --set-model <model>\n```\n\nReset your default model:\n\n```bash\nresume-analyzer models --rm\n# or\nresume-analyzer models --reset-model\n```\n\n#### API Key Info\n\nShow instructions on how to create an OpenAI API key:\n\n```bash\nresume-analyzer config --aki\n# or\nresume-analyzer config --api-key-info\n```\n\n#### Set API Key\n\nSet your API key:\n\n```bash\nresume-analyzer config --sak <api-key>\n# or\nresume-analyzer config --set-api-key <api-key>\n```\n\n#### Show Config\n\nDisplay your current configuration settings (contains API key):\n\n```bash\nresume-analyzer config --sc\n# or\nresume-analyzer config --show-config\n```\n\n#### Reset Config\n\nResets your current configuration settings (clears API key and default model):\n\n```bash\nresume-analyzer config --rc\n# or\nresume-analyzer config --reset-config\n```\n\n## Contributing\n\nContributions are welcome! Whether it's a bug fix, new feature, or docs improvement, see [CONTRIBUTING.md](./CONTRIBUTING.md) for how to get started.\n\nFound a bug? [Open a bug report](https://github.com/anth0nycodes/resume-analyzer/issues/new?template=bug_report.md).\n","readmeFilename":"README.md"}