CandidateExplorer / README.md
ishaq101's picture
[NOTICKET] Add field criteria_id in scoring v2 endpoitn
fc8eb3c
---
title: Candidate Explorer
emoji: πŸ”
colorFrom: purple
colorTo: gray
sdk: docker
app_port: 7860
---
## Schemas
```plain
1. Build Schema
a. table: cv_users βœ…
- user_id
- username
- hashed_password
- email
- full_name
- role
- is_active
- tenant_id
- created_at
- date_modified
- notes
b. table: cv_tenant βœ…
- tenant_id
- tenant_name
- created_at
- date_modified
- notes
c. table: cv_file βœ…
- file_id
- file_type
- filename
- url
- is_extracted
- uploaded_at
- date_modified
d. table: cv_profile βœ…
- profile_id
- fullname
- gpa_edu_1
- univ_edu_1
- major_edu_1
- gpa_edu_2
- univ_edu_2
- major_edu_2
- gpa_edu_3
- univ_edu_3
- major_edu_3
- domicile
- yoe
- hardskills
- softskills
- certifications
- business_domain
- filename
- file_id
- created_at
e. table: cv_filter
- criteria_id
- gpa_edu_1
- gpa_edu_2
- gpa_edu_3
- univ_edu_1
- univ_edu_2
- univ_edu_3
- major_edu_1
- major_edu_2
- major_edu_3
- domicile
- yoe
- hardskills
- softskills
- certifications
- business_domain
- created_at
f. table: cv_weight βœ…
- weight_id
- gpa_edu_1
- gpa_edu_2
- gpa_edu_3
- univ_edu_1
- univ_edu_2
- univ_edu_3
- major_edu_1
- major_edu_2
- major_edu_3
- domicile
- yoe
- hardskills
- softskills
- certifications
- business_domain
- created_at
g. table: cv_matching βœ…
- matching_id
- profile_id
- criteria_id
- gpa_edu_1
- gpa_edu_2
- gpa_edu_3
- univ_edu_1
- univ_edu_2
- univ_edu_3
- major_edu_1
- major_edu_2
- major_edu_3
- domicile
- yoe
- hardskills
- softskills
- certifications
- business_domain
- created_at
g. table: profile_scores βœ…
- score_id
- matching_id
- score
- created_at
```
## List API
### User
```plain
POST /admin/users βœ… Create user
POST /admin/login βœ… Login, returns JWT Bearer token
GET /admin/me βœ… Get current authenticated user
```
### Tenant
```plain
POST /admin/tenants βœ… Create tenant
GET /admin/tenants/{name} βœ… Get tenant by name
```
### File
```plain
POST /file/upload βœ… Upload multiple PDF files
GET /file/user/{user_id} βœ… Get file metadata by user
DELETE /file/{filename} βœ… Soft-delete file (marks is_deleted=True)
GET /file/score_card βœ… Dashboard summary (total files, extracted profiles, %)
```
### Profile
```plain
POST /profile/extract_profile βœ… Extract structured profile from a CV PDF
GET /profile/{profile_id} βœ… Get extracted profile by ID
GET /profile/profiles/{criteria_id} βœ… Get profiles by criteria ID
```
### Agentic
```plain
POST /agentic/create_filter βœ… Create filter/criteria
GET /agentic/filter/{criteria_id} βœ… Get filter by ID
POST /agentic/create_weight βœ… Create weight config for scoring
POST /agentic/calculate_score ⚠️ DEPRECATED Old single scoring endpoint
POST /agentic/v2/calculate_score βœ… Bulk scoring (v2, recommended)
```
## How To
1. Init schema on DB
`uv run python -m externals.databases.pg_schema_up`
2. Drop schema on DB
`uv run python -m externals.databases.pg_schema_down`
Compile pyproject.toml to requirements.txt
`uv pip compile pyproject.toml -o requirements.txt`