A comprehensive job search automation platform that helps job seekers discover, track, and apply to jobs efficiently. Built with FastAPI (backend) and Next.js (frontend).
JobSearchAI transforms the job search process from reactive (customizing resumes for jobs you find) to proactive (discovering jobs, tracking applications, and automating the application process).
- π Hunter (Job Discovery) - Search and discover jobs from multiple sources
- π Tracker (Kanban Board) - Track applications through stages with drag-and-drop
- π€ Resume Customization - AI-powered resume tailoring for specific job descriptions
- π§ Outreach - Automated email generation and contact finding
- π€ Referrals (Coming in Phase 4) - Network-powered job discovery
- Backend: FastAPI with SQLAlchemy (PostgreSQL/SQLite)
- Frontend: Next.js 15 with TypeScript and Tailwind CSS
- Database: Single unified database for all features
- Deployment: Single deployment (one backend, one frontend, one database)
- Authentication: JWT-based secure accounts and multi-tenancy
JobSearchAI/
βββ backend/ # FastAPI backend
β βββ app/
β β βββ api/endpoints/ # API routes (jobs, resumes, search, outreach, auth, etc.)
β β βββ core/ # Security and config
β β βββ db/ # Database configuration
β β βββ models/ # SQLAlchemy models
β β βββ schemas/ # Pydantic schemas
β β βββ services/ # Business logic
β βββ pdf_generator/ # LaTeX PDF generation
β βββ main.py # FastAPI app entry point
β βββ requirements.txt # Python dependencies
βββ frontend/ # Next.js frontend
β βββ src/
β β βββ app/ # Next.js app router pages
β β βββ components/ # React components
β β βββ services/ # API client functions
β β βββ types/ # TypeScript types
β βββ package.json # Node.js dependencies
β βββ ...
βββ docs/ # Documentation and roadmap
The easiest way to run JobSearchAI is using Docker Compose.
-
Prerequisites:
- Docker and Docker Compose installed.
-
Build and Run:
docker-compose up --build
This will start:
- PostgreSQL: Database for all data
- Backend: FastAPI server (Port 8000)
- Frontend: Next.js app (Port 3000)
-
Access the Application:
- Frontend:
http://localhost:3000 - Backend API Docs:
http://localhost:8000/docs
- Frontend:
-
Navigate to backend directory:
cd backend -
Install dependencies:
pip install -r requirements.txt
-
Set up environment variables: Create a
.envfile based on.env.example. -
Start the backend server:
uvicorn main:app --reload --port 8000
-
Navigate to frontend directory:
cd frontend -
Install dependencies:
npm install
-
Set up environment variables: Create a
.env.localfile:NEXT_PUBLIC_API_BASE_URL=http://127.0.0.1:8000
-
Start the development server:
npm run dev
- Tracker (Kanban), Hunter (Discovery), Bot (Automation), Referrals foundation.
- Authentication: JWT-based login/registration.
- Multi-tenancy: Data isolated by user at the database level.
- Protected Routes: Frontend AuthGuard implemented.
- LinkedIn Browser Extension: Save jobs directly from LinkedIn.
- Gmail Integration: Auto-sync job updates from your inbox.
- Production Readiness: Docker + PostgreSQL configuration.
- Professional Suite: Analytics dashboard and interview tracking.
- FastAPI - Modern Python web framework
- SQLAlchemy - ORM for database operations
- Google Gemini - AI for resume customization, email generation, and contact finding
- LaTeX - PDF generation
- JSearch API - Job search aggregation
- Apify Client - For LinkedIn contact search
- Next.js 15 - React framework with App Router
- TypeScript - Type-safe JavaScript
- Tailwind CSS - Utility-first CSS
- dnd-kit - Drag and drop for Kanban board
- react-hot-toast - Toast notifications
# Required
GEMINI_API_KEY=your_gemini_api_key
# Optional - Job Search
JSEARCH_API_KEY=your_jsearch_api_key
# Optional - Database
DATABASE_URL=sqlite:///./jobsearchai.db
# Optional - AWS S3
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_REGION=us-east-1
S3_BUCKET_NAME=your-bucket-nameNEXT_PUBLIC_API_BASE_URL=http://127.0.0.1:8000The easiest way to run JobSearchAI is using Docker Compose.
-
Prerequisites:
- Docker and Docker Compose installed.
-
Configure Environment Variables:
- Create a
.envfile in thebackend/directory with your API keys (see Backend Setup).
- Create a
-
Build and Run:
docker-compose up --build
-
Access the Application:
- Frontend:
http://localhost:3000 - Backend API Docs:
http://localhost:8000/docs
- Frontend:
See nextSteps.md Section 11 for detailed manual deployment instructions.
- Project Roadmap: See
nextSteps.mdfor detailed phases and features - Database Setup: See
docs/DATABASE_SETUP.mdfor detailed database configuration and initialization - S3 Integration: See
README_S3_INTEGRATION.md
This is a personal project, but suggestions and improvements are welcome!
This project is for educational and demonstration purposes.
Note: This project supports full authentication and multi-tenancy. Each user's data is isolated and secured.