Tailor your resume to any job in 10 seconds. Open-source, fork-it-and-ship template.
Paste a job description + your resume → get a tailored, ATS-friendly resume + a custom cover letter back, streamed live. One API key. No database. No auth. Pure AI SDK + Next.js + Tailwind.
git clone https://github.com/dabhiram13/applyfst.git
cd applyfst
cp .env.example .env.local # add your AI_GATEWAY_API_KEY
npm install
npm run devOpen http://localhost:3000.
That's it. One env var, no database, no migrations, no Supabase setup.
Grab a free AI_GATEWAY_API_KEY from vercel.com/ai-gateway — it routes to OpenAI, Anthropic, Google, Mistral, and dozens of other providers through one key.
Default model is openai/gpt-4o-mini. To swap, edit one line in app/api/tailor/route.ts:
const result = streamText({
model: "anthropic/claude-haiku-4-5", // or google/gemini-2.5-flash, etc.
...
});Full provider list: vercel.com/ai-gateway/docs.
One-click to Vercel:
- Next.js 16 (App Router)
- Tailwind CSS v4
- shadcn/ui primitives
- AI SDK v6 + Vercel AI Gateway
- Zod for input validation
- TypeScript
app/
page.tsx landing page
tailor/page.tsx the demo flow (client component, streams output)
api/tailor/route.ts the AI route (server, streamText + zod validation)
layout.tsx root layout
globals.css Tailwind v4 + design tokens (lime + charcoal)
components/ui/ shadcn primitives (button, card, input, textarea, etc.)
lib/utils.ts cn() helper
- Add file upload for PDF resumes (use
pdf-parseserver-side) - Add persistence with Supabase / Neon for application history
- Add auth with Clerk or NextAuth so users can save their resumes
- Add interview prep: same prompt structure, different system prompt
- Add multi-model comparison: stream from 2-3 models side-by-side and let users pick
- Add scoring: ask the model to also output a fit score (0-100) per resume bullet
MIT. Fork it. Ship your own thing.
