Skip to content

๐Ÿš€ AI-powered resume optimizer that matches your CV to job descriptions. Get compatibility scores, keyword suggestions & AI-generated cover letters. Fullstack: Next.js 16 + React 19 + NestJS + Fastify + Drizzle + PostgreSQL. Open-source alternative to paid ATS tools.

Notifications You must be signed in to change notification settings

felipesdotdev/ResumeMatch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ ResumeMatch

ResumeMatch Logo

AI-powered resume optimizer that matches your CV to job descriptions.

Get compatibility scores, keyword suggestions & AI-generated cover letters.

License: MIT TypeScript Next.js NestJS Better Auth

Demo โ€ข API Docs โ€ข Features


๐Ÿ“‹ Table of Contents


๐ŸŽฏ About

ResumeMatch is an open-source AI-powered SaaS platform that helps job seekers optimize their resumes for specific job postings. Using advanced AI analysis, it identifies compatibility gaps, suggests improvements, and generates personalized application materials.

Why ResumeMatch?

  • ๐ŸŽฏ ATS Optimization: Increase your chances of passing Applicant Tracking Systems
  • ๐Ÿค– AI-Powered Analysis: Deep analysis using Claude/GPT models
  • ๐Ÿ“Š Actionable Insights: Get specific, data-driven recommendations
  • ๐Ÿ’ฐ Open Source: Free forever with optional premium features
  • โšก Modern Stack: Built with cutting-edge technologies

Problem We Solve

90% of large companies use ATS systems that filter out resumes before human review. Most job seekers don't know how to optimize their CVs for these systems, losing opportunities. Existing solutions (Jobscan, Zety) are expensive and closed-source.


โœจ Features

๐Ÿš€ Current Features (MVP v1.0)

  • โœ… Job Description Analysis

    • Parse job postings from URL or text
    • Extract keywords, requirements, and skills
    • Identify must-have vs. nice-to-have qualifications
  • โœ… Resume Compatibility Score โœจ NEW

    • Calculate match percentage with job posting (0-100%)
    • Visual breakdown by category (Skills 40%, Experience 30%, Keywords 20%, Education 10%)
    • Identify critical gaps with importance levels
    • AI-powered gap analysis and recommendations
    • Accessible via /compare page
  • โœ… Keyword Analysis

    • Show missing keywords with frequency
    • Prioritize by importance
    • Suggest natural integration points
  • โœ… PDF Report Generation

    • Comprehensive analysis report
    • Downloadable and shareable
    • Professional formatting
  • โœ… User Dashboard

    • Track analysis history
    • Compare multiple job applications
    • Export data
  • โœ… Authentication & User Management

    • Secure sign-up/login
    • OAuth providers (Google, GitHub)
    • Profile management

๐Ÿ”ฎ Coming Soon

  • ๐Ÿ”„ AI Resume Reformulation (v1.1 - Dec 2025)
  • ๐Ÿ“ Cover Letter Generator (v1.1 - Dec 2025)
  • ๐ŸŽฅ Mock Interview with AI (v2.0 - Q1 2026)
  • ๐Ÿ”— LinkedIn Integration (v2.0 - Q1 2026)
  • ๐Ÿข B2B API for Recruiters (v2.5 - Q2 2026)

๐Ÿ›  Tech Stack

Frontend

  • Framework: Next.js 16 (App Router)
  • Language: TypeScript 5.9
  • UI Library: React 19
  • Styling: TailwindCSS 4 + Shadcn/UI
  • State Management: TanStack Query (React Query)
  • Forms: TanStack Form + Zod
  • HTTP Client: Axios

Backend

  • Framework: NestJS 11
  • HTTP Server: Fastify (via NestJS adapter)
  • Language: TypeScript 5.9
  • Database: PostgreSQL (Neon Serverless)
  • ORM: Drizzle ORM
  • AI Integration: AI SDK (Anthropic/OpenAI)
  • Authentication: Better Auth
  • API: RESTful API with Swagger/OpenAPI

Infrastructure

  • Frontend Hosting: Vercel
  • Backend Hosting: Railway / Render
  • Database: Neon (Serverless Postgres)
  • Storage: AWS S3 (PDFs, documents)
  • Monitoring: Sentry
  • Analytics: PostHog

DevOps

  • Monorepo: Turborepo
  • Package Manager: pnpm
  • Code Quality: Biome, Oxlint, Ultracite
  • Testing: Jest (backend)

๐Ÿš€ Getting Started

Prerequisites

Ensure you have the following installed:

  • Node.js >= 20.x
  • pnpm >= 10.x
  • PostgreSQL >= 16.x (or Neon account)
  • Redis >= 7.x (optional, for development)

Installation

  1. Clone the repository

    git clone https://github.com/felipesdotdev/ResumeMatch.git
    cd ResumeMatch
    
  2. Install dependencies

    pnpm install
    
  3. Set up environment variables

    Create .env file in apps/server/ with:

    DATABASE_URL=your_postgresql_connection_string
    CORS_ORIGIN=http://localhost:3001
    PORT=3000
    
    # AI Provider (choose one or multiple - priority: Anthropic > Groq > OpenAI)
    # Option 1: Anthropic Claude (best accuracy for structured extraction)
    # Get API key from https://console.anthropic.com/
    ANTHROPIC_API_KEY=sk-ant-api03-...
    
    # Option 2: Groq (very fast and cost-effective, great performance)
    # Get API key from https://console.groq.com/
    # GROQ_API_KEY=gsk_...
    
    # Option 3: OpenAI (reliable fallback)
    # Get API key from https://platform.openai.com/api-keys
    # OPENAI_API_KEY=sk-...

    Create .env.local or .env file in apps/web/ with:

    NEXT_PUBLIC_SERVER_URL=http://localhost:3000

    Note:

    • Priority order: Anthropic Claude โ†’ Groq โ†’ OpenAI โ†’ Basic parsing
    • Anthropic Claude: Best accuracy for structured data extraction
    • Groq: Very fast, cost-effective, excellent performance (uses Llama 3 70B)
    • OpenAI GPT-4: Reliable fallback option
    • If no AI provider is configured, uses basic text parsing as fallback (less accurate)
    • See .env.example in the root directory for a template
  4. Push database schema

    pnpm db:push
    
  5. Start development servers

    # Start all services (frontend + backend)
    pnpm dev
    
    # Or start individually
    pnpm dev:web      # Frontend only
    pnpm dev:server   # Backend only
    
  6. Open your browser

Quick Start Commands

# Development
pnpm dev              # Start all services
pnpm dev:web          # Start frontend only (port 3001)
pnpm dev:server       # Start backend only (port 3000)

# Build
pnpm build            # Build all apps

# Database
pnpm db:generate      # Generate migrations
pnpm db:migrate       # Run migrations
pnpm db:push          # Push schema changes
pnpm db:studio        # Open Drizzle Studio

# Code Quality
pnpm check            # Run Oxlint
pnpm check-types      # TypeScript check

๐Ÿ“ Project Structure

resumematch/
โ”œโ”€โ”€ apps/
โ”‚   โ”œโ”€โ”€ web/                 # Next.js frontend
โ”‚   โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ app/         # App Router pages
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ components/  # React components
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ lib/         # Utilities & API client
โ”‚   โ”‚   โ””โ”€โ”€ package.json
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ server/              # NestJS backend
โ”‚       โ”œโ”€โ”€ src/
โ”‚       โ”‚   โ”œโ”€โ”€ filters/     # Exception filters
โ”‚       โ”‚   โ”œโ”€โ”€ app.module.ts
โ”‚       โ”‚   โ”œโ”€โ”€ app.controller.ts
โ”‚       โ”‚   โ””โ”€โ”€ main.ts       # Entry point
โ”‚       โ””โ”€โ”€ package.json
โ”‚
โ”œโ”€โ”€ packages/
โ”‚   โ”œโ”€โ”€ db/                  # Drizzle schema & database helpers
โ”‚   โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ schema/        # Database schemas (auth, todo)
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ index.ts      # Database instance & helpers
โ”‚   โ”‚   โ””โ”€โ”€ drizzle.config.ts
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ api/                 # NestJS API modules
โ”‚   โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ todos/        # Todos feature module
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ database/     # Database module
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ api.module.ts
โ”‚   โ”‚   โ””โ”€โ”€ package.json
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ api-client/          # Generated API client
โ”‚   โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ api.ts        # Type-safe API client
โ”‚   โ”‚   โ””โ”€โ”€ orval.config.ts
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ auth/                # Better Auth configuration
โ”‚       โ””โ”€โ”€ src/
โ”‚           โ””โ”€โ”€ index.ts      # Auth instance
โ”‚
โ”œโ”€โ”€ pnpm-workspace.yaml      # Workspace configuration
โ”œโ”€โ”€ turbo.json               # Turborepo configuration
โ”œโ”€โ”€ biome.json               # Biome linter/formatter config
โ”œโ”€โ”€ LICENSE                  # MIT License
โ””โ”€โ”€ README.md                # This file

๐Ÿ“š Documentation

This project is built with Better-T-Stack CLI and follows a monorepo structure with:

  • Frontend: Next.js 16 with App Router
  • Backend: NestJS 11 with Fastify adapter
  • Database: Drizzle ORM with PostgreSQL (Neon)
  • Authentication: Better Auth

For API documentation, visit /docs endpoint when the server is running.


๐Ÿค Contributing

We welcome contributions from the community! Whether it's:

  • ๐Ÿ› Bug reports
  • ๐Ÿ’ก Feature requests
  • ๐Ÿ“ Documentation improvements
  • ๐Ÿ”ง Code contributions

Quick Contribution Steps

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes following commit lint convention
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments

  • Built with inspiration from Jobscan and Zety
  • Powered by Claude AI (Anthropic)
  • UI components from Shadcn/UI
  • Community contributions from amazing developers

๐Ÿ“ฌ Contact & Support

Found a bug? Open an issue

Have questions? Start a discussion


Made with โค๏ธ by Luis Felipe

โญ Star this repo if you find it helpful!

About

๐Ÿš€ AI-powered resume optimizer that matches your CV to job descriptions. Get compatibility scores, keyword suggestions & AI-generated cover letters. Fullstack: Next.js 16 + React 19 + NestJS + Fastify + Drizzle + PostgreSQL. Open-source alternative to paid ATS tools.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published