Overview
GenZCareer is an AI-driven platform that connects Gen Z job seekers with roles matching their skills and goals. I built the MVP from scratch in under 3 months.
The Problem
Gen Z faces unique challenges in the job market:
- Information Overload: Hundreds of job boards with millions of listings
- Skill Mismatch: Difficulty understanding which roles fit their skills
- Resume Barriers: ATS systems reject qualified candidates
- Generic Advice: One-size-fits-all career guidance doesn't work
Our Solution
An intelligent platform that:
- Aggregates Jobs: Scrapes listings from multiple sources
- Matches Intelligently: AI recommends roles based on profiles
- Builds Resumes: Creates ATS-friendly resumes
- Tracks Applications: Monitors application status
Key Features
AI-Powered Job Matching
from transformers import pipeline
from sklearn.metrics.pairwise import cosine_similarity
class JobMatcher:
def __init__(self):
self.encoder = pipeline("feature-extraction",
model="sentence-transformers/all-MiniLM-L6-v2")
def match_jobs(self, user_profile: str, jobs: list[Job]) -> list[Match]:
profile_embedding = self.encode(user_profile)
matches = []
for job in jobs:
job_embedding = self.encode(job.description)
score = cosine_similarity(profile_embedding, job_embedding)[0][0]
matches.append(Match(job=job, score=score))
return sorted(matches, key=lambda m: m.score, reverse=True)Smart Resume Builder
interface ResumeSection {
type: 'experience' | 'education' | 'skills' | 'projects';
content: string;
keywords: string[];
}
async function generateATSResume(
profile: UserProfile,
targetJob: Job
): Promise<Resume> {
const keywords = await extractKeywords(targetJob.description);
const sections = await Promise.all([
generateExperience(profile.experience, keywords),
generateSkills(profile.skills, keywords),
generateProjects(profile.projects, keywords),
]);
return optimizeForATS(sections, keywords);
}Job Aggregation Pipeline
from scrapy import Spider
from kafka import KafkaProducer
class JobSpider(Spider):
name = 'job_aggregator'
def parse(self, response):
for job in response.css('.job-listing'):
yield {
'title': job.css('.title::text').get(),
'company': job.css('.company::text').get(),
'location': job.css('.location::text').get(),
'description': job.css('.description').get(),
'url': response.urljoin(job.css('a::attr(href)').get()),
}Architecture
┌─────────────────┐ ┌─────────────────┐
│ Next.js App │───▶│ FastAPI │
│ (Frontend) │ │ (Backend) │
└────────┬────────┘ └────────┬────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ PostgreSQL │ │ Redis Cache │
│ (User Data) │ │ (Sessions) │
└─────────────────┘ └─────────────────┘
│ │
└──────────┬───────────┘
▼
┌─────────────────┐
│ ML Pipeline │
│ (Job Matching) │
└─────────────────┘
Tech Stack Highlights
| Layer | Technology | Why |
|---|---|---|
| Frontend | Next.js 14 | Server components, fast navigation |
| Backend | FastAPI | High performance, async support |
| ML | HuggingFace | Pre-trained models, easy fine-tuning |
| Jobs | Scrapy | Robust web scraping |
| Queue | Kafka | Reliable job processing |
| Deploy | AWS + Docker | Scalable infrastructure |
Roadmap
Launched ✅
- Job aggregation from 10+ sources
- AI-powered recommendations
- Basic resume builder
In Progress 🚧
- Application tracking
- Interview preparation AI
- Mobile app
Planned 📋
- Recruiter platform
- Skills assessment tests
- Mentorship matching
Impact Goals
- Help 10,000 Gen Z job seekers find employment
- Reduce average job search time by 50%
- Achieve 75% user satisfaction rate
- Partner with 100+ companies for direct hiring