JobMatch-AI
AI-powered job matching agent using CoreSpeed's Zypher framework. Analyzes JD-resume fit, finds matching jobs, and provides actionable insights.
π― JobMatch AI
An AI-powered job matching agent built with CoreSpeed's Zypher framework that intelligently analyzes job descriptions and resumes to provide actionable insights and find matching opportunities.
β¨ Key Features
Core Capabilities
- AI-Powered Skill Matching - Leverages LLaMA (Meta's open-source LLM) via Groq inference API for intelligent analysis
- Fit Score Calculation - Quantified match score (0-100) based on technical skill alignment
- Smart Job Discovery - Web search powered by Tavily API to find relevant opportunities
- Intelligent Filtering - Automatically excludes 36+ job boards, surfaces direct company postings only
- Resume Strength Analysis - Comprehensive resume quality assessment with ATS compatibility scoring
- AI Cover Letter Generator - Personalized cover letters tailored to specific job descriptions (body text only, no greeting/closing)
User Experience
- Futuristic Dark Mode Design - Modern AI-themed interface with prominent animated gradients, glowing effects, and futuristic aesthetics
- Animated Visual Effects - Dynamic gradient animations, shimmer effects on logo and text, glowing borders, and scanline overlays for a cutting-edge look
- Glassmorphism & Depth - Multi-layer shadows, backdrop blur effects, and gradient borders create a sophisticated 3D appearance
- One-Page Progressive Disclosure - Seamless single-page experience with smooth transitions between states
- Desktop-Optimized Layout - Full-width design optimized for desktop screens with drag-to-resize panels
- AI Assistant-Like Interface - Conversational buttons and friendly, passionate tone throughout
- Multi-Format Resume Upload - Upload your resume as PDF, Word (DOCX/DOC), or TXT file for automatic text extraction
- Auto-Running Features - Resume strength analysis and job search run automatically after starting
- Side-by-Side Results - View analysis results and job search results simultaneously with resizable panels
- Smart Validation - Visual feedback and clear error messages for better UX
- Real-time Analysis - Streaming responses with live progress indicators
- Copy to Clipboard - One-click copy for generated cover letters
- Robust Fallback System - Local parser ensures functionality even when API quotas are exceeded
Technical Excellence
- Type-Safe Development - Built with TypeScript on Deno runtime
- Production-Ready - Error handling, validation, and graceful degradation built-in
- Comprehensive Logging - Detailed diagnostic logging for troubleshooting API issues
π Quick Start
Prerequisites
Install Deno:
curl -fsSL https://deno.land/install.sh | shConfigure API Keys:
Groq (Recommended - Free & Fast)
Uses LLaMA (Meta's open-source LLM) with Groq's high-performance inference API.
export GROQ_API_KEY="gsk-your-groq-api-key-here" export GROQ_MODEL="llama-3.1-8b-instant" # Optional - defaults to LLaMA 3.1 8B InstantGet your key: https://console.groq.com/keys
Tavily (For Job Search)
export TAVILY_API_KEY="your-tavily-key"Get your key: https://tavily.com
OpenAI (Alternative)
export OPENAI_API_KEY="sk-your-api-key-here" export OPENAI_MODEL="gpt-4o-mini" # Optional - defaults to gpt-4o-miniGet your key: https://platform.openai.com/api-keys
Note: Groq is recommended for development (free tier available). OpenAI is used as a fallback if Groq API key is not configured. Tavily is optionalβwithout it, the app uses mock data for demonstration.
Running the Application
deno task run:server
Open http://localhost:8000 in your browser.
Note: The interface features a futuristic dark mode design with prominent animated gradients, glowing effects, and modern AI aesthetics. The design includes dynamic gradient animations (8-10s cycles), shimmer effects on the logo and "JobMatch AI" text (2s cycles), glowing borders, scanline overlays, and sophisticated glassmorphism effects for a cutting-edge user experience. The layout is optimized for desktop screens with drag-to-resize panels for side-by-side content.
Usage Flow
Add your resume (required for all features) - You can either:
- Paste your resume text directly into the textarea, or
- Upload a file using the "π Upload Your Resume - I'll Take It From Here!" button:
- PDF files (
.pdf) - Full support - Word documents (
.docx,.doc) - DOCX fully supported, DOC with limited support - Text files (
.txt) - Full support
- PDF files (
- Text will be automatically extracted and populated into the textarea
- Button shows "β Upload Successful! Your Resume is Ready" after successful upload
Start JobMatch AI:
- Click "π Let's Get Started! I'm Ready to Help You Find Your Dream Job"
- The resume input disappears with a smooth fade-out transition
- Resume Strength Analysis appears on the left (runs automatically)
- Job Search appears on the right (runs automatically without keywords)
- Both features run simultaneously and display results side-by-side
Refine Job Search (optional):
- Scroll down to see the "π― Refine Your Job Search" section
- Enter optional keywords: Job Type/Role, Location, Additional Keywords
- Click "π Perfect! Let me find amazing opportunities that match exactly what you're looking for"
- New job results appear in the scrollable wrapper above the refine section
- Input fields clear automatically after search
Analyze Match & Generate Cover Letter:
- Click "πΌ Excited about a specific role? Share the job description with me and I'll dive deep into analyzing your perfect match, then craft a compelling cover letter that showcases your strengths!"
- This button appears immediately but is disabled until the initial job search completes
- Once enabled, click it to reveal a full-page job description input
- Paste the job description and click "β¨ Let's Do This! Analyze My Match & Create My Perfect Cover Letter"
- Analyze Match results appear on the left
- Cover Letter appears on the right with a copy-to-clipboard button
- Both results are displayed side-by-side with resizable panels
Navigation:
- Use "π Found Another Great Opportunity? I'm Ready to Analyze It for You!" to analyze a different job
- Use "π Want to review your resume strengths or search more jobs? Let's jump back." to return to the main results view
Note: The interface uses progressive disclosure - features appear and disappear smoothly as you progress through the workflow. All content fits within one page with internal scrolling for job results and long content areas.
ποΈ Architecture
Project Structure
jobmatch-ai/
βββ src/
β βββ agent.ts # Core Zypher agent logic (analysis, job search, resume strength, cover letter)
β βββ server.ts # HTTP server & routing
β βββ tools/
β βββ file_parser.ts # Multi-format file text extraction (PDF, Word, TXT)
β βββ job_search.ts # Tavily integration
β βββ local_parser.ts # Fallback skill parser
βββ sample/ # Sample data files
βββ index.html # Modern responsive web interface
βββ deno.json # Configuration
βββ README.md
Technology Stack
Core Framework
- Zypher (
@corespeed/zypher) - CoreSpeed's AI agent framework - LLaMA (Meta's open-source LLM) - Large language model for intelligent analysis (via Groq)
- Groq API - High-performance inference provider for LLaMA (fast, free tier available, recommended)
- OpenAI API - Alternative LLM provider (fallback if Groq is not configured)
- Tavily API - AI-optimized web search with content extraction
Runtime & Language
- Deno - Modern TypeScript runtime
- TypeScript - Type-safe development
- RxJS (
rxjs-for-await) - Reactive event streams
Additional Libraries
- pdf-parse - PDF text extraction for resume uploads
- mammoth - Word document (DOCX) text extraction
How It Works
Resume Input
- Users can paste resume text or upload a file (PDF, Word, or TXT)
- Files are automatically parsed to extract text content:
- PDF: Uses
pdf-parselibrary - Word (DOCX): Uses
mammothlibrary - Word (DOC): Limited support, may require conversion to DOCX
- TXT: Direct text extraction
- PDF: Uses
- Extracted text is populated into the resume textarea
Agent Initialization
- Creates Zypher context and initializes model provider
- Uses LLaMA (Meta's open-source LLM) via Groq inference API for fast, cost-effective analysis
- Falls back to OpenAI if Groq API key is not configured
- Configures streaming support for real-time responses
Analysis Pipeline
- Structured prompt engineering for consistent JSON output
- Streaming response processing with event accumulation
- Post-processing: filters non-technical terms, validates skill matches, auto-corrects errors
- Comprehensive error handling with detailed logging
Job Discovery
- Tavily API searches web for relevant positions
- Intelligent filtering by job board name (catches all domain variations: .com, .ca, .co.uk, etc.)
- Automatically filters out 36+ job boards including LinkedIn, Indeed, Glassdoor, Eluta, Levels.fyi, Workopolis, and more
- AI analysis ranks top 3 matches by resume fit
- Returns structured results with match breakdowns
Resume Strength Analysis
- Comprehensive resume quality assessment
- ATS compatibility scoring
- Identifies strengths, weaknesses, and improvement areas
- Provides actionable suggestions for enhancement
- Falls back to local parser if AI analysis fails
Cover Letter Generation
- AI-generated personalized cover letters
- Automatically extracts company name from job description
- Tailored to match resume and job requirements
- Outputs clean body text only (greeting and closing removed for simplicity)
- Advanced cleanup to remove any prompt text or instructions
- One-click copy to clipboard functionality
Resilience
- Automatic fallback to local keyword-based parser on API failures
- Graceful degradation maintains core functionality
- Detailed diagnostic logging for troubleshooting
π Troubleshooting
| Issue | Solution |
|---|---|
| API key not found | Verify environment variable: echo $GROQ_API_KEY |
| API quota exceeded | App automatically uses fallback parser; check limits at https://console.groq.com |
| Mock job data shown | Set TAVILY_API_KEY for real job search results |
| Port 8000 in use | Use PORT=9001 deno task run:server or kill existing process |
| Import errors | Always use deno task run:server (includes proper config) |
| Empty resume warning | Resume field will highlight in red if empty; paste text or upload file |
| File upload fails | Ensure file is PDF, DOCX, DOC, or TXT; check browser console for detailed errors |
| Cover letter includes prompt text | This is a known issue with some LLM responses; cleanup logic should remove it automatically |
| Resume analysis shows fallback message | Check server console logs for specific error (quota, rate limit, auth, etc.) |
π Important Notes
- Default Behavior: LLaMA (Meta's open-source LLM) via Groq inference API is used if
GROQ_API_KEYis set; otherwise falls back to OpenAI - Skill Filtering: Only technical skills are analyzed (benefits, salary, etc. are excluded)
- Job Board Filtering: Filters by job board name (e.g., "glassdoor") to catch all domain variations (.com, .ca, .co.uk, etc.)
- Score Variance: LLM probabilistic nature may cause Β±3-5 point variations (expected behavior)
- File Parsing:
- PDF uploads extract all text content. Some formatting (tables, columns) may be simplified, but all text is preserved for analysis
- Word DOCX files are fully supported
- Word DOC files (older format) have limited support - conversion to DOCX or PDF is recommended
- TXT files are directly extracted
- Multiple Operations: You can run multiple analyses or job searches - each new operation updates its respective results section
- Simultaneous Results: Analysis and job search results are displayed in separate sections and can be viewed simultaneously
- Cover Letter Format: Generated cover letters include only the body text (no greeting or closing) for maximum flexibility
- Diagnostic Logging: Server console includes detailed logging for API calls, errors, and response processing to aid in troubleshooting
π― Assessment Deliverables
β
Repository: https://github.com/FelixNg1022/JobMatch-AI.git
β
Run Instructions: See Quick Start section above
β
Demo Video: [Link to your screen recording]
π Documentation
- Zypher Framework
- Deno Documentation
- LLaMA (Meta AI)
- Groq API Reference
- OpenAI API Documentation
- OpenAI API Reference
- Tavily API Docs
Built with β€οΈ using CoreSpeed's Zypher framework
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found