Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ResumeAI - AI-Powered Career Platform

ResumeAI is a premium, full-stack AI career platform designed to help job seekers optimize their resumes, tailor them dynamically via chat, generate cover letters, and track application insights. It utilizes a state-of-the-art Retrieval-Augmented Generation (RAG) pipeline powered by Groq LLMs, LangGraph, FAISS vector stores, and Jina AI embeddings.


🌟 Core Features

1. 💬 Stateful Interactive Resume Tailor

  • Conversational Dialogue Agent: When users issue broad instructions (e.g. "Help me add a new experience"), the chatbot dynamically asks sequential, structured follow-up questions instead of hallucinating missing data.
  • Interactive Workspace: Live dual-panel workspace featuring an Undo/Redo state stack, zoom scaling (50% - 150%), and suggested tailoring triggers.
  • ATS PDF Generator: Generates a high-fidelity, two-column ATS-friendly ReportLab PDF layout mimicking the preview template on download.

2. 🔍 RAG-Powered Resume Analyzer

  • ATS Quality Audit: Breakdown of match scores, strengths, weaknesses, formatting checks, and impact evaluations.
  • Job Matching Matrix: Matches resume text against target Job Descriptions using FAISS vector store indexing and Jina AI embeddings (jina-embeddings-v3).
  • Skills Gap Analysis: Displays matching/missing keywords, upskilling paths, and structured course suggestions.

3. 🔐 Enterprise Authentication & OAuth 2.0

  • Google OAuth 2.0: One-click Google Login and Registration via @react-oauth/google and Google ID Token verification.
  • Secure Token Management: Short-lived JWT Access Tokens combined with HTTP-only, rotated Refresh Tokens for multi-device session security.
  • Account Security: Account lockout after repeated failed login attempts, password reset workflow, email verification, and CSRF token protection.

4. ✍️ AI Resume Builder & Cover Letter Writer

  • Structured Builder: Form-driven UI converting career history directly to clean formatting.
  • Cover Letter Generator: Contextual cover letters matched to target roles and company names with one click.

📂 Project Directory Structure

resume_AI/
├── backend/
│   ├── app/
│   │   ├── middleware/      # CSRF and OWASP Security Headers middleware
│   │   ├── routers/         # API Endpoint controllers (auth, builder, resume, dashboard)
│   │   ├── services/        # Business logic (RAG pipeline, PDF utils, Google OAuth, Groq integrations)
│   │   ├── config.py        # Centralized Pydantic application settings
│   │   ├── database.py      # SQLAlchemy setup
│   │   ├── models.py        # SQLite / Postgres Database models
│   │   └── schemas.py       # Pydantic validation schemas
│   ├── tests/               # Pytest integration & unit test suites
│   ├── migrate_auth_upgrade.py # Database schema & OAuth migration script
│   ├── Dockerfile           # Backend container config
│   └── requirements.txt     # Python dependencies
├── frontend/
│   ├── src/
│   │   ├── api/             # Axios API client calls & token interceptors
│   │   ├── components/      # UI components (animations, guards, gauges, layout)
│   │   ├── context/         # React Auth, Theme, and Application contexts
│   │   └── pages/           # Pages (Landing, Dashboard, ResumeTailor, UploadResume, Login, Register)
│   ├── Dockerfile           # Multi-stage production Nginx container
│   ├── vercel.json          # SPA rewrite configs for Vercel
│   └── tailwind.config.js   # Tailored theme configs
├── docker-compose.yml       # Complete stack orchestrator
└── README.md                # Project documentation

🗄️ Database Architecture (SQLite / PostgreSQL)

The system uses an SQLite instance (backend/app.db) in development, managed via SQLAlchemy ORM.

Key Entities:

  1. users: Core user credentials, OAuth profiles (google_id, auth_provider), roles, email verification status, and lockout tracking.
  2. resumes: Uploaded raw text, metadata, and generated ReportLab PDF target paths.
  3. analyses: RAG comparison outputs (match_score, strengths, gaps, weaknesses, missing_skills, detailed_review).
  4. cover_letters: Generated cover letter document records.
  5. refresh_tokens & audit_logs: Multi-device token hashes, revocation tracking, and security audit event logs.

⚙️ Local Development Setup

Backend (Python FastAPI)

  1. Navigate to the backend directory:
    cd backend
  2. Create and activate a virtual environment:
    python -m venv venv
    # Windows:
    .\venv\Scripts\activate
    # Linux/macOS:
    source venv/bin/activate
  3. Install dependencies:
    pip install -r requirements.txt
  4. Create a .env file in backend/ containing:
    GROQ_API_KEY=your_groq_api_key
    GROQ_MODEL=llama-3.3-70b-versatile
    JINA_API_KEY=your_jina_api_key
    GOOGLE_CLIENT_ID=your_google_client_id
    SECRET_KEY=generate_a_long_random_string
    ALGORITHM=HS256
    DATABASE_URL=sqlite:///./app.db
    CORS_ORIGINS=http://localhost:5173,http://127.0.0.1:5173,http://localhost:3000
  5. Apply database schema migrations:
    python migrate_auth_upgrade.py
  6. Start the API server:
    uvicorn app.main:app --reload --port 8000

Frontend (React + TypeScript + Vite)

  1. Navigate to the frontend directory:
    cd frontend
  2. Install npm packages:
    npm install
  3. Create a .env file in frontend/ containing:
    VITE_API_URL=http://localhost:8000
    VITE_GOOGLE_CLIENT_ID=your_google_client_id
  4. Run the development server:
    npm run dev

🧪 Testing Suite

We use Pytest with mock clients to test database and router endpoints in isolation.

To run tests:

cd backend
$env:PYTHONPATH="."
.\venv\Scripts\python -m pytest tests/ -v

🐳 Docker Deployment

You can build and deploy the entire multi-container service stack locally using Docker Compose:

# Build and run backend and frontend containers
docker-compose up --build
  • Backend API: Available at http://localhost:8000
  • Frontend SPA (Nginx): Available at http://localhost:80

🌐 Production Cloud Deployment

1. Backend (Render)

  1. Import repository into Render as a Web Service or Blueprint (render.yaml).
  2. Set Environment Variables:
    • GROQ_API_KEY, JINA_API_KEY, GOOGLE_CLIENT_ID, SECRET_KEY, ENVIRONMENT=production.
    • Set CORS_ORIGINS to your production frontend domain (e.g. https://your-app.vercel.app).
  3. Run python migrate_auth_upgrade.py during build command.

2. Frontend (Vercel)

  1. Import repository into Vercel and set frontend as Root Directory.
  2. Set Environment Variables:
    • VITE_API_URL: Your backend Render URL (e.g., https://resumeai-nh1y.onrender.com)
    • VITE_GOOGLE_CLIENT_ID: Your Google OAuth Client ID
  3. Add your Vercel domain to Authorized JavaScript origins in Google Cloud Console.

About

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages