RecruitFlow
An AI recruitment platform that turns resumes into scores, summaries and hiring decisions.
A small company's recruiter can spend days reading resumes for one role. RecruitFlow reads them first: every application gets a score out of 100 and a written summary, so the recruiter starts with the strongest candidates.

The problem
Recruiters at small and medium companies post a job, receive dozens of PDF resumes and read each one by hand. Applicant tracking systems that score resumes exist, but they are priced for large companies.
What I built
Recruiters post a job and share a public apply link. Candidates upload a resume. RecruitFlow extracts the text, scores it against the job with Gemini on a fixed rubric, writes a four-paragraph summary, and shows the result in a page-flip resume viewer. Recruiters accept or reject, email candidates in bulk and schedule interviews.
I built it alone, from the database to the marketing site, including an admin panel for the platform owner with users, support tickets, upgrade requests and transactions.

What it does
Hiring
- Job posts with work mode, deadline, education, experience and job type
- A public apply link for every job
- Resume upload up to 10 MB in PDF, DOC or DOCX
- Candidate CRM, accept or reject, bulk email
AI
- ATS score out of 100 with a written summary
- AI job description generator
- AI shortlist of the top 5 candidates for each job
- A chat assistant that answers questions about the candidate pool
Workflow
- Interview calendar with conflict detection
- Bulk PDF export of all resumes for a job
- Real-time support chat
Plans
- Essential: free, 1 job and 5 CVs
- Pro: USD 6.99 or NPR 299 a month, 4 jobs and 30 CVs
- Enterprise: USD 9.99 or NPR 499 a month, 10 jobs and 200 CVs
- Prices shown in NPR for visitors in Nepal

How it's built
| Framework | Next.js 15 App Router, React 19, Tailwind CSS, Framer Motion |
|---|---|
| Backend | 30 API route handlers |
| Data | Supabase: PostgreSQL, Auth with Google OAuth, Storage and Realtime |
| AI | Google Gemini 2.5 Flash |
| Documents | pdfjs-dist for text extraction, pdf-lib for merging |
| Nodemailer over SMTP or Resend |
RecruitFlow is a Next.js 15 application with Supabase for the database, authentication, file storage and real-time support chat. It uses three Supabase clients: one in the browser, one on the server with the user's session, and an admin client that is only used inside server routes.
Middleware caches token verification for 60 seconds to cut round trips to the auth server, and splits routes into public, signed-in and admin groups.
Engineering highlights
A fair, explainable ATS score
Gemini scores each resume on five fixed factors: skills 35 points, experience 25, job title 20, education 10 and achievements 10. The prompt forbids bonus points for famous company names, the temperature is kept low for consistency, and the result is clamped between 0 and 100.
A fallback when the AI is down
If the Gemini call fails, a local rule-based engine scores the resume instead. It first checks that the file is a resume at all, by looking for section headings, an email address and date ranges, so a recruiter never sees a confident score for a random PDF.
Rate limits on everything that matters
Login, registration, one-time codes, password resets, application processing and the AI chat each have their own limit. One-time codes are generated with a secure random source and expire after two minutes.
Screens

Where it stands
RecruitFlow is complete as a product and its source code is public on GitHub. It is not hosted publicly at the moment, so the screens on this page come from a local run.
It shows how I use AI inside business software: a fixed rubric instead of a vague prompt, a fallback when the model fails, and limits that keep costs predictable.
Planning a product like RecruitFlow? I design, build and launch web apps for businesses in Nepal and abroad.