Skip to content

r4huldeveloper/Career-Copilot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

117 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Career Copilot Banner

πŸš€ Career Copilot

AI-powered resume analyzer, JD matcher & mock interview β€” built specifically for Indian freshers.

License: MIT Made for India Contributions Welcome Version Zero Backend


🎬 Demo

Watch Demo


✨ Features

Feature What it does
πŸ“„ Resume Analyzer ATS score, top 3 strengths/weaknesses, rewritten bullets in role-specific language
🎯 AI Role Fit Analyzer Auto-runs after resume analysis β€” maps your resume to top 5 best-fit roles with gap analysis
🎯 JD Matcher Paste any JD β†’ exact keyword gaps, match score, copy-paste ready resume rewrites
🎀 Mock Interview Real questions by role + type, write your answer, detailed AI feedback + expected answer structure
πŸ“Š Score Tracker ATS score history β€” track if your resume is improving over time
πŸ“œ Interview History All past mock sessions saved locally β€” review anytime
πŸ“ PDF/DOC Upload Drag & drop resume upload β€” no copy-paste needed
πŸ”’ 100% Private Data never leaves your browser. No server, no tracking, no account needed
πŸ†“ Forever Free Uses your own free Groq API key (2 min setup)

πŸ—οΈ Architecture Overview

Career Copilot follows a strict 4-layer architecture. Every layer has exactly one responsibility β€” nothing bleeds into another.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        UI Shell Layer                        β”‚
β”‚   index.html  Β·  src/styles/*  Β·  src/components/*           β”‚
β”‚   src/app.js  (events + DOM only β€” zero business logic)      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚ calls with plain data
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Pure Logic Layer                          β”‚
β”‚   src/core/logic/resumeLogic.js    β€” Resume + Role Fit       β”‚
β”‚   src/core/logic/jdLogic.js        β€” JD Matcher              β”‚
β”‚   src/core/logic/interviewLogic.js β€” Interview flows         β”‚
β”‚   src/core/logic/sessionState.js   β€” Runtime state           β”‚
β”‚                                                              β”‚
β”‚   Zero DOM Β· Zero CSS Β· Plain data in β†’ plain data out       β”‚
β”‚   Portable to React Native / Electron / Node with 0 rewrites β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚ calls                      β”‚ reads/writes
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   AI Provider Layer   β”‚   β”‚       Data / Utils Layer         β”‚
β”‚   src/adapters/       β”‚   β”‚   src/utils/storage.js           β”‚
β”‚     aiProvider.js     β”‚   β”‚   src/utils/sanitize.js          β”‚
β”‚   src/api/groq.js     β”‚   β”‚   src/utils/markdown.js          β”‚
β”‚   src/prompts/        β”‚   β”‚   src/utils/pdfParser.js         β”‚
β”‚     groqPrompts.js    β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Full architecture docs β†’ .docs/architecture.md AI coding rules β†’ .docs/AI_RULES.md


πŸ”„ Request Flow

User clicks button
      β”‚
      β–Ό
app.js  ──── reads DOM inputs
      β”‚
      β–Ό
sanitize.js  ──── cleans + clamps all input text
      β”‚
      β–Ό
Pure Logic Layer  ──── validates β†’ calls GroqAdapter
      β”‚
      β–Ό
groq.js  ──── circuit breaker β†’ Groq API β†’ structured response
      β”‚
      β–Ό
Pure Logic Layer  ──── parses output β†’ saves to storage/sessionState
      β”‚
      β–Ό
app.js  ──── parseMarkdown β†’ renders result in DOM

πŸš€ Run Locally

Prerequisites

Steps

git clone https://github.com/r4huldeveloper/Career-Copilot.git
cd Career-Copilot
code .

Then: right-click index.html β†’ Open with Live Server

⚠️ Always open via Live Server (http://), never by double-clicking (file://). ES modules require an HTTP server.

Get Your Free Groq API Key

  1. Go to console.groq.com
  2. Sign up free β†’ API Keys β†’ Create API Key
  3. Paste in the app when prompted β€” stored only in your browser, never sent anywhere

πŸ› οΈ Tech Stack

Technology Purpose
Vanilla JS (ES Modules) No framework overhead, no build step, instant local dev
CSS Custom Properties Full design token system, dark mode support
PDF.js (CDN) Client-side PDF text extraction
Groq API + Llama 3.3 70B AI inference (~2s response time)
Vercel Zero-config static deployment
Cloudflare Workers + D1 Anonymous global stats counter β€” free tier, zero PII, never pauses

πŸ”’ Security & Privacy Model

  • BYOK (Bring Your Own Key): Your Groq API key is stored only in your browser's localStorage, Base64-encoded. Never transmitted to any server other than Groq directly.
  • Sanitization Gate: All user inputs pass through src/utils/sanitize.js before any processing. All AI output is HTML-escaped before rendering.
  • No PII on server: The only backend (Cloudflare Worker) stores zero PII β€” only anonymous counts and role/model names. No resume text, no API keys, no IP addresses ever touch the Worker database.
  • Circuit Breaker: If Groq API fails 3 times in 60s, requests are blocked for 30s β€” the app stays fully functional.

πŸ’‘ Why This Architecture (Developer Notes)

  • Zero build step β€” clone and run with Live Server. No webpack, no bundler, no npm install.
  • Pure Logic Layer (src/core/logic/) is completely decoupled from the DOM. Move to React Native tomorrow β€” the business logic migrates with zero rewrites.
  • 1-file provider swap β€” want to add OpenAI or Gemini? Rewrite only src/adapters/aiProvider.js.
  • Structured prompt contracts β€” every AI prompt defines exact output format. Parsers and prompts are a coupled contract documented in architecture.md.
  • AI_RULES.md governs every change β€” human or AI agent. No tight coupling, no visual breakage, no unstructured AI output ever gets merged.

🀝 Contributing

Contributions welcome! Read CONTRIBUTING.md first β€” every PR must pass the Zero-Escape 5-point audit.

πŸ“œ License

AGPLv3 β€” This project is licensed under the AGPL v3.0. We welcome contributions! However, please note that the Career Copilot brand and UI design are proprietary. If you wish to use this software for commercial purposes without the restrictions of the AGPL, please contact us for a commercial license.


πŸ‘¨β€πŸ’» Author

Built by Rahul Sharma β€” built the tool he wished existed when job hunting.

GitHub LinkedIn


⭐ If this helped you land a job β€” star the repo. Helps other Indian freshers find it.

About

India's First AI-powered resume analyzer & mock interview tool for Indian freshers. Free & private.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors