AI-Powered Resume Tailoring Engine
Tailor your resume to any job description in seconds. Beat ATS filters. Land more interviews.
Try it Live · Features · How It Works · Get Started · Contributing
- 75% of resumes are rejected by ATS before a human ever sees them
- Recruiters spend only 6 seconds scanning a resume
- Tailored resumes are 3x more likely to get a callback
- Most resume tools charge $20-50/month or require AI API keys
ResuMorph is a free, open-source resume tailoring engine that runs entirely in your browser. No AI API keys needed. No subscriptions. No data sent to third parties.
Paste your resume + a job description → get a professionally tailored, ATS-optimized resume in seconds.
Try it now: https://resumorph.vercel.app
- Smart keyword matching with 150+ skills and synonym recognition
- Weak verb replacement — "Responsible for" → "Spearheaded", "Helped with" → "Contributed to"
- Bullet point prioritization — metrics-heavy bullets sorted to the top
- Professional summary generation — auto-creates a tailored summary with matched skills
- Categorized skills section — Languages, Frameworks, Databases, Cloud/DevOps, Tools
- Job-aware ATS score — weighted: Keywords (60%) + Formatting (25%) + Content (15%)
- Missing skills detection — shows exactly which keywords you need to add
- Keyword match percentage — real ATS systems filter at 60%+ match
- Formatting checks — section headers, contact info, special characters
- Score breakdown — transparent scoring so you know exactly what to fix
- Match score visualization — see your keyword overlap percentage
- Matched vs Missing skills — color-coded skill tags
- Cloud & DevOps analysis — separate cloud skills tracking with certification recommendations
- Company type detection — FAANG, Consulting, Finance, Startup, Enterprise tips
- Bullet point analysis — quantification rate, weak verb detection
- 4 professional templates — Classic, Modern, Minimal, Bold
- PDF download — one-click export
- Live preview — see your formatted resume instantly
- Skill co-occurrence tracking — learns which skills appear together across job descriptions
- Related skills suggestions — recommends skills to learn based on patterns
- Zero external APIs — everything runs locally, no data leaves your browser
┌─────────────────┐ ┌──────────────────────┐ ┌─────────────────────┐
│ Your Resume │────▶│ ResuMorph Engine │────▶│ Tailored Resume │
│ │ │ │ │ │
│ + Job Posting │ │ 1. Parse sections │ │ + ATS Score │
│ │ │ 2. Extract keywords │ │ + Skills Analysis │
│ │ │ 3. Match & score │ │ + Suggestions │
│ │ │ 4. Enhance bullets │ │ + PDF Download │
│ │ │ 5. Rebuild resume │ │ │
└─────────────────┘ └──────────────────────┘ └─────────────────────┘
- Keyword Extraction — tokenizes text, extracts multi-word phrases, expands synonyms
- Skill Matching — compares resume keywords against job requirements with synonym + implication matching (e.g., PostgreSQL implies SQL knowledge)
- Section Parsing — identifies Experience, Education, Skills, Certifications sections
- Bullet Enhancement — replaces weak verbs, sorts by relevance, boosts metrics-heavy bullets
- Resume Rebuild — generates complete ATS-friendly resume: Header → Summary → Skills → Experience → Education → Certifications
- ATS Scoring — calculates compatibility based on keyword match (60%), formatting (25%), content quality (15%)
Unlike basic keyword matchers, ResuMorph understands that:
- Having PostgreSQL implies SQL knowledge
- Having React implies JavaScript and Frontend skills
- Having GitHub Actions implies CI/CD and DevOps practices
- Having Flask implies Python and Backend experience
This gives you credit for skills you actually have, even if the exact keyword isn't on your resume.
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router, TypeScript) |
| Styling | Tailwind CSS 4 (Glassmorphism dark theme) |
| Engine | Custom keyword matching + synonym expansion |
| PDF Export | html2pdf.js with print fallback |
| Deployment | Vercel (Serverless) |
| Auth | Clerk (optional) |
| Database | Supabase (optional) |
| Payments | Stripe (optional) |
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/vardhanreddy369/resumorph.git
cd resumorph
# Install dependencies
npm install
# Run development server
npm run devOpen http://localhost:3000 in your browser.
Create a .env.local file:
# Authentication (optional — app works without it)
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_...
CLERK_SECRET_KEY=sk_...
# Database (optional — for usage tracking)
NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
# Payments (optional — for Pro subscriptions)
STRIPE_SECRET_KEY=sk_...
STRIPE_WEBHOOK_SECRET=whsec_...
NEXT_PUBLIC_STRIPE_PRICE_ID=price_...Note: The core tailoring engine works with zero configuration. Auth, database, and payments are optional add-ons.
Or manually:
npm install -g vercel
vercel login
vercel build --prod
vercel deploy --prebuilt --prodresumorph/
├── src/
│ ├── app/
│ │ ├── page.tsx # Landing page (glassmorphism UI)
│ │ ├── layout.tsx # Root layout (conditional ClerkProvider)
│ │ ├── globals.css # Design system (animations, glass, gradients)
│ │ ├── tailor/
│ │ │ ├── page.tsx # Main app — resume input & results
│ │ │ └── ResumePreview.tsx # Template selector & PDF export
│ │ ├── api/
│ │ │ ├── tailor/route.ts # POST /api/tailor — tailoring endpoint
│ │ │ ├── analyze/route.ts # POST /api/analyze — analysis endpoint
│ │ │ └── stripe/ # Checkout & webhook handlers
│ │ ├── sign-in/ # Clerk auth pages
│ │ └── sign-up/
│ ├── lib/
│ │ ├── engine.ts # Core engine (1800+ lines)
│ │ ├── supabase.ts # Database client (lazy init)
│ │ └── stripe.ts # Stripe client
│ └── middleware.ts # Auth middleware (no-op without Clerk)
├── public/
│ └── screenshots/ # README screenshots
├── data/
│ └── learned.json # Self-learning data (auto-generated)
├── CLAUDE.md # Project documentation
├── LICENSE # MIT License
└── package.json
| Metric | Value |
|---|---|
| Skills recognized | 150+ |
| Synonym mappings | 200+ |
| Skill implications | 50+ |
| Multi-word phrases | 80+ |
| Stop words filtered | 200+ |
| ATS section headers | 30+ |
| Certification recommendations | 20+ |
| Company type profiles | 5 |
The engine is built on extensive research from:
- Jobscan — ATS keyword optimization data (2018-2024)
- TheLadders — Eye-tracking study on recruiter behavior (6-second scan)
- Harvard Business School — "Hidden Workers" report on ATS rejection rates
- ResumeGo — Controlled resume callback studies (7,712 resumes)
- SHRM — HR industry surveys on hiring practices
- CareerBuilder — Employer surveys on resume mistakes
- LinkedIn Talent Solutions — Workforce hiring data
Key findings integrated into the engine:
- 75% of resumes rejected by ATS before human review
- Tailored resumes get 3x more callbacks
- 60%+ keyword match needed to pass most ATS filters
- Bullets with metrics catch recruiters' eyes in 6-second scans
- Strong action verbs rated 33% more favorably than weak ones
| Feature | Free | Pro ($9/month) |
|---|---|---|
| Resume tailoring | 2/month | Unlimited |
| Skills analysis | 2/month | Unlimited |
| ATS scoring | 2/month | Unlimited |
| PDF download | Yes | Yes |
| Templates | 4 | 4 |
Pro features require Clerk + Supabase + Stripe configuration.
| Resource | URL |
|---|---|
| Live App | resumorph.vercel.app |
| GitHub Repo | github.com/vardhanreddy369/resumorph |
| Tailor Page | resumorph.vercel.app/tailor |
| API: Tailor | POST https://resumorph.vercel.app/api/tailor |
| API: Analyze | POST https://resumorph.vercel.app/api/analyze |
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - 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 Next.js, Tailwind CSS, and a lot of resume research.
Try it live →
Made by @vardhanreddy369