Skip to content

reddam-charan-teja-reddy/Job-Search-Assistant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

48 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Job Search Assistant with AI Chatbot & Mock Interviews

A full-stack job search application powered by AI that helps users discover job opportunities, manage applications, and prepare for interviews. Features an intelligent chatbot for job discovery, voice-based AI mock interviews, and comprehensive user profile management.

πŸ“š Documentation

✨ Key Features

πŸ” Secure Authentication

  • JWT-based Authentication: Industry-standard security with access & refresh tokens
  • Password Security: bcrypt hashing with cost factor 12, OWASP-compliant password validation
  • Protected Routes: All API endpoints secured with token validation
  • Session Management: Automatic token refresh and secure logout

πŸ‘€ User Onboarding & Profile

  • Resume Parsing: Upload PDF resumes for AI-powered profile extraction via Google Gemini
  • Profile Management: Edit and update profile details anytime
  • Onboarding Flow: Smart tracking of onboarding completion status

πŸ’¬ AI-Powered Job Search

  • Intelligent Chatbot: Natural language job discovery powered by Gemini AI with function calling
  • Real-time Job Search: Integration with JSearch API for current job listings
  • Smart Query Handling: AI infers job types from user skills and preferences
  • Job Details: View comprehensive job information including requirements, responsibilities, and salary
  • Persistent Chat History: All conversations saved and restored on sign-in

πŸ“‹ Job Management

  • Save Jobs: Bookmark interesting opportunities for later
  • Track Applications: Keep record of jobs you've applied to
  • Quick Actions: Apply directly from job cards with one click

🎀 AI Mock Interviews

  • Voice-based Practice: Real-time voice interviews powered by Retell AI
  • Multiple AI Interviewers: Choose from different interviewer personalities
  • Job-Specific Prep: Generate tailored interview questions based on saved jobs
  • Custom Interviews: Create practice sessions with custom objectives
  • Performance Analytics: Receive scores and feedback on communication, technical skills, and more

🎨 Modern UI/UX

  • Dark/Light Theme: Toggle between themes with system preference support
  • Responsive Design: Works seamlessly on desktop and mobile
  • Floating Chat Input: Clean, modern chat interface with smooth animations
  • Hidden Scrollbars: Minimal UI with scrollable content

πŸ› οΈ Tech Stack

Frontend

Technology Purpose
React 18 UI Framework
TypeScript Type Safety
Vite Build Tool & Dev Server
Tailwind CSS v4 Styling
React Router DOM Client-side Routing
Sonner Toast Notifications
shadcn/ui style Component Library

Backend

Technology Purpose
FastAPI Web Framework
Python 3.11+ Runtime
MongoDB + Motor Database (async driver)
Google Gemini API AI Chat & Resume Parsing
JSearch API Job Listings (RapidAPI)
Retell AI Voice Interview
JWT + bcrypt Authentication & Security
Pydantic Data Validation

πŸ“ Project Structure

Job-Search-Assistant/
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/        # React components
β”‚   β”‚   β”‚   β”œβ”€β”€ ui/            # Reusable UI components (shadcn/ui style)
β”‚   β”‚   β”‚   β”œβ”€β”€ AuthPage.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ChatPage.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ HomePage.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ OnboardingPage.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ProfilePage.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ InterviewPrepPage.tsx
β”‚   β”‚   β”‚   └── InterviewRoomPage.tsx
β”‚   β”‚   β”œβ”€β”€ context/
β”‚   β”‚   β”‚   └── AuthContext.tsx  # Authentication state management
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   β”œβ”€β”€ api.ts           # API client functions
β”‚   β”‚   β”‚   └── auth.ts          # Auth utilities & token management
β”‚   β”‚   β”œβ”€β”€ App.tsx              # Main app with routing
β”‚   β”‚   └── main.tsx             # Entry point
β”‚   β”œβ”€β”€ package.json
β”‚   └── vite.config.ts
β”‚
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ core/                    # Core modules
β”‚   β”‚   β”œβ”€β”€ auth.py              # JWT & password security
β”‚   β”‚   β”œβ”€β”€ db.py                # MongoDB connection
β”‚   β”‚   └── models.py            # Pydantic data models
β”‚   β”œβ”€β”€ services/                # Business logic layer
β”‚   β”‚   β”œβ”€β”€ chat_service.py      # Gemini chat with function calling
β”‚   β”‚   └── interview_service.py # Retell AI & interview logic
β”‚   β”œβ”€β”€ clients/                 # External API clients
β”‚   β”‚   β”œβ”€β”€ jsearch_client.py    # JSearch API client
β”‚   β”‚   └── gemini_client.py     # Gemini API utilities
β”‚   β”œβ”€β”€ routes/                  # API route handlers (modular)
β”‚   β”‚   β”œβ”€β”€ auth_routes.py       # Login, register, token refresh
β”‚   β”‚   β”œβ”€β”€ user_routes.py       # Profile, onboarding
β”‚   β”‚   β”œβ”€β”€ chat_routes.py       # Chat sessions, messages
β”‚   β”‚   β”œβ”€β”€ jobs_routes.py       # Save, unsave, apply jobs
β”‚   β”‚   └── interview_routes.py  # Interview management
β”‚   β”œβ”€β”€ main.py                  # FastAPI app entry
β”‚   └── requirements.txt
β”‚
β”œβ”€β”€ README.md
└── documentation.md

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • Python 3.11+
  • MongoDB (local or MongoDB Atlas)
  • API Keys: Gemini, JSearch (RapidAPI), Retell AI

Backend Setup

# Navigate to backend
cd backend

# Create virtual environment
python -m venv venv

# Activate (Windows PowerShell)
./venv/Scripts/Activate.ps1

# Or on Unix/macOS
# source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Create .env file (see Environment Variables below)

# Run the server
uvicorn main:app --reload --host 0.0.0.0 --port 8000

Frontend Setup

cd frontend
npm install
npm run dev

The frontend runs on http://localhost:5173 and backend on http://localhost:8000.


πŸ”‘ Environment Variables

Create backend/.env:

# Database
MONGODB_URI=mongodb+srv://user:password@cluster.mongodb.net/jobsearch

# AI Services
GEMINI_API_KEY=your_gemini_api_key
JSEARCH_API_KEY=your_jsearch_api_key

# Authentication (generate secure random keys for production)
JWT_SECRET_KEY=your_jwt_secret_key_min_32_chars
JWT_REFRESH_SECRET_KEY=your_refresh_secret_key

# Voice Interviews (Retell AI)
RETELL_API_KEY=your_retell_api_key
RETELL_AGENT_ID_1=agent_id_interviewer_1
RETELL_AGENT_ID_2=agent_id_interviewer_2
RETELL_AGENT_ID_3=agent_id_interviewer_3

πŸ“± Application Routes

Route Description
/auth Login & Register page
/ Redirects based on auth/onboarding status
/onboarding Resume upload for new users
/home Dashboard with saved jobs, chats, quick actions
/chat/:chatId AI chatbot for job search
/profile View and edit user profile
/interview-prep Interview preparation dashboard
/interview/:interviewId Voice interview room with AI

πŸ”Œ API Endpoints

Authentication

Method Endpoint Description Auth Required
POST /api/auth/register Create new account No
POST /api/auth/login Login & get tokens No
POST /api/auth/refresh Refresh access token Refresh Token
POST /api/auth/logout Invalidate tokens Yes
GET /api/auth/me Get current user Yes

User & Profile

Method Endpoint Description
POST /api/onboardFileUpload Parse resume PDF
POST /api/confirmOnboardingDetails Save onboarding profile
POST /api/updateUserProfile Update profile fields

Chat

Method Endpoint Description
GET /api/chatHistory Get user's chat sessions
POST /api/createChat Create new chat session
POST /api/sendMessage Send message & get AI response
GET /api/getChatMessages Get messages for a chat
DELETE /api/chat/{chatId} Delete a chat session

Jobs

Method Endpoint Description
GET /api/getSavedJobs Get saved jobs
GET /api/getAppliedJobs Get applied jobs
POST /api/saveJob Save a job
DELETE /api/savedJob/{jobId} Unsave a job
POST /api/applyJob Mark job as applied

Interviews

Method Endpoint Description
GET /api/interviewers Get AI interviewer profiles
POST /api/createInterview Create custom interview
POST /api/createJobInterview Create job-specific interview
POST /api/registerCall Start voice call session
POST /api/analyzeInterview Get performance analytics

πŸ”’ Security Features

  • Password Hashing: bcrypt with cost factor 12 (~250ms per hash)
  • JWT Tokens: HS256 algorithm with configurable expiry
  • Token Refresh: Automatic refresh mechanism with refresh tokens
  • Password Validation: OWASP-compliant (min 8 chars, uppercase, lowercase, number, special char)
  • Protected Routes: All endpoints require valid JWT except auth routes
  • Email Masking: Logs mask sensitive email data

πŸ› Debugging

Backend includes comprehensive logging with tags:

Tag Description
[AUTH] Authentication operations
[REGISTER] User registration
[LOGIN] Login attempts
[ONBOARD] Onboarding flow
[CREATE_CHAT] Chat creation
[SEND_MESSAGE] Message handling
[CHAT_SERVICE] AI chat processing
[JSEARCH] Job search API calls
[SAVE_JOB] Job save operations

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch from main
  3. Follow existing code style and patterns
  4. Write clear commit messages
  5. Update documentation for API/component changes
  6. Open a PR with a clear description

See documentation.md for detailed guidelines.


πŸ“„ License

Proprietary - confirm licensing before redistribution.

Releases

No releases published

Packages

 
 
 

Contributors