Inspiration

The modern job market is fundamentally broken. Job seekers spend 20+ hours per week applying to positions, often receiving no feedback. On the flip side, employers manually review hundreds of resumes per posting, with an estimated 75% being unqualified.

I experienced this frustration firsthand — sending applications into the void, never knowing why I wasn't selected, struggling to optimize my resume for ATS systems that rejected candidates before a human ever saw them.

The question became: What if AI could bridge this gap?

With the emergence of powerful language models like Google Gemini, I saw an opportunity to reimagine career navigation — not just as a job board, but as an intelligent career copilot that understands context, provides actionable feedback, and serves both sides of the hiring equation.


What I Learned

Technical Skills

  • Genkit Framework — Building production-grade AI flows with type safety, observability, and easy model swapping
  • Prompt Engineering — Crafting structured prompts that consistently extract meaningful information from LLMs
  • Real-time Systems — Firebase Firestore subscriptions for live application tracking
  • Email Automation — Resend integration for transactional notifications

AI/ML Concepts

  • Semantic matching goes far beyond keyword matching — understanding relationships between skills (e.g., Python → Data Science)
  • The importance of graceful degradation when AI services are unavailable
  • Balancing model selection: Gemini Pro for complex reasoning, Gemini Flash for speed

Product Thinking

  • Dual-sided platforms create network effects — the more employers use it, the more valuable it becomes for seekers, and vice versa
  • Transparency builds trust — showing why a job was recommended matters as much as the recommendation itself

How I Built It

Architecture Overview

┌─────────────────────────────────────────────────────────────────┐
│                        CareerCompass                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Frontend (Next.js 15)          AI Engine (Genkit)              │
│  ─────────────────────          ──────────────────              │
│  • React 18 + TypeScript        • 17 Specialized Flows          │
│  • Tailwind CSS                 • Gemini Pro / Flash            │
│  • 67 UI Components             • Structured Prompts            │
│  • Framer Motion                • Error Handling                │
│                                                                 │
│  Backend (Firebase)             External Services               │
│  ──────────────────             ─────────────────               │
│  • Firestore (NoSQL)            • Brevo (Email)                 │
│  • Auth (Google OAuth)          • Cloudinary (Images)           │
│  • Security Rules               • Stripe (Payments)             │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Development Process

  1. Research Phase — Analyzed existing job platforms, identified pain points, studied ATS algorithms
  2. AI Flow Design — Defined 17 specialized flows covering the complete career journey
  3. Component Library — Built 67 reusable UI components with consistent design language
  4. Integration — Connected AI flows with real-time database and email automation
  5. Optimization — Achieved 95+ Lighthouse score through performance tuning

Key AI Flows

Flow Implementation
Candidate Ranking Multi-factor scoring: skills match, experience alignment, availability
Resume Parser Structured extraction from PDF/DOCX with validation scoring
ATS Optimizer Keyword analysis against job descriptions with improvement suggestions
Interview Prep Role-specific questions with company context and example answers

Challenges I Faced

1. Balancing AI Quality vs. Speed

Problem: Gemini Pro provides better reasoning but is slower; Gemini Flash is fast but less nuanced.

Solution: Implemented a hybrid approach — use Flash for quick tasks (text enhancement, summaries) and Pro for complex reasoning (candidate ranking, skill analysis). Response times dropped from 4-5 seconds to under 1 second for simple operations.

2. Handling Unstructured Resume Data

Problem: Resumes come in countless formats with inconsistent structures.

Solution: Built a robust parsing pipeline with:

  • Multi-format support (PDF, DOCX, TXT)
  • Fallback mechanisms for partial extraction
  • Confidence scoring to flag low-quality parses

3. Real-Time Updates at Scale

Problem: Keeping application statuses synchronized across job seekers and employers.

Solution: Leveraged Firebase Firestore's real-time subscriptions with debouncing to prevent excessive reads while maintaining sub-second update latency.

4. Email Deliverability

Problem: Transactional emails were hitting spam filters.

Solution: Configured proper SPF/DKIM records, used Brevo's reputation management, and optimized email templates for deliverability — achieving 99.2% delivery rate.

5. ATS Algorithm Accuracy

Problem: Different ATS systems use different matching algorithms.

Solution: Researched common ATS patterns and built a comprehensive scorer that evaluates:

$$ \text{ATS Score} = w_1 \cdot \text{Keywords} + w_2 \cdot \text{Format} + w_3 \cdot \text{Structure} + w_4 \cdot \text{Length} $$

Where \( w_1, w_2, w_3, w_4 \) are tuned based on industry research.


What's Next

  • Video Interview Analysis — AI-powered mock interviews with feedback
  • Skill Assessments — Interactive coding challenges and soft skill evaluations
  • API Marketplace — Allow third-party integrations via public APIs
  • Mobile App — Native iOS/Android experience

CareerCompass isn't just a project — it's my attempt to make job searching less painful for everyone.

Built With

  • brevo
  • cloudinary
  • firebase-auth
  • firebase-firestore
  • framer-motion
  • genkit
  • google-gemini
  • gsap
  • lucide-react
  • next.js
  • radix-ui
  • react
  • react-hook-form
  • recharts
  • stripe
  • tailwind-css
  • typescript
  • vercel
  • zod
Share this project:

Updates