AI Recruitment Platform Built with Next.js and MongoDB
VoltOutreach is an end-to-end recruitment portal. Jobs, applications, interview scheduling and media live in one admin dashboard, and AI drafts the outreach that takes recruiters the most time.
By Wasif Rehman · · Web development
In short
- Split the candidate portal and the admin area with route groups from the start, and enforce the split in middleware.
- Recruitment data is document-shaped, so MongoDB with Mongoose fits jobs, applications and leads well.
- Point AI at the most repetitive task, outreach drafting, and keep an admin review before anything is sent.
- Hand scheduling to Calendly and file storage to Cloudinary so the app server does less.
Why recruitment is a pipeline problem
Recruitment is a pipeline. Jobs go up, candidates apply, someone reviews them, interviews get scheduled, and outreach never stops.
- Job posted
- Candidate applies
- Admin reviews
- Interview booked
- Outreach
VoltOutreach, which I led at AIDEVGEN, is an end-to-end portal that runs that whole pipeline. It adds AI assistance where the manual effort hurts most. This is the architecture.
| Layer | Tool |
|---|---|
| Framework | Next.js 16, React 19 and TypeScript |
| Database | MongoDB with Mongoose |
| AI outreach | The Anthropic SDK |
| Scheduling | An embedded Calendly flow (react-calendly) |
| CV and document uploads | Cloudinary |
| Auth | JWT sessions with jose, passwords hashed with bcryptjs |
Separating the candidate portal from the admin dashboard in Next.js
The first design decision was a hard separation between the candidate-facing portal and the admin area, using Next.js route groups.
| Area | Who uses it | What they do | Access |
|---|---|---|---|
| Public portal | Candidates | Browse jobs and apply | Open to everyone |
| Admin area | Admins | Manage listings, review applications and handle leads | Behind middleware-protected routes |
Keeping these concerns apart keeps both the code and the security model clean.
A MongoDB and Mongoose data model for recruitment
MongoDB with Mongoose backs the platform. There are models for:
- Jobs
- Supplemental job data
- Applications
- Leads
Recruitment data is naturally document-shaped. An application bundles a candidate, a role, answers and attachments, so a document store fits well.
I built the schema for flexibility, because every client wants slightly different fields on a job posting.
AI-assisted candidate outreach with the Anthropic SDK
The standout feature is AI-assisted outreach through the Anthropic SDK. Drafting personalised messages to candidates and clients is the most repetitive, time-consuming part of recruiting, so the platform drafts them for you.
- The AI drafts The Anthropic SDK writes a personalised message for a candidate or a client.
- An admin reviews Admins always review the draft before anything goes out.
- Then it is sent Nothing reaches a candidate or a client without that review.
I wrote more about where that human checkpoint belongs in When NOT to Let the AI Finish the Job.
Calendly interview scheduling and Cloudinary CV uploads
Two integrations take work off the app itself:
| Need | Tool | Why |
|---|---|---|
| Interview scheduling | An embedded Calendly flow (react-calendly) | Booking happens without leaving the app |
| CV and document uploads | Cloudinary | It offloads file storage and delivery from the application server and keeps media fast and reliable |
JWT sessions with jose and middleware-protected admin routes
Authentication uses JWT sessions implemented with jose, paired with bcryptjs for password hashing.
Sessions are validated in middleware. That is exactly where the split between the public portal and the admin area is enforced.
For a full account lifecycle with password reset, built on NextAuth v5 instead, see Production-Ready Auth with NextAuth v5 and MongoDB.
What building an AI recruitment platform taught me
VoltOutreach reinforced three things:
- Separate the portal and the admin area behind route groups from day one. It avoids a tangle later.
- Aim AI at one specific, painful, repeatable task, here outreach drafting, rather than sprinkling it everywhere.
- Bring jobs, applications, scheduling and media into one dashboard. That is what turns a pile of tools into a platform.
The VoltOutreach case study covers my role and the full feature list.
Frequently asked questions
What does VoltOutreach do?
It is an end-to-end recruitment portal. Candidates browse jobs and apply. Admins manage listings, review applications, handle leads, book interviews through Calendly and run AI-assisted outreach from one dashboard.
How is AI used in a recruitment platform?
In VoltOutreach, for outreach drafting. The Anthropic SDK drafts personalised messages to candidates and clients, which is the most repetitive part of recruiting, and admins always review a draft before anything goes out.
Why use MongoDB for a recruitment platform?
Recruitment data is naturally document-shaped. An application bundles a candidate, a role, answers and attachments, and job postings need flexible fields, so a document store with Mongoose models fits well.
How are admin routes protected in Next.js?
With JWT sessions built on jose and validated in middleware. The public portal and the admin area live in separate route groups, and a request for an admin route without a valid session never reaches the page.
Case study: VoltOutreach