CandidateExplorer / README.md
ishaq101's picture
[NOTICKET] Add field criteria_id in scoring v2 endpoitn
fc8eb3c
metadata
title: Candidate Explorer
emoji: πŸ”
colorFrom: purple
colorTo: gray
sdk: docker
app_port: 7860

Schemas

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

POST /admin/users              βœ…  Create user
POST /admin/login              βœ…  Login, returns JWT Bearer token
GET  /admin/me                 βœ…  Get current authenticated user

Tenant

POST /admin/tenants            βœ…  Create tenant
GET  /admin/tenants/{name}     βœ…  Get tenant by name

File

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

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

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