Developed in collaboration with Trondheim Kommune.
Currently, two official plugins are:
- Features
- Tech Stack
- Project Structure
- Installation and Setup
- Database
- Endpoints
- AI models
- Security Considerations
- Testing
- Collaborators
- Upload and store candidate CVs (PDF format)
- Store CVs securely in PostgreSQL (BYTEA)
- Extract and process CV content
- AI-based evaluation against job descriptions
- Candidate overview dashboard
- REST API for candidate management
- File size and type validation
- Error handling and loading states in UI
- React (Vite)
- TypeScript
- Tailwind CSS
- shadcn/ui
- Node.js
- Express
- TypeScript
- Multer (file upload handling)
- PostgreSQL
- Gemeni or
- NorLLM
- Google Cloud Platform
CV-SCREENING-TOOL/
├── api/
├── backend/
│ ├── node_modules/
│ ├── src/
│ │ ├── assets/
│ │ ├── config/
│ │ ├── controllers/
│ │ ├── db/
│ │ ├── middleware/
│ │ ├── routes/
│ │ ├── types/
│ │ ├── app.ts
│ │ └── server.ts
│ ├── venv/
│ └── .env
│
├── docs/
│
├── frontend/
│ ├── node_modules/
│ ├── public/
│ ├── src/
│ │ ├── api/
│ │ ├── assets/
│ │ ├── components/
│ │ ├── hooks/
│ │ ├── lib/
│ │ ├── pages/
│ │ ├── types/
│ │ ├── utils/
│ │ └── main.tsx
│ └── index.html
git clone https://github.com/your-username/cv-screening-tool.git
cd cv-screening-toolcd backend
npm installIn the backend folder add a file called .env with the info
DB_HOST="localhost"
DB_PORT="5432"
DB_USER="cv_app_user"
DB_PASSWORD="your_password"
DB_NAME="cv_database"
FRONTEND_HOSTED_LINK="http://localhost:5173"
npm run devSee the link: http://localhost:3000
In another terminal run:
cd frontend
npm install
npm run devThis should open our application on: http://localhost:5173
Our database is PostgreSQL, follow their guide to download the database. Then run the sql scripts in the /assets folder in backend. This configures the tables correctly.
For more installation documents on the database see the database.md file
| Description | Endpoint | Body |
|---|---|---|
| Get all candidates | GET /api/candidates | |
| Get candidate by ID | GET /api/candidates/:id | |
| Create candidate | POST /api/candidates | Content-Type: application/json { "name": "John Doe", "email": "john@examplecom"} |
| Upload CV | POST /api/candidates/:id/cv | Content-Type: multipart/form-data FormData: cv: |
- File upload size limit (10MB)
- Only PDF file types accepted
- Environment variables for sensitive keys
- CORS configuration on backend
- No production credentials committed to repository
- Designed for test data during development
Not yet implemented unittests and E2E tests.
- Helene Selvig
- Marius Brun
- Markus Watle
- Mohammad Kazem Khajeh
- Marius Fornes
- Baris Batur
- Ingvild Kirkaune Sandven