1- JobMatch AI β AI-Powered Job Tracker with Smart Matching
1+ # JobMatch AI β AI-Powered Job Tracker with Smart Matching
22
33This project was built as part of an internship assignment and demonstrates end-to-end full-stack development, clean UI/UX design, and practical AI integration.
44
5- An intelligent job tracking system that fetches jobs from external APIs, matches them with a userβ s resume using AI, provides smart application tracking, and includes a conversational AI assistant to help users navigate their job search efficiently.
5+ An intelligent job tracking system that fetches jobs from external APIs, matches them with a user' s resume using AI, provides smart application tracking, and includes a conversational AI assistant to help users navigate their job search efficiently.
66
7- π Live Demo
7+ ---
88
9- Frontend: https://smart-job-tracker-ochre.vercel.app
9+ ## π Live Demo
1010
11- Backend API: https://smart-job-tracker-backend-r5wd.onrender.com
11+ - ** Frontend** : https://smart-job-tracker-ochre.vercel.app
12+ - ** Backend API** : https://smart-job-tracker-backend-r5wd.onrender.com
13+ - ** GitHub Repository** : https://github.com/Sarfarazsfz/smart-job-tracker
1214
13- GitHub Repository: https://github.com/Sarfarazsfz/smart- job-tracker
15+ ** Demo Note ** : Upload a resume to enable AI-based job matching and personalized match scores.
1416
15- Demo Note: Upload a resume to enable AI-based job matching and personalized match scores.
17+ ---
1618
17- β¨ Key Features
18- Core Functionality
19+ ## β¨ Key Features
1920
20- Job feed powered by an external job API (India-focused listings)
21+ ### Core Functionality
22+ - Job feed powered by an external job API (India-focused listings)
23+ - Resume upload (PDF/TXT) with automatic text extraction
24+ - AI-based jobβresume matching with percentage scores
25+ - ** Best Matches for You** section highlighting top matches
26+ - Smart application tracking with confirmation popup
27+ - Conversational AI assistant for job discovery and guidance
28+ - Fully responsive UI (mobile, tablet, desktop)
2129
22- Resume upload (PDF/TXT) with automatic text extraction
30+ ### Filters (Assignment Requirement)
31+ - ** Role / Job Title** search
32+ - ** Skills** (multi-select: React, Node.js, Python, etc.)
33+ - ** Date Posted** (Last 24 hours, Last week, Last month, Any time)
34+ - ** Job Type** (Full-time, Part-time, Contract, Internship)
35+ - ** Work Mode** (Remote, Hybrid, On-site)
36+ - ** Location** (City / Region)
37+ - ** Match Score** (High >70%, Medium 40β70%, All)
2338
24- AI-based jobβresume matching with percentage scores
39+ ---
2540
26- Best Matches for You section highlighting top matches
27-
28- Smart application tracking with confirmation popup
29-
30- Conversational AI assistant for job discovery and guidance
31-
32- Fully responsive UI (mobile, tablet, desktop)
33-
34- Filters (Assignment Requirement)
35-
36- Role / Job Title search
37-
38- Skills (multi-select: React, Node.js, Python, etc.)
39-
40- Date Posted (Last 24 hours, Last week, Last month, Any time)
41-
42- Job Type (Full-time, Part-time, Contract, Internship)
43-
44- Work Mode (Remote, Hybrid, On-site)
45-
46- Location (City / Region)
47-
48- Match Score (High >70%, Medium 40β70%, All)
49-
50- ποΈ Project Architecture
41+ ## ποΈ Project Architecture
5142
5243The application follows a clean three-tier architecture:
5344
54- 1 . Presentation Layer (Frontend)
55-
56- React + Vite
57-
58- Client-side filtering and ranking for instant UX
59-
60- State managed with React hooks
45+ ### 1. Presentation Layer (Frontend)
46+ - React + Vite
47+ - Client-side filtering and ranking for instant UX
48+ - State managed with React hooks
49+ - Dark-mode focused, professional UI
6150
62- Dark-mode focused, professional UI
51+ ### 2. Application Layer (Backend)
52+ - Node.js + Fastify
53+ - REST APIs
54+ - Job fetching, resume processing, AI orchestration
55+ - Cache-first design for performance
6356
64- 2 . Application Layer (Backend)
57+ ### 3. Data & External Services
58+ - Adzuna API for job listings
59+ - Google Gemini for AI matching (with fallback logic)
60+ - Upstash Redis (or in-memory fallback) for caching
6561
66- Node.js + Fastify REST APIs
62+ ### Architecture Diagram
6763
68- Job fetching, resume processing, AI orchestration
69-
70- Cache-first design for performance
71-
72- 3 . Data & External Services
73-
74- Adzuna API for job listings
75-
76- Google Gemini for AI matching (with fallback logic)
77-
78- Upstash Redis (or in-memory fallback) for caching
79-
80- Architecture Diagram
64+ ``` mermaid
8165graph TB
8266 subgraph Frontend
8367 UI[Job Feed]
@@ -86,140 +70,123 @@ graph TB
8670 Chat[AI Assistant]
8771 Tracker[Application Tracker]
8872 end
89-
73+
9074 subgraph Backend
9175 API[Fastify API]
9276 JobService[Job Service]
9377 AIService[AI Matching]
9478 ResumeService[Resume Service]
9579 end
96-
80+
9781 subgraph External
9882 JobAPI[Adzuna API]
9983 AI[Google Gemini]
10084 Cache[(Redis / Memory)]
10185 end
102-
86+
10387 UI --> API
10488 Filters --> API
10589 Resume --> API
10690 Chat --> API
10791 Tracker --> API
108-
92+
10993 API --> JobService
11094 API --> AIService
11195 API --> ResumeService
112-
96+
11397 JobService --> JobAPI
11498 JobService --> Cache
11599 AIService --> AI
100+ ```
116101
117- π€ AI Matching Logic
118- Overview
119-
120- The system calculates a jobβresume match score (0β100%) using a weighted approach:
121-
122- Skill Match: 45%
102+ ---
123103
124- Experience Level: 30%
104+ ## π€ AI Matching Logic
125105
126- Title Relevance: 25%
127-
128- How It Works
129-
130- Extract skills and keywords from resume and job description
131-
132- Calculate skill overlap
133-
134- Detect experience level alignment
135-
136- Match job title relevance
137-
138- Combine weighted scores into a final percentage
139-
140- Match Categories
141-
142- High (70β100%) β Strong match
143-
144- Medium (40β69%) β Moderate match
145-
146- Low (<40%) β Weak match
106+ ### Overview
107+ The system calculates a jobβresume match score (0β100%) using a weighted approach:
108+ - ** Skill Match** : 45%
109+ - ** Experience Level** : 30%
110+ - ** Title Relevance** : 25%
111+
112+ ### How It Works
113+ 1 . Extract skills and keywords from resume and job description
114+ 2 . Calculate skill overlap
115+ 3 . Detect experience level alignment
116+ 4 . Match job title relevance
117+ 5 . Combine weighted scores into a final percentage
118+
119+ ### Match Categories
120+ - ** High (70β100%)** β Strong match
121+ - ** Medium (40β69%)** β Moderate match
122+ - ** Low (<40%)** β Weak match
147123
148124Match scores are calculated once after resume upload and reused across filters.
149125
150- π― Smart Application Popup (Critical Thinking)
126+ ---
151127
152- Problem: Applications happen on external job portals (LinkedIn, company sites).
153- Constraint: Browser security prevents tracking actions on external websites.
128+ ## π― Smart Application Popup (Critical Thinking)
154129
155- Solution:
156- When a user returns to the app tab after clicking Apply, a popup asks:
130+ ** Problem** : Applications happen on external job portals (LinkedIn, company sites).
157131
158- Yes, Applied
132+ ** Constraint ** : Browser security prevents tracking actions on external websites.
159133
160- Applied Earlier
161-
162- No, Just Browsing
134+ ** Solution** : When a user returns to the app tab after clicking Apply, a popup asks:
135+ - Yes, Applied
136+ - Applied Earlier
137+ - No, Just Browsing
163138
164139This approach ensures accurate application tracking without violating user privacy.
165140
166- β‘ Caching & Performance
167-
168- Jobs fetched in batches of 50
169-
170- Cache-first strategy with 1-hour TTL
141+ ---
171142
172- Jobs fetched only when cache expires
143+ ## β‘ Caching & Performance
173144
174- Filters and search applied client-side
145+ - Jobs fetched in batches of 50
146+ - Cache-first strategy with 1-hour TTL
147+ - Jobs fetched only when cache expires
148+ - Filters and search applied client-side
149+ - Reduces API usage while keeping listings fresh
175150
176- Reduces API usage while keeping listings fresh
151+ ---
177152
178- π Scalability Considerations
153+ ## π Scalability Considerations
179154
180- Handles 100 jobs efficiently using parallel processing
155+ - Handles 100 jobs efficiently using parallel processing
156+ - Architecture supports scaling to 10,000 users
157+ - Stateless backend design
158+ - Redis used for fast access and caching
159+ - Clear migration path to PostgreSQL + background job queues
181160
182- Architecture supports scaling to 10,000 users
161+ ---
183162
184- Stateless backend design
163+ ## βοΈ Tradeoffs & Limitations
185164
186- Redis used for fast access and caching
165+ ### Current Limitations
166+ - No authentication (single-user demo model)
167+ - Redis / in-memory storage (not a permanent database)
168+ - AI scoring latency depends on external APIs
169+ - Single job data source
187170
188- Clear migration path to PostgreSQL + background job queues
171+ ### Future Improvements
172+ - User authentication (OAuth)
173+ - Persistent database (PostgreSQL)
174+ - Background job queue for AI scoring
175+ - Multi-source job aggregation
176+ - Email alerts and saved searches
189177
190- βοΈ Tradeoffs & Limitations
191- Current Limitations
178+ ---
192179
193- No authentication (single-user demo model)
180+ ## π οΈ Setup Instructions
194181
195- Redis / in-memory storage (not a permanent database)
182+ ### Prerequisites
183+ - Node.js 18+
184+ - npm or yarn
185+ - Optional API keys (Adzuna, Gemini, Redis)
196186
197- AI scoring latency depends on external APIs
187+ ### Run Locally
198188
199- Single job data source
200-
201- Future Improvements
202-
203- User authentication (OAuth)
204-
205- Persistent database (PostgreSQL)
206-
207- Background job queue for AI scoring
208-
209- Multi-source job aggregation
210-
211- Email alerts and saved searches
212-
213- π οΈ Setup Instructions
214- Prerequisites
215-
216- Node.js 18+
217-
218- npm or yarn
219-
220- Optional API keys (Adzuna, Gemini, Redis)
221-
222- Run Locally
189+ ``` bash
223190git clone https://github.com/Sarfarazsfz/smart-job-tracker.git
224191cd smart-job-tracker
225192
@@ -233,28 +200,27 @@ npm run dev
233200cd ../frontend
234201npm install
235202npm run dev
203+ ```
236204
205+ ** Open** : http://localhost:5173
237206
238- Open: http://localhost:5173
207+ ---
239208
240- π Documentation
209+ ## π Documentation
241210
242- Detailed references are available in the /docs folder:
211+ Detailed references are available in the ` /docs ` folder:
212+ - ** API.md** β API endpoints and request/response details
213+ - ** DEPLOYMENT.md** β Production deployment steps
243214
244- API.md β API endpoints and request/response details
215+ ---
245216
246- DEPLOYMENT.md β Production deployment steps
247-
248- π License
217+ ## π License
249218
250219MIT License
251220
252- π§ Contact
253-
254- GitHub: https://github.com/Sarfarazsfz
255-
256- LinkedIn: https://www.linkedin.com/in/faraz4237/
221+ ---
257222
258- GitHub: https://github.com/Sarfarazsfz
223+ ## π§ Contact
259224
260- LinkedIn: https://www.linkedin.com/in/sarfaraz-alam/
225+ - ** GitHub** : https://github.com/Sarfarazsfz
226+ - ** LinkedIn** : https://www.linkedin.com/in/faraz4237/
0 commit comments