GitHub username to recruiter-ready resume generator
If Merge is useful to you and you want to support further development:
https://buymeacoffee.com/r4m0
- Route-based resume generation via
/<github-username> - GitHub REST API ingestion with validation, caching, and rate-limit handling
- Recruiter-focused Markdown, LaTeX, and PDF resume exports
- Signal-first analysis: languages, repository quality, contribution metrics, and activity recency
- Optional AI-enhanced resume writing via OpenRouter
- Production-ready Next.js 16 App Router setup for Vercel deployment
- Animated UI with dark/light theme support and shareable username routes
merge/
├── app/
│ ├── [username]/page.tsx # Direct route resume generation
│ ├── api/
│ │ ├── resume/route.ts # Resume JSON endpoint
│ │ └── resume/pdf/route.ts # PDF export endpoint
│ ├── globals.css
│ ├── layout.tsx
│ └── page.tsx # Landing page
├── components/
│ └── resume-shell.tsx # Shared UI shell
├── lib/
│ ├── analyze.ts # Signal extraction and focus analysis
│ ├── generate.ts # Resume generation
│ ├── github.ts # GitHub API client and metrics collection
│ ├── pdf.ts # Markdown to PDF rendering
│ └── resume.ts # Resume pipeline orchestration + caching
├── types/
│ └── resume.ts # Shared domain types
├── examples/
│ └── sample-output.md
└── package.json
- Node.js 20+
- npm
- GitHub token recommended for higher API rate limits
- OpenRouter API key optional for AI-enhanced writing
- Create
.env.local:
GITHUB_TOKEN=
OPENROUTER_API_KEY=
NEXT_PUBLIC_STAR_ME_URL=https://github.com/R4M-0/merge- Install dependencies:
npm install- Start development:
npm run dev- Open:
http://localhost:3000
- Test direct username routes:
http://localhost:3000/R4M-0
Optional but strongly recommended. Used to avoid low unauthenticated GitHub API rate limits.
Use a fine-grained personal access token with read access to public metadata.
Optional. When provided, Merge can generate stronger recruiter-style summaries and bullets using an LLM fallback/enhancement path.
If omitted, the app still works using deterministic local generation.
Optional. Controls the repository link behind the Star Me button in the UI.
- Enter a GitHub username or visit
/<github-username> - Generate recruiter-ready resume content from public GitHub activity
- Export the generated output as Markdown, LaTeX, or PDF
- Public repositories
- Top repositories ranked by signal
- Language distribution
- Pull requests opened
- Pull requests merged
- Issues opened
- External repository contributions
- Last 30 / 90 day activity windows
- Animated landing experience
- Light and dark theme support
- Shareable route-based resume pages
- Copy and download actions for generated outputs
- Next.js App Router
- No database required
- Vercel-friendly runtime model
- Server-side caching for generated resumes
Request:
{ "username": "R4M-0" }Response includes:
- Raw GitHub metrics
- Analysis results
- Generated Markdown
- Generated LaTeX
- Recruiter-focused summary and bullets
Request:
{ "username": "R4M-0", "markdown": "# Resume..." }Returns downloadable PDF bytes with application/pdf.
Handled scenarios:
- Invalid GitHub username format
- User not found
- GitHub API rate limit exceeded
- Empty or low-activity profiles
- PDF generation failure
- Unexpected upstream/API failures
npm run dev
npm run build
npm run start
npm run typecheck- Push the repository to GitHub.
- Import it into Vercel.
- Set
GITHUB_TOKENand optionallyOPENROUTER_API_KEY. - Deploy.
This project does not require a database or extra server configuration.