--- 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`