Overview
CareerTrack is a full-stack, AI-powered job application tracking platform engineered with Next.js 15 App Router, React 19, TypeScript, and Prisma ORM backed by PostgreSQL. Designed for high-intent job seekers, it organizes the entire application lifecycle โ from the initial bookmarking of target positions to interview stages and offer negotiations โ inside an intuitive, type-safe workspace.
The platform pairs a responsive drag-and-drop Kanban pipeline (@hello-pangea/dnd) with a multi-model AI copilot (supporting OpenAI GPT-4o, Anthropic Claude 3.5 Sonnet, and Google Gemini 2.0 Flash via the Vercel AI SDK). Users can perform instant JD gap analyses, generate tailored resume bullets, practice live interview simulations, and visualize application velocity through Recharts analytics.
Privacy-first AI and zero-leak isolation
CareerTrack enables users to securely configure their own AI API keys (OpenAI, Anthropic, Gemini) with AES-256-GCM encryption stored in httpOnly cookies. All database operations strictly enforce user-level Row-Level Security through Clerk identity tokens.

CareerTrack landing page: All-in-one job search hub with AI interview prep, smart resume management, and live application tracking.
Tech Stack
- โขNext.js 15.3 (App Router) and React 19
- โขTypeScript 5 for strict typing across server and client components
- โขTailwind CSS v4 with @tailwindcss/postcss
- โขshadcn/ui & Radix UI primitives (dialog, select, tooltip, dropdown, toast)
- โข@hello-pangea/dnd for drag-and-drop Kanban pipeline boards
- โขRecharts for responsive analytics and monthly application trend charting
- โขFramer Motion & Lenis for micro-interactions and smooth scrolling
- โขZustand & TanStack React Query for client-side state and caching
Feature Breakdown
Kanban & Pipeline Board
Optimistic drag-and-drop pipeline board across custom status stages, dense tabular filtering with inline editing, deadline calendar views, and instant CSV exports.
Multi-Model AI Copilot
Instant JD gap scanning, keyword match scoring, bullet point tailoring suggestions, and live streaming interview simulations powered by OpenAI, Claude, and Gemini.
Interview Prep & Question Bank
Curated role-specific technical and behavioral questions categorized by difficulty tiers, linked mock notes, and structured feedback logs for each application.
Analytics & PDF Resume Parser
Interactive Recharts conversion funnels, weekly target goals, multi-version resume management with automated PDF text extraction and match percentage analytics.

Personalized candidate dashboard with JD text intake, drop file analysis, live application funnel (Saved, Applied, Assessment, Interview, Offer), and pipeline conversion metrics.
Platform Interface & Live Telemetry

Settings, Data Management & Custom AI Key Profiles
Data management and AI profile manager enabling full CSV export, dynamic provider switching (Custom OpenAI-compatible, OpenRouter, Gemini), custom Base URLs, and rate-limit failovers.

Applications Kanban Board โ Multi-Stage Opportunity Tracker
High-productivity Kanban workspace managing 24 live roles across Saved, Applied, Interviewing, Rejected, and Offered stages with quick company tags and status toggles.

Powerful Features for Modern Job Seekers โ Capabilities Grid
Comprehensive features overview: Kanban Board, AI Interview Prep, JD Scanner & Match, Smart Resume Builder, Weekly Goals, Analytics, Cloud Sync, and Privacy First.

All-in-One Job Search Platform โ Feature Architecture
Modular platform architecture: Smart Application Tracking (LinkedIn, URL, CSV import), AI Interview Coach, Funnel Analytics, Weekly AI Reviews, and Offer Negotiation comparisons.
Architecture
User Journey
Authentication & sync
User signs in via Clerk. An automated Svix webhook triggers /api/webhooks/clerk, ensuring immediate relational synchronization with the local PostgreSQL User record.
Pipeline management
Applications are created on /applications, categorized by company, tags, and expected compensation. Dragging cards across columns immediately triggers optimistic Server Action updates.
AI JD scanning
Job descriptions pasted into /jd-scanner are streamed through the selected LLM provider. The response produces match percentage, keyword highlights, and tailored resume bullet points.
Interview prep & notes
Users access role-specific question banks on /interview-prep, linking interview notes and mock answers directly to active applications in their pipeline.
Analytics & goals
/analytics aggregates submission rates, interview conversion bottlenecks, and weekly target goals using interactive Recharts components.
CareerTrack operates on an isolated, user-scoped architecture connecting Next.js 15 App Router, Clerk Auth, Prisma 6 PostgreSQL, and multi-model LLM providers via streaming SSE.
Requests enter Next.js Server Actions, authenticate via Clerk, fetch user data from Prisma/PostgreSQL, format tailored prompts for the Vercel AI SDK, and stream completions back to the client while logging analytics.
AI Job Preparation & Application Lifecycle
How CareerTrack orchestrates multi-model AI parsing, gap analysis, and pipeline Kanban tracking.
Resume Ingestion & Structured Parsing
PDF/DOCX resumes are parsed into structured JSON schemas extracting skills, years of experience, and historical achievements.
const { text } = await parsePDF(buffer);
const parsed = await generateObject({ model: gemini, schema: ResumeSchema, prompt: text });Semantic JD Gap Analysis
The job description scanner compares applicant skills against job requirements, highlighting missing keywords and match scores.
const match = computeSemanticFit({ resumeSkills: parsed.skills, jdRequirements: jd.keywords });AI Tailoring & Interview Prep Generation
Multi-model AI drafts tailored cover letter suggestions and creates customized interview question banks ranked by difficulty.
return streamText({ model: openai("gpt-4o"), system: SYSTEM_PROMPT, prompt: userPrompt });Interactive Kanban Pipeline Tracking
Applications transition through Wishlist โ Applied โ Interviewing โ Offer via drag-and-drop boards with telemetry updates.
await prisma.application.update({ where: { id, userId }, data: { status: newStatus } });Security & Encryption Deep Dive
CareerTrack guarantees applicant data privacy and prevents unauthorized AI access through layered encryption standards.
AES-256-GCM API Key Storage
User-provided OpenAI and Gemini API keys are encrypted at rest with initialization vectors and authenticated tags.
Clerk Session Handshake & JWT
All Server Actions authenticate sessions using cryptographically signed JWT tokens with instant revocation support.
svix Webhook Signature Validation
Incoming Clerk webhooks verify HMAC SHA-256 signatures to prevent replay attacks and spoofed identity payloads.
Performance & Efficiency Benchmarks
Measured real-world latency and throughput across core user flows.
Average end-to-end streaming latency for full JD keyword matching.
PostgreSQL indexed queries via Prisma ORM connection pooling.
Optimized Core Web Vitals with Next.js 15 Server Components.
Reduced token overhead via structured AST prompt compression.
Instant optimistic state transition with background rollback guard.
Unit and integration tests across Server Actions & Zod schemas.
AI Architecture Comparison: Server Actions vs Client-Side Direct Calls
Why CareerTrack routes all LLM queries through Next.js Server Actions rather than direct client-side fetch.
| Dimension / Feature | CareerTrack Server Action Pipeline | Direct Client-Side LLM Calls |
|---|---|---|
| API Key Security | 100% Server-side (Zero key exposure in browser) | Keys exposed in browser network inspection |
| Prompt Tampering Defense | System prompts locked & injected on server | Vulnerable to client-side prompt manipulation |
| Rate Limiting & Abuse Prevention | Per-user token bucket enforced in Redis | Easily bypassed via direct API scraping |
| Cold-Start & Response Streaming | Edge-compatible Server-Sent Events (SSE) | Unbuffered payloads with poor retry handling |
API Endpoints
| Resource | Mount point | Purpose |
|---|---|---|
| Webhooks | /api/webhooks/clerk | Svix-verified Clerk user creation, update, and deletion sync |
| AI Chat | /api/ai/chat | Streaming multi-model AI assistant (OpenAI, Claude, Gemini) |
| JD Scanner | /api/ai/scan-jd | Skill extraction, gap score analysis, and resume tailoring |
| Applications | Server Actions | Type-safe CRUD, status transitions, and bulk CSV export |
| Companies | Server Actions | Company notes, industry categorization, and link metadata |
| Resumes | Server Actions | Multi-version resume uploads, default tagging, and PDF parsing |
Project Structure
Getting Started
Environment Variables
DATABASE_URL=postgresql://postgres:password@localhost:5432/career_track DIRECT_URL=postgresql://postgres:password@localhost:5432/career_track NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_... CLERK_SECRET_KEY=sk_test_... CLERK_WEBHOOK_SECRET=whsec_... ENCRYPTION_KEY=32_byte_hex_key_for_aes_256_gcm OPENAI_API_KEY=sk-... ANTHROPIC_API_KEY=sk-ant-... GOOGLE_GENERATIVE_AI_API_KEY=AIzaSy...
Running Locally
pnpm install npx prisma db push pnpm dev # starts on http://localhost:3000
Deployment
- Vercel โ automated Next.js 15 deployment with Edge route optimizations and environment secrets.
- Supabase / Neon โ connection-pooled serverless PostgreSQL instance with automatic daily backups.
Frequently Asked Questions
See it in action
Explore the live application and AI features at career-track-nine.vercel.app.