AI-powered resume optimizer that matches your CV to job descriptions.
Get compatibility scores, keyword suggestions & AI-generated cover letters.
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.
- ๐ฏ 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
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.
-
โ 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
/comparepage
-
โ 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
- ๐ 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)
- 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
- 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
- Frontend Hosting: Vercel
- Backend Hosting: Railway / Render
- Database: Neon (Serverless Postgres)
- Storage: AWS S3 (PDFs, documents)
- Monitoring: Sentry
- Analytics: PostHog
- Monorepo: Turborepo
- Package Manager: pnpm
- Code Quality: Biome, Oxlint, Ultracite
- Testing: Jest (backend)
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)
-
Clone the repository
git clone https://github.com/felipesdotdev/ResumeMatch.git cd ResumeMatch -
Install dependencies
pnpm install -
Set up environment variables
Create
.envfile inapps/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.localor.envfile inapps/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.examplein the root directory for a template
-
Push database schema
pnpm db:push -
Start development servers
# Start all services (frontend + backend) pnpm dev # Or start individually pnpm dev:web # Frontend only pnpm dev:server # Backend only -
Open your browser
- Frontend: http://localhost:3001
- Backend API: http://localhost:3000
- API Docs: http://localhost:3000/docs
# 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
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
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.
We welcome contributions from the community! Whether it's:
- ๐ Bug reports
- ๐ก Feature requests
- ๐ Documentation improvements
- ๐ง Code contributions
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes following commit lint convention
- Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with inspiration from Jobscan and Zety
- Powered by Claude AI (Anthropic)
- UI components from Shadcn/UI
- Community contributions from amazing developers
- Author: Luis Felipe
- Email: contato@felipes.dev
- LinkedIn: /felipesdev
- GitHub: @felipesdotdev
Found a bug? Open an issue
Have questions? Start a discussion
Made with โค๏ธ by Luis Felipe
โญ Star this repo if you find it helpful!
