AI-powered resume scanner for the space and aerospace industry. Upload a PDF resume and get an ATS compatibility score, missing keyword analysis, and an AI-rewritten PDF — all powered by NVIDIA Nemotron vision model.
Live version → (part of Zero G Talent, a job board for 50+ space companies)
PDF Upload → pdfjs-dist → Page Images → Nemotron Vision → Structured JSON
-
PDF to Images — Client-side rendering with
pdfjs-dist. Each page is converted to a JPEG at 1.5x scale. Up to 3 pages analyzed. -
Vision Analysis (Temperature 0.3) — Resume images are sent to
nvidia/nemotron-nano-12b-v2-vl:freevia OpenRouter. The model performs OCR and analysis in a single pass, returning structured JSON with:- ATS compatibility score (0-100)
- Formatting quality score
- Keyword density score
- Space industry fit score
- Section-by-section breakdown
- Specific improvement suggestions
- Missing keywords for aerospace roles
-
Resume Rewriting (Temperature 0.4) — A second Nemotron call takes the original images + analysis feedback and generates an improved resume as structured JSON, which is rendered to a PDF using
jspdf. -
Job Matching — Keywords extracted from the analysis are matched against 30 sample aerospace jobs using simple text matching. In the live version, this searches across 10,000+ real job listings.
nvidia/nemotron-nano-12b-v2-vl is a 12B-parameter vision-language model optimized for document understanding. It can:
- Read text from complex resume layouts (multi-column, tables, graphics)
- Understand document structure (headers, sections, bullet points)
- Extract and evaluate content in a single pass
- Return structured JSON consistently at low temperature
The model is available free on OpenRouter, making it ideal for open-source projects.
The scanner uses two separate API calls with different temperatures:
| Call | Temperature | Purpose |
|---|---|---|
| Analysis | 0.3 | Consistent, structured scoring — needs to be deterministic |
| Rewriting | 0.4 | Creative rewording — needs slight variation for natural language |
This split avoids the trade-off between consistency (scoring) and creativity (rewriting).
# Clone
git clone https://github.com/mishafyi/nemotron-resume-scanner.git
cd nemotron-resume-scanner
# Set up environment
cp .env.example .env
# Edit .env and add your OpenRouter API key (free at https://openrouter.ai)
# Install and run
npm install
npm run devOpen http://localhost:3000 and upload a resume PDF.
- Go to openrouter.ai and sign up (free)
- Create an API key
- Add it to
.env:OPENROUTER_API_KEY=sk-or-v1-your-key-here
The Nemotron model is free on OpenRouter — no credit card required.
src/
├── app/
│ ├── layout.tsx # Root layout (dark theme, Space Grotesk font)
│ ├── page.tsx # Main scanner page
│ ├── globals.css # Tailwind + custom styles
│ └── api/
│ ├── analyze/route.ts # POST: resume → analysis JSON
│ ├── improve/route.ts # POST: resume + analysis → rewritten resume
│ └── match-jobs/route.ts # POST: analysis → matched sample jobs
├── components/
│ ├── ResumeUploader.tsx # Drag-and-drop PDF uploader with pdfjs
│ ├── AnalysisResults.tsx # Score rings, breakdowns, PDF generation
│ └── ui/ # shadcn/ui components (badge, button, separator)
├── lib/
│ ├── resumeAnalysis.ts # Nemotron prompt engineering + response parsing
│ ├── sampleJobs.ts # Simple keyword search over sample data
│ └── utils.ts # cn() utility
└── data/
└── sample-jobs.json # 30 sample aerospace jobs
-
src/lib/resumeAnalysis.ts— The core of the project. Contains the system prompt, vision message builder, and response parser. This is where the Nemotron prompt engineering lives. -
src/app/api/analyze/route.ts— Server-side API route that calls OpenRouter. Handles rate limiting, input validation, and error handling. -
src/components/ResumeUploader.tsx— Client-side PDF processing. Usespdfjs-distto render PDF pages to canvas, then converts to JPEG data URLs.
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router) |
| Frontend | React 19, Tailwind CSS 4, TypeScript |
| AI Model | NVIDIA Nemotron Nano 12B V2 VL (via OpenRouter) |
| PDF Processing | pdfjs-dist (client-side) |
| PDF Generation | jsPDF (client-side) |
| UI Components | shadcn/ui (badge, button, separator) |
No database. No authentication. No payments. Just clone, add a key, and run.
This project was built for the NVIDIA GTC DGX Spark contest. It demonstrates:
- Nemotron vision model for document understanding
- Structured output from a vision model (JSON parsing)
- Two-temperature pattern for analysis vs. creative generation
- Real-world application — resume analysis for the space industry
MIT — see LICENSE.
Built by Misha as part of Zero G Talent.