Commit Graph

7 Commits (8ada794b29eb9d19868507debdcf51bee5e2837e)

Author SHA1 Message Date
Talha Ahmed 8ada794b29 Merge origin/main (PR #10: manual candidate upload) into Talha
Conflict resolutions:
- backend/job/app.py: dropped duplicate pydantic import (already present below)
- backend/job/candidate/views.py: union of both sides — kept Talha's
  _recommendation/_scores_by_message helpers alongside main's manual-upload
  create_candidate, merged import lists and module-level config
- frontend/src/lib/apiClient.js: both sides made the same FormData fix;
  kept main's version that reuses the shared multipart const
- frontend/src/screens/Candidates.jsx: kept Talha's live-data screen and
  ported main's AddCandidate modal onto it — server POST via
  candidatesApi.createManual with live job posts, seed-shaped buildRow
  replaced by a candidates query invalidation; seed-only BulkAssign dropped

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 16:08:42 +05:00
ahmed.mujtaba 326842ebba backend manual uplaod 2026-08-11 20:34:02 +05:00
Talha Ahmed eb95d7a2c0 Merge origin/main (PR #9: interviews, notes, activity, feedback + job matching) into Talha
Union resolution, same policy as the previous merge — both feature sets kept:

- app.py: scoring routes kept; main's richer GET /job/fetch (search/top/skip/ids)
  adopted, with the dual JOB_BOARD_VIEW-or-CANDIDATES_VIEW permission restored so
  recruiters with only candidate rights keep the CV Import job picker.
- candidate/models.py: Candidates (scoring) coexists with main's new Interviews,
  Notes, Activity, Feedback models.
- candidate/serializers.py: serialize_candidate kept alongside main's
  detail-mode serialize_candidate_profile.
- CandidateProfile.jsx: main's rich tabbed profile (interviews/notes/feedback/
  activity) is now THE CandidateProfile, used by TalentPool; the scored-CV modal
  moved to ScoredCandidateProfile.jsx, used by Candidates.jsx. The two payload
  shapes share almost no fields, hence two components.

Backend imports verified; frontend builds clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 19:10:45 +05:00
ahmed.mujtaba c726bbacbc pedning testinf 2026-08-11 17:48:00 +05:00
Talha Ahmed a68d4bc2f6 Integrate bulk-ats scoring into backend: candidates table + scoring routes
Embeds the tested bulk-ats engine (pip install -e ., app.services.*) rather
than duplicating it. New Candidates table (auto-migrated) persists one row per
CV per job, deduped on (job_id, content_sha256) so re-scores update in place.
CandidateScoring service extracts (pypdf off-loop), despaces, scores with
bounded concurrency + cache priming via llm_setup's shared client, and
isolates per-file failures as failed rows. Routes: /candidate/score (uploads),
/candidate/score_inbox (decoded attachments), /candidate/fetch,
/candidate/fetch_by_id. Complements the agent inbox-match flow: it routes,
this scores.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 21:44:04 +05:00
ahmed.mujtaba cc92dc744f LLM Setup for Email 2026-08-06 16:29:17 +05:00
ahmed.mujtaba cc6c458df2 File/CV TEXT Extraction 2026-08-06 13:38:53 +05:00