A full-stack intelligent AI-powered platform with Authentication, Resume Scanner, and Professional Email Writer built with FastAPI, LangChain, Groq LLM, Next.js, and SQLite
Live Demo β’ Report Bug β’ Request Feature
JobAI is a production-ready, full-stack career assistance platform that combines User Authentication, Resume Scanner, and Email Writer tools. Using Retrieval-Augmented Generation (RAG) and advanced AI, it provides secure, intelligent resume analysis and generates professional job application emails. Perfect for students, job seekers, and recruiters looking to leverage AI for career advancement.
- π Secure Sign Up & Login - JWT-based authentication
- π€ User Profiles - Personalized user experience
- ποΈ SQLite Database - Reliable data persistence
- π‘οΈ Protected Routes - Secure access to AI features
- π€ Upload Resume - Support for PDF format
- π€ AI-Powered Analysis - Intelligent skill extraction and profiling
- π Experience Summary - Automated career progression analysis
- π― RAG Architecture - Context-aware understanding using vector embeddings
- π‘ Actionable Feedback - Personalized recommendations for improvement
- βοΈ Professional Email Generation - AI-crafted job application emails
- π¨ Customizable Tone - Choose between Professional, Friendly, or Formal
- π Adjustable Length - Short, Medium, or Long format options
- β‘ Instant Generation - Get perfectly formatted emails in seconds
- π― Purpose-Driven - Tailored for job applications, follow-ups, and HR communication
- π Lightning Fast - Powered by Groq LLaMA 3.3 (70B parameters)
- π¨ Modern UI - Beautiful Next.js interface with Tailwind CSS
- π Secure & Private - Your data stays protected with authentication
graph TB
A[User] -->|Sign Up/Login| B[Next.js Frontend]
B -->|Authentication| C[FastAPI Backend]
C -->|Verify JWT| D[SQLite Database]
subgraph Authentication Flow
C -->|Store User Data| D
D -->|Return JWT Token| C
end
subgraph Resume Scanner Flow
C -->|Extract Text| E[PyPDF]
E -->|Chunk Text| F[LangChain]
F -->|Generate Embeddings| G[HuggingFace]
G -->|Store Vectors| H[ChromaDB]
H -->|Retrieve Context| I[Groq LLM]
end
subgraph Email Writer Flow
C -->|Process Request| J[Email Generator]
J -->|AI Prompt| I
end
I -->|AI Response| B
- Sign Up β User creates account with credentials
- Store β User data saved in SQLite database
- Login β User authenticates with email/password
- JWT Token β Server generates and returns JWT token
- Protected Access β Token required for Resume Scanner & Email Writer
- Upload β Authenticated user uploads resume (PDF format)
- Extract β Resume converted to text using PyPDF
- Chunk β Text split into semantic chunks
- Embed β Chunks converted to vector embeddings
- Store β Vectors stored in ChromaDB
- Query β User query sent to Groq LLM
- Retrieve β Relevant chunks retrieved from vector DB
- Generate β AI generates detailed feedback
- Input β Authenticated user provides email topic and preferences
- Customize β Select tone (Professional/Friendly/Formal) and length
- Generate β AI crafts personalized professional email
- Review β User reviews and copies the generated email
- Send β Ready-to-send professional job application email
|
|
Secure user registration with clean, modern UI
Simple and secure login interface
Landing page with feature overview
Drag-and-drop resume upload with real-time processing
JobAI/
βββ backend/
β βββ app/
β β βββ api/
β β β βββ __init__.py
β β β βββ v1/
β β β βββ __init__.py
β β β βββ endpoints/
β β β βββ __init__.py
β β β βββ auth.py # Authentication endpoints
β β β βββ resume.py # Resume upload endpoint
β β β βββ email.py # Email generation endpoint
β β β
β β βββ core/ # Core configurations
β β β βββ __init__.py
β β β βββ security.py # JWT & password hashing
β β β βββ config.py # App configuration
β β β
β β βββ db/ # Database utilities
β β β βββ __init__.py
β β β βββ database.py # SQLite connection
β β β βββ session.py # Database sessions
β β β
β β βββ langchain/ # LangChain modules
β β β βββ __init__.py
β β β βββ resume_analyzer.py # RAG pipeline logic
β β β
β β βββ models/ # Database models
β β β βββ __init__.py
β β β βββ user.py # User model (SQLAlchemy)
β β β
β β βββ schemas/ # Pydantic schemas
β β β βββ __init__.py
β β β βββ user.py # User request/response schemas
β β β βββ email.py # Email request/response schemas
β β β
β β βββ services/ # Business logic
β β β βββ __init__.py
β β β βββ auth_service.py # Authentication logic
β β β βββ resume_service.py # Resume processing service
β β β βββ email_service.py # Email generation service
β β β
β β βββ __init__.py
β β βββ main.py # FastAPI application entry
β β
β βββ temp/ # Temporary file storage
β βββ chroma_db/ # Vector database storage
β βββ jobai.db # SQLite database file
β βββ requirements.txt # Python dependencies
β βββ .env # Environment variables
β
βββ frontend/
β βββ app/
β β βββ authentication/ # Authentication pages
β β β βββ login/
β β β β βββ page.js # Login page
β β β βββ signup/
β β β βββ page.js # Sign up page
β β β
β β βββ components/ # React components
β β β βββ Navbar.js # Navigation bar
β β β βββ ProtectedRoute.js # Route protection
β β β βββ AuthForm.js # Reusable auth form
β β β
β β βββ email-writer/
β β β βββ page.js # Email Writer page
β β β
β β βββ resume-screener/
β β β βββ page.js # Resume Scanner page
β β β
β β βββ favicon.ico
β β βββ globals.css # Global styles
β β βββ layout.js # Root layout
β β βββ page.js # Home page
β β
β βββ node_modules/ # Dependencies
β βββ public/
β β βββ screenshots/ # Project screenshots
β β
β βββ .env
β βββ .gitignore
β βββ jsconfig.json
β βββ next.config.mjs
β βββ package-lock.json
β βββ package.json
β βββ postcss.config.mjs
β βββ README.md
β
βββ venv/ # Python virtual environment
βββ .env
βββ .gitignore
βββ README.md # This file
- Python 3.9+
- Node.js 18+
- npm or yarn
- Groq API Key (Get it here)
git clone https://github.com/prateekmtri/Resume-Scanner.git
cd Resume-Scanner# Navigate to backend
cd backend
# Create virtual environment
python -m venv venv
# Activate virtual environment
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Install LangChain HuggingFace (for embeddings)
pip install -U langchain-huggingfaceConfigure Environment Variables:
Create .env file in backend/ directory:
# Groq API Configuration
GROQ_API_KEY=your_groq_api_key_here
# JWT Secret Key (generate a strong random key)
SECRET_KEY=your_super_secret_jwt_key_here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
# Database Configuration
DATABASE_URL=sqlite:///./jobai.dbCreate Required Folders:
# Create temp folder for file uploads
mkdir temp
# ChromaDB and SQLite database folders will be created automaticallyInitialize Database:
# Run the application once to create database tables
python -m app.mainRun Backend Server:
uvicorn app.main:app --reloadBackend runs at: http://127.0.0.1:8000 π
# Open new terminal and navigate to frontend
cd frontend
# Install dependencies
npm install
# Configure environment variables
# Create .env.local file in frontend directory
echo "NEXT_PUBLIC_API_URL=http://127.0.0.1:8000" > .env.local
# Run development server
npm run devFrontend runs at: http://localhost:3000 π
POST /api/v1/auth/signup
Create a new user account.
Request:
{
"email": "user@example.com",
"password": "SecurePassword123",
"full_name": "John Doe"
}Response:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer",
"user": {
"id": 1,
"email": "user@example.com",
"full_name": "John Doe"
}
}POST /api/v1/auth/login
Authenticate existing user.
Request:
{
"email": "user@example.com",
"password": "SecurePassword123"
}Response:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer",
"user": {
"id": 1,
"email": "user@example.com",
"full_name": "John Doe"
}
}POST /api/v1/resume/upload
Upload a PDF resume and receive AI-generated feedback. Requires Authentication.
Headers:
Authorization: Bearer <your_jwt_token>
Request:
- Method:
POST - Content-Type:
multipart/form-data - Body:
file(PDF format)
Response:
{
"feedback": "Your resume demonstrates strong technical skills in React, FastAPI, and backend development. Key strengths include: 1) Diverse tech stack experience with modern frameworks, 2) Clear project descriptions showing problem-solving abilities, 3) Quantifiable achievements. Recommendations: Consider adding more metrics to quantify impact, expand on leadership experiences, and include specific technologies used in each project."
}cURL Example:
curl -X POST "http://127.0.0.1:8000/api/v1/resume/upload" \
-H "Authorization: Bearer your_jwt_token_here" \
-H "accept: application/json" \
-H "Content-Type: multipart/form-data" \
-F "file=@resume.pdf"POST /api/v1/email/generate
Generate a professional job application email. Requires Authentication.
Headers:
Authorization: Bearer <your_jwt_token>
Request:
- Method:
POST - Content-Type:
application/json - Body:
{
"topic": "Application for Senior Software Engineer position at Tech Corp",
"tone": "professional",
"length": "medium"
}Response:
{
"email": "Dear Hiring Manager,\n\nI am writing to express my strong interest in the Senior Software Engineer position at Tech Corp...",
"subject": "Application for Senior Software Engineer Position"
}cURL Example:
curl -X POST "http://127.0.0.1:8000/api/v1/email/generate" \
-H "Authorization: Bearer your_jwt_token_here" \
-H "Content-Type: application/json" \
-d '{
"topic": "Application for Senior Software Engineer",
"tone": "professional",
"length": "medium"
}'Interactive API Docs: Visit http://127.0.0.1:8000/docs for Swagger UI
- JWT Tokens: Secure token-based authentication
- Password Hashing: bcrypt algorithm for secure password storage
- Protected Routes: All AI features require authentication
- Token Expiration: Configurable token expiry time
- SQLite Database: Reliable local data persistence
- Encrypted Passwords: Never store plain-text passwords
- Secure File Handling: Temporary file storage with cleanup
- CORS Protection: Configured CORS policies
| Component | Technology | Purpose |
|---|---|---|
| LLM | Groq LLaMA 3.3 (70B) | Resume analysis & email generation |
| Embeddings | all-MiniLM-L6-v2 (HuggingFace) | Text vectorization |
| Vector DB | ChromaDB | Efficient similarity search |
| Framework | LangChain | RAG pipeline orchestration |
| Email AI | Custom Prompt Engineering | Professional email crafting |
| Database | SQLite | User data persistence |
| Authentication | JWT | Secure user authentication |
- β Create secure account to save progress
- β Get instant AI feedback on your resume
- β Generate professional job application emails
- β Save time on email composition
- β Improve your chances of getting noticed
- β Learn what makes a strong resume
- β Practice professional communication
- β Prepare for internship applications
- β Build career readiness skills
- β Track your resume improvements over time
- β Quickly assess candidate resumes
- β Generate professional responses
- β Streamline communication workflow
- β Maintain consistent messaging
- β Manage multiple candidate interactions
β
Full-Stack Production Application - Complete authentication system with database
β
Production-Grade Architecture - Clean separation of concerns with layered structure
β
Secure Authentication - JWT-based auth with password hashing
β
Database Integration - SQLite for reliable data persistence
β
Dual AI Tools - Complete career assistance in one platform
β
Advanced RAG Implementation - Industry-standard vector search with ChromaDB
β
Ultra-Fast Inference - Groq provides 10x faster responses than traditional LLMs
β
Scalable Design - Modular structure with API versioning (v1)
β
Real-World Use Case - Solves actual problems for job seekers
β
Portfolio-Grade Project - Demonstrates full-stack AI/ML & software engineering skills
β
Professional UI/UX - Polished interface with excellent user experience
Perfect for demonstrating to recruiters and building your AI portfolio! πΌ
- User dashboard with analytics
- Resume history and version tracking
- Email template library
- Multi-language email support
- LinkedIn profile optimization
- Cover letter generation
- Interview preparation assistant
- Job matching recommendations
- Resume ATS optimization score
- PostgreSQL/MySQL integration
- OAuth integration (Google, GitHub)
- Email scheduling and tracking
- Resume comparison tool
- Collaborative resume reviews
Contributions, issues, and feature requests are welcome!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Prateek Mani Tripathi
Full-Stack MERN + AI Developer
- π GitHub: @prateekmtri
- π§ Email: prateek1tri2@gmail.com
- πΌ LinkedIn: Connect with me
- π Portfolio: https://new-advance-portfolio.vercel.app/
- Groq for lightning-fast LLM inference
- LangChain for RAG framework
- FastAPI for robust backend
- Next.js for excellent frontend framework
- SQLite for reliable database
If you found this project helpful, please give it a star β
It motivates me to build more AI-powered tools!

