AI-powered job candidate skill matching platform. Analyze your technology stack against job requirements and get personalized career recommendations powered by Google Generative AI.
TechFit Analyzer is a full-stack application designed to help job seekers understand how well their technical skills match job postings. The platform provides intelligent analysis through:
- Backend: NestJS REST API with Google Gemini AI integration
- Frontend: Chrome extension providing user-friendly interface for skill management and job analysis
- Architecture: Microservices-ready with containerized deployment
β¨ AI-Powered Analysis - Uses Google Gemini 2.5-flash for intelligent skill matching
π One-Click Job Parsing - Extract job requirements directly from webpages
πΎ Profile Management - Store and manage your technology skills
π Detailed Insights - Get match percentage, found skills, missing skills, and personalized advice
π³ Docker Ready - Complete containerized setup with Docker Compose
π Production Ready - Type-safe TypeScript, comprehensive testing, proper error handling
- Project Structure
- Technology Stack
- Prerequisites
- Quick Start
- Development Setup
- Production Deployment
- API Reference
- Architecture
- Contributing
- Troubleshooting
main/
βββ backend/ # NestJS backend service
β βββ src/
β β βββ ai/ # AI module with job analysis
β β βββ app.module.ts # Root module
β β βββ main.ts # Entry point
β βββ package.json
β βββ Dockerfile
β βββ README.md # Backend documentation
β βββ ...
βββ techfit-analyzer/ # Chrome extension frontend
β βββ src/
β β βββ components/ # React components
β β βββ hooks/ # Custom React hooks
β β βββ content.ts # Content script
β βββ manifest.json # Chrome extension manifest
β βββ vite.config.ts # Vite configuration
β βββ package.json
β βββ README.md # Frontend documentation
β βββ ...
βββ docker-compose.yaml # Container orchestration
βββ README.md # This file
βββ .gitignore
| Technology | Version | Purpose |
|---|---|---|
| NestJS | ^11.0.1 | Framework |
| TypeScript | ~6.0 | Language |
| Google Generative AI | ^0.24.1 | AI Model Integration |
| Jest | ^30.0.0 | Testing |
| PostgreSQL | Latest | Database (optional) |
| Docker | Latest | Containerization |
| Technology | Version | Purpose |
|---|---|---|
| React | ^19.2.5 | UI Library |
| TypeScript | ~6.0 | Language |
| Vite | ^8.0.9 | Build Tool |
| Tailwind CSS | ^3.4.17 | Styling |
| Radix UI | ^1.1.13 | Component Primitives |
| Axios | ^1.15.2 | HTTP Client |
| CRXJS | ^2.4.0 | Chrome Extension Build |
- Node.js: v18.0.0 or higher
- npm or pnpm: v8.0.0 or higher (pnpm recommended)
- Chrome Browser: v88 or higher (for extension)
- Docker: v20.0.0 or higher (for containerized deployment)
- Docker Compose: v1.29.0 or higher
- Google Gemini API Key: Required for AI features
- Get it from: Google AI Studio
The easiest way to run the entire application:
# Navigate to main directory
cd main
# Create backend .env file
cp backend/.env.example backend/.env
# Edit backend/.env and add your GEMINI_API_KEY
# Start all services
docker-compose up -d
# Backend will be available at http://localhost:3000To stop services:
docker-compose downcd backend
# Install dependencies
pnpm install
# Create .env file
cp .env.example .env
# Edit .env and add your GEMINI_API_KEY and PORT
# Start development server
pnpm run start:dev
# Backend runs at http://localhost:3000cd techfit-analyzer
# Install dependencies
pnpm install
# Start development server
pnpm run dev
# Extension builds to dist/- Open
chrome://extensions/ - Enable Developer mode (top right)
- Click Load unpacked
- Select the
techfit-analyzer/dist/folder - Extension is now ready to use
cd backend
# Install dependencies
pnpm install
# Start in watch mode
pnpm run start:dev
# Run tests
pnpm run test
# Run E2E tests
pnpm run test:e2e
# Lint and format code
pnpm run lint
pnpm run format
# Build for production
pnpm run buildBackend Documentation: See backend/README.md for detailed backend setup and API documentation.
cd techfit-analyzer
# Install dependencies
pnpm install
# Start development server
pnpm run dev
# Build for production
pnpm run build
# Lint code
pnpm run lintFrontend Documentation: See techfit-analyzer/README.md for detailed frontend setup and usage guide.
Create backend/.env:
# Server
PORT=3000
# Google AI
GEMINI_API_KEY=your_key_hereThe frontend connects to the backend at http://localhost:3000 by default. To change this, edit src/components/Analyzer.tsx.
Build Docker image:
docker build -f backend/Dockerfile -t techfit-analyzer-backend .- Prepare
.envfile in backend directory - Run:
docker-compose up -d
-
Backend:
cd backend pnpm run build pnpm run start:prod -
Frontend:
cd techfit-analyzer pnpm run build # Upload dist/ folder to Chrome Web Store or distribute as .crx file
http://localhost:3000
Endpoint: POST /ai/analyse-job
Request:
{
"text": "Senior React developer needed with 5+ years experience...",
"userStack": ["JavaScript", "React", "Node.js", "PostgreSQL"]
}Response:
{
"match_percentage": 85,
"found_skills": ["JavaScript", "React", "Node.js"],
"missing_skills": ["Python", "AWS"],
"advice": "Focus on AWS and Python to increase match percentage."
}Full API Documentation: See backend/README.md for complete API reference.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β User's Browser β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Chrome Extension (techfit-analyzer) β
β βββ Profile Manager (React Component) β
β βββ Job Analyzer (React Component) β
β βββ Content Script (Page Parsing) β
β βββ Chrome Storage API (Data Persistence) β
ββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β HTTP/REST
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Backend API (http://localhost:3000) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β NestJS Application β
β βββ AI Module (Job Analysis) β
β βββ Controllers (HTTP Endpoints) β
β βββ Services (Business Logic) β
β βββ DTOs (Request Validation) β
ββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β API Call
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Google Generative AI (Gemini 2.5-flash) β
β Performs Intelligent Skill Matching β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- User opens extension β Loads Profile tab
- User enters skills β Stored in Chrome storage
- User navigates to job posting β Content script parses page
- User clicks "Parse from page" β Sends message to content script
- Content script extracts job text β Sends to extension popup
- User clicks "Analyze" β Extension sends request to backend
- Backend receives request β Calls Google Generative AI
- AI returns analysis β Backend formats and returns to extension
- Extension displays results β User sees match details
cd backend
# Run all tests
pnpm run test
# Watch mode
pnpm run test:watch
# Coverage report
pnpm run test:cov
# E2E tests
pnpm run test:e2eFrontend currently uses ESLint for code quality:
cd techfit-analyzer
# Run linter
pnpm run lintDetailed documentation for each component:
- Backend Documentation - API endpoints, setup, testing, deployment
- Frontend Documentation - Extension usage, development, Chrome API integration
All backend configuration is in backend/.env:
PORT: Server port (default: 3000)GEMINI_API_KEY: Google API key for AI features
Frontend configuration in techfit-analyzer/:
- Backend URL:
src/components/Analyzer.tsx - Chrome permissions:
manifest.json - Build settings:
vite.config.ts
| Problem | Solution |
|---|---|
| Port 3000 already in use | Change PORT in .env or kill process: lsof -ti:3000 | xargs kill -9 |
| API key error | Verify GEMINI_API_KEY in .env |
| Dependencies error | Delete node_modules and pnpm-lock.yaml, reinstall |
| Connection refused | Ensure backend is running on correct port |
| Problem | Solution |
|---|---|
| Extension won't load | Enable Developer mode, rebuild dist/, reload extension |
| Parse fails | Ensure you're on a job posting page with description text |
| Backend unreachable | Verify backend running at http://localhost:3000, check CORS |
| Profile not saving | Clear extension data, check Chrome permissions |
| Problem | Solution |
|---|---|
| Build fails | Verify Docker installed, check Dockerfile, rebuild: docker-compose build --no-cache |
| Container won't start | Check logs: docker-compose logs backend |
| Port conflict | Change port in docker-compose.yaml |
- Set strong GEMINI_API_KEY
- Configure production environment variables
- Run all tests and linters
- Build both backend and frontend
- Test with Docker Compose
- Document API endpoints
- Set up monitoring and logging
- Build Docker image
- Push to registry (Docker Hub, AWS ECR, etc.)
- Deploy to hosting platform
- Configure domain and SSL
- Set up CI/CD pipeline
- Monitor application health
- TypeScript: Strict mode enabled
- Formatting: Prettier (run
pnpm run format) - Linting: ESLint (run
pnpm run lint)
# Backend
cd backend
pnpm run format
pnpm run lint
pnpm run test
# Frontend
cd techfit-analyzer
pnpm run linttype(scope): subject
body
footer
Types: feat, fix, docs, style, refactor, test, chore
- β Backend API with Gemini AI
- β Chrome extension frontend
- β Job parsing from webpages
- β Skill matching analysis
- π Multiple language support
- π Database integration for persistence
- π User authentication
- π Historical analysis tracking
- π Skill recommendation engine
- π Salary prediction
- π Career path suggestions
For issues, questions, or contributions:
- Check the troubleshooting sections
- Review detailed documentation:
- Contact the development team
This project is proprietary and confidential.
# Full setup with Docker
docker-compose up -d
# Local development setup
cd backend && pnpm install && pnpm run start:dev
cd ../techfit-analyzer && pnpm install && pnpm run dev
# Load extension in Chrome
# 1. chrome://extensions/
# 2. Enable Developer mode
# 3. Load unpacked -> select techfit-analyzer/dist/
# Build for production
cd backend && pnpm run build
cd ../techfit-analyzer && pnpm run build
# Run tests
cd backend && pnpm run test
cd backend && pnpm run test:e2e
# Code quality
pnpm run lint
pnpm run format- Backend entry:
backend/src/main.ts - Frontend entry:
techfit-analyzer/src/main.tsx - Backend API:
backend/src/ai/ - Frontend components:
techfit-analyzer/src/components/ - Extension manifest:
techfit-analyzer/manifest.json - Docker config:
docker-compose.yaml
Last Updated: April 2026
Version: 1.0.0
Status: Production Ready
For the most up-to-date information, refer to the backend README and frontend README.