An end-to-end job discovery platform that leverages Cohere embeddings to match job seekers with suitable roles based on their profile, experience, skills, and preferences.
| Layer | Technology |
|---|---|
| Frontend | React.js + Tailwind CSS + Vite |
| Backend | Node.js + Express.js |
| Database | MongoDB (Mongoose ORM) |
| AI Engine | Cohere AI (v2 SDK) |
| Auth | JWT with HTTP-only cookies |
| Deployment | Not hosted currently |
cd server
npm installCreate a .env file in server/ with the following:
PORT=5000
MONGO_URI=mongodb://localhost:27017/ai_job
JWT_SECRET=your_jwt_secret
COHERE_API_KEY=your_cohere_api_key
FRONTEND_URL=http://localhost:5173Run the backend:
npm run devcd client
npm install
npm run devTailwind is configured via postcss.config.cjs and tailwind.config.js.
We use Cohere’s embed-english-v3.0 model to semantically match users to job descriptions using cosine similarity.
A user profile is formatted like this:
Skills: React, Node.js, AWS. Experience: 3 years. Preferences: Remote only.
This string is embedded and compared with all job embeddings. The top 3 results are returned as recommendations.
http://localhost:5000/api
| Method | Endpoint | Description |
|---|---|---|
| POST | /users/register |
Register a new user |
| POST | /users/login |
Login and receive JWT |
| POST | /users/logout |
Logout & clear cookie |
| GET | /users/validateToken |
Validate session via cookie |
| GET | /users/profile |
Get user profile (auth) |
| PUT | /users/profile |
Update user profile (auth) |
| Method | Endpoint | Description |
|---|---|---|
| GET | /jobs |
Fetch all jobs |
| POST | /jobs |
Create a job (admin use) |
| DELETE | /jobs/:id |
Delete a job |
| POST | /jobs/recommend |
AI-based job recommendations |
Sample Request Body for /jobs/recommend:
{
"name": "Atharva",
"experience": 2,
"skills": ["React", "Node.js"],
"preferences": "remote full stack"
}ai-job-match/
│
├── client/
│ ├── public/
│ ├── src/
│ │ ├── assets/
│ │ ├── components/
│ │ ├── context/
│ │ ├── pages/
│ │ ├── App.jsx
│ │ └── index.css
│
├── server/
│ ├── controllers/
│ ├── middleware/
│ ├── models/
│ ├── routes/
│ ├── utils/
│ ├── seed/
│ └── server.js
- Matching is synchronous for simplicity
- Cookie-based auth for frontend compatibility
- No resume uploads — relies on structured profile input
- Admin dashboard not included (manual job creation)
- No pagination — assumes small dataset
- May experience cold starts if deployed on free-tier hosts
-
✅ Public GitHub repository: AI_Job_Match
-
🚫 Not deployed
-
✅ Covers:
- Setup instructions
- AI logic
- API documentation
- Architecture
- Assumptions