WorkPRJCT /03
Type ↴

Scope ↴
  • AI
  • Full-stack
  • DevOps
Status ↴

About ↴

Upload your resume once, search real job listings, and get an AI match score from 0–100 with the exact skills you are missing and how to improve.

JobFit — AI-powered job matching

Overview

Most developers apply to 50+ jobs and hear nothing back. They do not know if their resume is wrong, their skills do not match, or the job itself is unrealistic. Manually comparing your resume against 20 job descriptions takes 4–5 hours and you are still just guessing.

JobFit lets you upload your resume once, search real job listings from LinkedIn and Indeed, and get an AI-generated match score from 0–100 with the exact skills you are missing, your strengths for that role, and how to improve. Track every application on a Kanban board and chat with an AI coach that already knows your resume and the job description.

(Preview)

See it in motion

Features

  • (001)
    AI Match ScoreGemini analyzes your resume against any job description and returns a 0–100 score with skill gap analysis
  • (002)
    Real Job SearchLive listings from LinkedIn, Indeed and Glassdoor via the JSearch API
  • (003)
    Application TrackerKanban board — Applied, Interview, Offer, Rejected — with full analysis on each card
  • (004)
    AI ChatA career coach that knows your resume and the specific job description
  • (005)
    Privacy ScannerFlags PII risks in your resume before you apply
  • (006)
    Redis CachingSame resume + JD returns in under 5ms instead of 4 seconds
  • (007)
    Admin DashboardTotal users, analyses run and skill gap trends across all users
  • (008)
    AuthGoogle OAuth, email verification, and token-based password reset

Tech stack

  • React
  • Node.js
  • PostgreSQL
  • Redis
  • Gemini
  • FrontendReact 18, React Router v6, Tailwind CSS, Vite, Axios — deployed on Vercel
  • BackendNode.js, Express, Passport.js, Multer, pdf-parse, Nodemailer, Helmet, express-rate-limit — deployed on Render
  • DataPostgreSQL (JSONB for skill arrays), Redis (Upstash) with MD5 content-based cache keys
  • AIGemini 1.5 Flash via Google AI Studio, structured JSON prompts with response validation
  • DevOpsDocker Compose (5 services), GitHub Actions CI/CD, Nginx reverse proxy

Architecture

  1. Browser
  2. Vercel — React + Nginx
  3. Render — Node.js + Express (httpOnly cookies over HTTPS)
  4. PostgreSQL · Redis (Upstash) · Gemini API

Performance

  • Cache miss (Gemini call)2,000 – 4,000ms
  • Cache hit (Redis)< 5ms
  • Speed improvement800x on repeat analyses
  • Load tested50 parallel requests

Security

  • TokenshttpOnly cookies, refresh token rotation
  • Passwordsbcrypt, 10 rounds
  • HardeningHelmet security headers, rate limiting, parameterised SQL

Links

Next projectSafeSpeak →