Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CareerPilot AI

An AI-powered career mentor platform for students and early-career professionals. Build a standout resume, discover skill gaps, generate personalized career roadmaps, practice AI mock interviews, track job applications, and chat with an AI mentor — all in one place.

Features

  • AI Resume Analyzer – Upload your resume (PDF/DOCX/text), get an ATS score, structured review, and personalized fixes.
  • Resume Builder – Guided editor with live preview, three professional templates, and HTML export.
  • Job Analyzer – Paste a job description and get a breakdown of required skills, a match score against your profile, and missing skills.
  • Skill Gap Analysis – See which skills you're missing for your target role.
  • Career Roadmap – Phase-by-phase personalized roadmap with progress tracking.
  • Career Recommendations – Ranked role suggestions based on your skills and interests.
  • Mock Interviews – AI-generated role-based questions, answer evaluation with scores, and a final performance report.
  • Application Tracker – Track companies, applied dates, statuses, and analytics.
  • AI Career Mentor – Conversational chat with an AI that knows your profile context.

Tech Stack

Backend

  • FastAPI + Pydantic v2
  • SQLAlchemy 2.x ORM
  • PostgreSQL (SQLite fallback for local development)
  • JWT authentication (python-jose) + bcrypt password hashing
  • Google Gemini for all AI features (pluggable provider)
  • slowapi rate limiting, dependency injection, structured error handling

Frontend

  • React 18 + TypeScript
  • Vite 6 + Tailwind CSS 3
  • react-router-dom v7, axios, react-hook-form, zod
  • Recharts data visualizations
  • Full dark/light theme support

Project Structure

CareerPilot AI/
├── backend/
│   ├── app/
│   │   ├── ai/                  # Gemini provider, prompts, feature engines
│   │   ├── api/routes/          # auth, profile, onboarding, resume, jobs,
│   │   │                        # skills, career, interviews, applications,
│   │   │                        # chat, dashboard
│   │   ├── core/                # config, security (JWT/bcrypt)
│   │   ├── database/            # DB session, models
│   │   ├── models/              # SQLAlchemy models
│   │   ├── schemas/             # Pydantic schemas
│   │   ├── services/            # profile context, completion scoring
│   │   └── utils/               # helpers
│   ├── tests/                   # pytest API tests (mocked AI)
│   ├── requirements.txt
│   ├── Dockerfile
│   ├── run.py                   # uvicorn launcher (works with spaces in path)
│   └── seed.py                  # demo data (demo@careerpilot.ai / demo1234)
├── frontend/
│   ├── src/
│   │   ├── components/          # UI kit, Logo
│   │   ├── context/             # Auth, Theme, Toast providers
│   │   ├── hooks/               # useFetch, useRequireAuth
│   │   ├── layouts/             # Dashboard + Auth layouts
│   │   ├── pages/               # All feature pages
│   │   ├── services/            # typed API client
│   │   ├── types/               # shared TypeScript types
│   │   ├── charts/              # Recharts wrappers
│   │   ├── App.tsx              # routing
│   │   └── main.tsx             # entry point
│   ├── Dockerfile
│   └── vite.config.ts
├── docker-compose.yml
└── README.md

Getting Started

Prerequisites

  • Python 3.10+ (developed on 3.14)
  • Node.js 18+ (developed on 25)
  • (Optional) Docker + Docker Compose

1. Backend

cd backend
python -m venv .venv
.venv\Scripts\activate        # Windows
# source .venv/bin/activate   # macOS/Linux

pip install -r requirements.txt
copy .env.example .env        # Windows
# cp .env.example .env        # macOS/Linux

Edit backend/.env:

# Copy from .env.example and adjust
DATABASE_URL=sqlite:///./careerpilot.db   # default local; see Postgres below
GEMINI_API_KEY=your_gemini_api_key        # required for AI features
JWT_SECRET=change-me-to-a-long-random-string
RATE_LIMIT_ENABLED=false                  # true in production

Start the API:

python run.py

The API runs at http://127.0.0.1:8000. Interactive docs: http://127.0.0.1:8000/docs.

AI features (resume analysis, job analysis, roadmap, interviews, chat) return a clear error message until GEMINI_API_KEY is set.

2. Frontend

cd frontend
npm install
npm run dev

Open http://localhost:5173. Vite proxies /api to the backend.

3. Quick demo data

cd backend
python seed.py

Log in with demo@careerpilot.ai / demo1234.

PostgreSQL (production)

Create a database and set:

DATABASE_URL=postgresql+psycopg://USER:PASSWORD@localhost:5432/careerpilot

Tables are created automatically on startup.

Backend Testing

cd backend
.venv\Scripts\python.exe -m pytest tests -q

Frontend type-check and build:

cd frontend
npm run lint    # tsc --noEmit
npm run build   # tsc -b && vite build

Docker

docker compose up --build
  • postgres – PostgreSQL 16 server
  • backend – FastAPI on port 8000
  • frontend – nginx serving the Vite build on port 8080

The frontend build is served by nginx with /api requests proxied to the backend service. Set GEMINI_API_KEY and JWT_SECRET in the backend service environment (or a .env file next to docker-compose.yml) before starting the AI features.

API Overview

Base path: /api (auth via Authorization: Bearer <token>)

Area Endpoints
Auth POST /auth/register, POST /auth/login, GET /auth/me
Profile GET/PUT /profile, POST /onboarding, GET /onboarding/status
Resume GET/POST /resume, PUT/DELETE /resume/{id}, POST /resume/analyze, GET /resume/analysis/history
Jobs POST /jobs/analyze, GET /jobs/analysis/history
Skills POST /skills/gap
Career POST /career/roadmap, GET /career/roadmap/{id}, PUT /career/roadmap/{id}/progress, GET /career/roadmaps, POST /career/recommend
Interviews POST /interviews, POST /interviews/{id}/answer, GET /interviews/{id}, POST /interviews/{id}/complete, GET /interviews
Applications GET/POST /applications, PUT/DELETE /applications/{id}, GET /applications/stats
Chat GET/POST /chat/conversations, GET/DELETE /chat/conversations/{id}, POST /chat/conversations/{id}/messages
Dashboard GET /dashboard/overview
Health GET /health

Configuration

Variable Description Default
DATABASE_URL SQLAlchemy database URL sqlite:///./careerpilot.db
GEMINI_API_KEY Google Gemini API key (empty)
GEMINI_MODEL Gemini model name gemini-3.5-flash
JWT_SECRET HMAC secret for JWT signing random per install
ACCESS_TOKEN_EXPIRE_MINUTES JWT lifetime 10080 (7 days)
RATE_LIMIT_ENABLED Enable slowapi rate limiting false
FRONTEND_ORIGINS Comma-separated allowed CORS origins localhost:5173, localhost:8080

Deployment Notes

  • Point FRONTEND_ORIGINS at your production domain.
  • Set RATE_LIMIT_ENABLED=true under load.
  • Use a strong random JWT_SECRET and a managed PostgreSQL instance.
  • Serve /docs behind auth if exposing the API publicly, or disable it in production.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages