AI-powered resume optimization with confidence scoring and factual grounding
Status: π PRODUCTION READY | Live Demo | Documentation
Resume Optimizer is a full-stack web application that helps job seekers create tailored resumes by analyzing their background against specific job postings. The system prevents AI hallucinations through confidence scoring and citation tracking.
- β Multi-source Input: Resume, cover letter, LinkedIn, job posting, company website
- β 4-Dimension Analysis: Technical skills, experience level, industry knowledge, soft skills
- β Dual Resume Generation: Tactical (keyword matches) + Extrapolated (contextual inference)
- β Confidence Scoring: β₯80% auto-included, 60-79% require approval, <60% excluded
- β Citation Tracking: Every claim links back to source material
- β Study Guide: Personalized learning resources for skill gaps
- β 24-Hour Sessions: Automatic data deletion for privacy
- React 18 + Vite
- Tailwind CSS
- Rich text editor (Quill/TipTap)
- Real-time API integration
- Python FastAPI
- SQLAlchemy ORM
- SQLite database (swappable to PostgreSQL)
- Claude API (Anthropic)
- PyPDF2, python-docx (resume parsing)
- BeautifulSoup4, aiohttp (web scraping)
- ReportLab (PDF export)
- Python 3.9+
- Node.js 18+
- Anthropic API key (Get one here)
# 1. Clone the repository
git clone https://github.com/psadigh91/JobApplicationCoach.git
cd JobApplicationCoach
# 2. Navigate to project directory (if nested)
cd resume-optimizer # Only if files are in subdirectory
# 3. Run setup script
chmod +x scripts/setup.sh
./scripts/setup.sh
# 4. Configure environment
cp .env.example .env
# Edit .env and add your ANTHROPIC_API_KEY
# 5. Start the application
./scripts/start.sh- Frontend: http://localhost:5173
- API: http://localhost:8000
- API Docs: http://localhost:8000/docs
./scripts/stop.shresume-optimizer/
βββ backend/ # Python FastAPI backend
β βββ core/ # Business logic
β β βββ database.py # SQLAlchemy models
β β βββ extractors/ # Data extraction modules
β βββ api/ # API endpoints (8 routers)
β βββ main.py # FastAPI app
βββ frontend/ # React frontend
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # 6 wizard pages
β β βββ context/ # State management
β β βββ services/ # API client
β βββ package.json
βββ database/ # SQLite database (auto-created)
βββ uploads/ # Temporary file storage
βββ scripts/ # Setup/start/stop scripts
βββ docs/ # Documentation
- Upload Inputs - Resume, cover letter, LinkedIn, job posting, company URL
- Interactive Q&A - Additional context (interview stage, recruiter insights)
- Review Analysis - 4-dimension scorecard with gaps & matches
- Edit Resumes - Side-by-side tactical vs extrapolated
- Study Guide - Resources for skill gaps (YouTube, courses, articles)
- Export - Download optimized resumes (PDF/HTML)
Conservative inference with confidence scores:
- β₯80% confidence: Auto-included with green badge
- 60-79% confidence: Flagged with yellow badge + requires user approval
- <60% confidence: Excluded entirely
Citation requirement: Every claim must cite source (resume, LinkedIn, cover letter, or company research)
POST /- Create sessionGET /{id}- Get session statusPUT /{id}/step- Update wizard stepDELETE /{id}- Delete session
POST /resume- Upload resumePOST /job-posting- Upload job postingPOST /job-posting-url- Scrape job from URL
POST /start- Start AI analysisGET /{session_id}/scorecard- Get results
POST /generate- Generate resumesGET /{version_id}- Get resume version
See API Documentation for complete endpoint list.
9 Core Tables:
sessions- 24-hour user sessionsuploads- File uploads with processing statuslinkedin_data- Profile data from URL/PDFcompany_research- Website crawl results (max 10 pages)analysis_results- 4-dimension scorecardresume_versions- Tactical + extrapolated versionscitations- Source tracking for all claimsstudy_resources- Learning resources by gapqa_responses- Interactive Q&A data
DATABASE_URL=sqlite:///./database/resume_optimizer.db
ANTHROPIC_API_KEY=your_api_key_here
API_HOST=0.0.0.0
API_PORT=8000
SESSION_EXPIRY_HOURS=24
MAX_UPLOAD_SIZE_MB=10
MAX_CRAWL_PAGES=10
CRAWL_TIMEOUT_SECONDS=30# Build and run with Docker Compose
docker-compose up -d
# Access at http://localhostSee DEPLOYMENT.md for complete deployment guide including:
- AWS Amplify (frontend)
- AWS Elastic Beanstalk (backend)
- RDS PostgreSQL setup
cd backend
source venv/bin/activate
# Test database initialization
python -c "from core.database import init_db; init_db()"
# Start API server
python main.py
# Visit http://localhost:8000/docs for interactive API docscd frontend
npm install
npm run dev
# Visit http://localhost:5173- QUICKSTART.md - 5-minute setup guide
- DEPLOYMENT.md - Production deployment guide
- USER-GUIDE.md - Complete user manual
- API Documentation - Interactive API docs (when running)
- CONTRIBUTING.md - Contribution guidelines
- CODE_OF_CONDUCT.md - Community standards
- SECURITY.md - Security policy
- 24-hour auto-delete
- No permanent storage
- Session-based isolation
- No user accounts required
- No third-party sharing
- Input validation
- File type restrictions
- Size limits (10MB)
- CORS configuration
- SQL injection protection
See SECURITY.md for security policy and vulnerability reporting.
Contributions are welcome! Please see CONTRIBUTING.md for:
- How to report bugs
- How to suggest features
- Development setup
- Code style guidelines
- Pull request process
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with FastAPI
- Powered by Anthropic Claude
- UI components from Tailwind CSS
- Icons from Lucide React
- Complete full-stack implementation
- All 6 wizard steps
- Dual resume generation
- Study guide generation
- Export functionality
- PostgreSQL migration
- Redis caching
- User accounts (optional)
- Resume history
- A/B testing different prompts
- Interview prep module
- Cover letter generation
- LinkedIn optimizer
- Job board integration
For questions or issues:
- Open an issue on GitHub
- Check existing documentation
- Review FAQ in User Guide
β Star this repo if you find it helpful!
Built with β€οΈ using Claude Code