Skip to content

KartikSharma4448/CVCraft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CVCraft Logo

CVCraft

AI-Powered ATS Resume Builder

Build professional, ATS-optimized resumes with AI-powered content refinement, real-time scoring, and instant PDF export β€” completely free, no signup required.


✨ Features

Feature Description
πŸ€– AI Content Refinement Improve resume sections using NVIDIA Gemma-2 AI
πŸ“Š Real-time ATS Scoring Instant ATS compatibility scores with matched/missing keyword analysis
πŸ“„ Professional PDF Export Download ATS-optimized PDFs in 2 proven formats
πŸ‘οΈ Live Preview See your resume update in real-time as you type
🎨 2 ATS Templates Jake Ryan Professional & Clean ATS format
πŸ†“ No Signup Required Completely free, no account needed
πŸ“ˆ GA4 Analytics Built-in Google Analytics 4 tracking
πŸ” SEO Optimized Open Graph, Twitter Cards, JSON-LD structured data

πŸ› οΈ Tech Stack

Frontend

React TailwindCSS shadcn/ui jsPDF fast-check

Backend

FastAPI Python NVIDIA MongoDB Redis Hypothesis

AI Models (NVIDIA NIM)

Model Purpose
gemma-2-2b-it Resume content refinement & generation
nv-embed-v1 Semantic text embeddings for ATS scoring
rerank-qa-mistral-4b Relevance reranking for keyword matching

πŸš€ Getting Started

Prerequisites

  • Node.js 18+ & Yarn
  • Python 3.10+
  • MongoDB (local or Atlas)
  • Redis (optional β€” app works without it locally)

Backend Setup

cd backend
python -m venv .venv
.venv\Scripts\activate        # Windows
# source .venv/bin/activate   # macOS/Linux
pip install -r requirements.txt

Create backend/.env:

MONGO_URL=mongodb://localhost:27017
DB_NAME=cvcraft
CORS_ORIGINS=*

# NVIDIA API Keys (get from build.nvidia.com)
GEMMA_API_KEY=nvapi-xxxxx
EMBED_API_KEY=nvapi-xxxxx
RERANK_API_KEY=nvapi-xxxxx

# Local dev: relaxed rate limits
ANON_RATE_PER_MIN=100
ANON_DAILY_LIMIT=1000

Start the server:

uvicorn server:app --host 0.0.0.0 --port 8000 --reload

Frontend Setup

cd frontend
yarn install

Create frontend/.env:

REACT_APP_BACKEND_URL=http://127.0.0.1:8000

Start the dev server:

yarn start

Open http://localhost:3000 πŸŽ‰


πŸ“‘ API Endpoints

Method Endpoint Description
POST /api/ai/refine AI-powered text refinement
POST /api/ai/generate General AI text generation
POST /api/ai/latex Generate LaTeX from CV data
POST /api/ats/score Enhanced ATS scoring with term breakdown
POST /api/pdf/compile Server-side PDF compilation (requires pdflatex)
POST /api/ai/ats Legacy ATS scoring
GET /api/ Health check

πŸ§ͺ Testing

Backend (42 tests β€” Hypothesis property-based + pytest)

cd backend
.venv\Scripts\python -m pytest tests/ -v

Frontend (42 tests β€” fast-check property-based + Jest)

cd frontend
npx craco test --watchAll=false

84 total tests covering:

  • ATS score bounds & fallback behavior
  • Cache deduplication
  • Backward compatibility
  • AI toggle behavior
  • PDF compilation
  • Integration flows

πŸ“ Project Structure

CVCraft/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ server.py            # FastAPI app entry point
β”‚   β”œβ”€β”€ ai_router.py         # AI endpoints (refine, generate, embed, rerank)
β”‚   β”œβ”€β”€ ats_router.py        # Enhanced ATS scoring endpoint
β”‚   β”œβ”€β”€ pdf_router.py        # PDF compilation endpoint
β”‚   β”œβ”€β”€ template_engine.py   # LaTeX template rendering (6 templates)
β”‚   β”œβ”€β”€ auth_router.py       # Authentication (unused β€” app is free)
β”‚   β”œβ”€β”€ limits.py            # Rate limiting & caching utilities
β”‚   β”œβ”€β”€ redis_client.py      # Redis connection (with in-memory fallback)
β”‚   β”œβ”€β”€ email_sender.py      # Email utilities
β”‚   β”œβ”€β”€ requirements.txt     # Python dependencies
β”‚   └── tests/               # Property-based & unit tests (42 tests)
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ App.js           # Main app with routing & GA4
β”‚   β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”‚   β”œβ”€β”€ Home.jsx     # Landing page with SEO
β”‚   β”‚   β”‚   └── CreateCV.jsx # CV editor with AI features
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ CVPreview.jsx        # Live CV preview (2 templates)
β”‚   β”‚   β”‚   β”œβ”€β”€ AIToggle.jsx         # AI refinement toggle
β”‚   β”‚   β”‚   β”œβ”€β”€ TemplateSelector.jsx # Template picker
β”‚   β”‚   β”‚   β”œβ”€β”€ ATSScorePanel.jsx    # ATS score display
β”‚   β”‚   β”‚   └── SEOHead.jsx          # SEO meta tags
β”‚   β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”‚   β”œβ”€β”€ api.js        # Backend API client
β”‚   β”‚   β”‚   └── analytics.js  # GA4 tracking utilities
β”‚   β”‚   └── __tests__/        # Frontend property tests
β”‚   β”œβ”€β”€ public/
β”‚   └── package.json
└── README.md

πŸ“Έ Screenshots

Home Page CV Editor
Home Page CV Editor

| Landing with features & CTA | Real-time editor with AI + ATS |


πŸ”‘ Environment Variables

Variable Required Description
MONGO_URL βœ… MongoDB connection string
DB_NAME βœ… Database name
GEMMA_API_KEY ⚑ NVIDIA Gemma-2 API key (AI features)
EMBED_API_KEY ⚑ NVIDIA nv-embed-v1 key (semantic ATS)
RERANK_API_KEY ⚑ NVIDIA rerank key (semantic ATS)
REDIS_URL ❌ Redis URL (optional β€” in-memory fallback)
REACT_APP_GA4_ID ❌ Google Analytics 4 measurement ID
CORS_ORIGINS ❌ Allowed CORS origins (default: *)

⚑ = Required for full AI features. App works without them (graceful fallback).


πŸ“„ License

MIT Β© Kartik Sharma


Built with ❀️ by Kartik Sharma

About

Full-stack resume builder and portfolio app for creating polished CVs and professional profiles.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors