Commit Graph

52 Commits (cec3be73fb47df78aa34e97eda1e028c6dc80233)

Author SHA1 Message Date
ahmed.mujtaba a0ab618ac5 implemented semaphhore 2026-08-25 17:29:44 +05:00
ahmed.mujtaba a02b7aa8c3 RELIMIT 2026-08-25 17:01:46 +05:00
ahmed.mujtaba f1597792ed tests rtemoved 2026-08-24 20:40:08 +05:00
ahmed.mujtaba 29c0362517 Merge branch 'main' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into Implementing_limitListing 2026-08-24 20:39:31 +05:00
Talha Ahmed 9e39bc5762 Dashboard audit fixes, Find Talent rename, already-applied matching
Dashboard/chart audit (senior-analyst pass over the live app):
- Pipeline bars were all 0% while the doughnut showed candidates: the
  percentage base was the first stage count (PROCESS, empty). Bars are
  now each stage share of the active total, REJECTED is excluded
  (matching the Analytics card), and stages sort in pipeline order.
- KPI trend chips no longer show a green up-arrow beside an empty delta;
  for lower-is-better metrics (time to hire, cost per hire) the colour
  tracks goodness while the arrow tracks the data direction.
- Closed Jobs tile no longer adds hires to closed requisitions and no
  longer hardcodes an up arrow; Offers Accepted drops the hires-series
  sparkline that plotted the wrong metric.
- charts.js: integer-friendly Y ticks (no more 0,1,1,2,2), edge-hugging
  X labels (last month was clipped), and label thinning on packed axes.

Find Talent: nav item and page title renamed from Talent to match the
action button and to distinguish it from Talent Pool.

Already-applied matching (Find Talent x ATS):
- linkedin_utils.py: shared /in/<slug> extraction that survives PDF
  mangling (percent-escapes, no scheme, trailing punctuation, /pub/).
- inbox_messages.linkedin_slug + manual_upload_candidate.linkedin_slug
  (indexed; empty = scanned-none, NULL = unscanned) written as CVs are
  processed and lazily backfilled in bounded batches at fetch time.
- talent/matching.py annotates profile payloads with already_applied
  (source, status, job, same_job, applications); profile cards and the
  detail modal show a green Already-applied / amber In-ATS-other-job
  chip.

Verified live: seeded CV mention matched its sourced profile with zero
false positives across 50 real Apify profiles; 57 backend tests and the
frontend build + smoke suites pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 20:12:16 +05:00
ahmed.mujtaba b79009679c Merge branch 'main' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into Implementing_limitListing 2026-08-20 18:22:40 +05:00
ahmed.mujtaba 867fea495a m. 2026-08-20 18:22:33 +05:00
ahmed.mujtaba f1758ac9bd Add mailbox sync functionality and related API endpoints
- Introduced a new `MailboxSyncRun` model to manage mailbox synchronization jobs, allowing for tracking of sync status and results.
- Implemented API endpoints for starting mailbox sync and fetching sync status, enabling asynchronous processing of email synchronization.
- Updated the `Email` service to handle mailbox sync operations, including enqueueing tasks and managing sync results.
- Enhanced frontend components to initiate mailbox sync and display sync status, improving user experience and feedback during the sync process.
- Added necessary query keys and local storage management for tracking sync runs in the UI.

This commit enhances the application's email synchronization capabilities, providing a more robust and user-friendly experience for managing mailbox data.
2026-08-20 17:55:17 +05:00
ahmed.mujtaba ee2f0c8ef8 . 2026-08-19 18:46:24 +05:00
ahmed.mujtaba 5ca085a238 . 2026-08-18 12:05:42 +05:00
ahmed.mujtaba 64eae32259 . 2026-08-17 20:37:30 +05:00
ahmed.mujtaba 786c159ff6 candidatye page 2026-08-13 19:25:42 +05:00
ahmed.mujtaba 664b33b94b /ppelline completde 2026-08-13 18:34:52 +05:00
ahmed.mujtaba c1e44356e9 . 2026-08-13 18:21:35 +05:00
ahmed.mujtaba 0899342c34 listy of pipeline done 2026-08-13 17:25:50 +05:00
Talha Ahmed 5c0eaef86d ATS scores land on inbox tables + ats_results history; manual SQL auto-applies on boot
- inbox_messages.ats_score/ats_band written on every completed inbox score;
  inbox.ats_id always points at the current ats_results row
- ats_results now holds the supersede-chained history for BOTH inbox and
  upload scores (new candidate_id link, inbox_id nullable for uploads)
- migrations/manual/*.sql apply automatically at startup, tracked once per
  database in manual_migrations - developers just pull and boot
- 002_backfill_inbox_ats.sql backfills pre-existing scores
- Add Candidate modal: Matching-style role picker above the CV dropzone,
  and the CV is scored via /candidate/score after creation

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 20:44:46 +05:00
ahmed.mujtaba a49022b757 added finishe /candidate 2026-08-12 17:49:21 +05:00
ahmed.mujtaba 17279b567b Merge branch 'main' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into Dashboard_Wiring 2026-08-12 16:16:55 +05:00
ahmed.mujtaba 29ee228eaa Dashboard seems to work 2026-08-12 16:11:36 +05:00
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 6e1ecb6d72 Merge branch 'main' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into Dashboard_Wiring 2026-08-12 14:00:07 +05:00
ahmed.mujtaba 038d89ced1 update 2026-08-12 13:57:53 +05:00
ahmed.mujtaba 326842ebba backend manual uplaod 2026-08-11 20:34:02 +05:00
Talha Ahmed da61fe2a3a Auto-score inbox CVs against matched jobs - no manual upload needed
The decoded attachment is already the CV and the job post is already the JD, so
scoring now fires from the data we have:

- After the agent matches an inbox message, score_message_against_job runs
  inline in the match task - against the assigned job if one is set, else the
  top suggested job. Failures log and never fail the match.
- When a recruiter assigns a job post, the new inbox.score_message task is
  queued in the background so the request never waits on OpenAI.

Idempotent by (message, job): an already-completed score is never paid for
twice. Rows are attributed to the job post owner since background tasks have
no request user. CV Import and the profile Score-with-ATS button remain as
manual fallbacks.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 20:03:02 +05:00
ahmed.mujtaba 38249cc6f2 job_matching assignment by recruiter added 2026-08-11 19:01:24 +05:00
ahmed.mujtaba 17c99d24e4 model updated 2026-08-11 18:43:41 +05:00
ahmed.mujtaba c726bbacbc pedning testinf 2026-08-11 17:48:00 +05:00
ahmed.mujtaba e717dbf704 . 2026-08-11 16:42:55 +05:00
ahmed.mujtaba 3e87e1a0bc enumbs added 2026-08-11 14:01:19 +05:00
ahmed.mujtaba 54c39946d3 /talentpool integatrted 2026-08-11 13:43:21 +05:00
ahmed.mujtaba da3077c302 talet pool api done 2026-08-10 21:01:51 +05:00
ahmed.mujtaba 4d340fd6d5 agent coide simplifgication 2026-08-10 16:24:47 +05:00
ahmed.mujtaba 08068b2b18 Linking user to candidate to job 2026-08-10 16:19:29 +05:00
ahmed.mujtaba 36be406f92 WIRED WITH FRONTEND 2026-08-07 20:49:00 +05:00
ahmed.mujtaba 9f6926b1e1 PROCESSED ADN REJECTED TAB TOO with their own specific conditions 2026-08-07 20:35:27 +05:00
ahmed.mujtaba 4bd02cefb0 email response handled 2026-08-07 20:16:54 +05:00
ahmed.mujtaba 40e40a3864 isRead working 2026-08-07 19:58:53 +05:00
ahmed.mujtaba 3ae716a8c4 frontend all aplications 2026-08-07 19:17:16 +05:00
ahmed.mujtaba 52b76bb1cf added all aplicants 2026-08-07 19:03:23 +05:00
ahmed.mujtaba 8b4ebb1bb8 Background saving terminated 2026-08-07 18:26:37 +05:00
ahmed.mujtaba 588afd0a28 . 2026-08-06 20:21:48 +05:00
ahmed.mujtaba dcf0bf5d50 mapped Candidate CV with job_Post_id 2026-08-06 18:53:18 +05:00
ahmed.mujtaba cc92dc744f LLM Setup for Email 2026-08-06 16:29:17 +05:00
ahmed.mujtaba ef07694254 jwt token integrated 2026-08-04 14:33:07 +05:00
ahmed.mujtaba caab412f96 email tem work now need uses to create the system with rback 2026-08-03 21:29:32 +05:00
ahmed.mujtaba d48048bb7a filepath added 2026-08-03 21:15:43 +05:00
ahmed.mujtaba cd1693fd43 filename added 2026-08-03 21:00:26 +05:00
ahmed.mujtaba a8816afc08 .. 2026-08-03 20:44:35 +05:00
ahmed.mujtaba 04a6264bb0 . 2026-08-03 20:35:47 +05:00
ahmed.mujtaba a9f0b32eea pdf product converted 2026-08-03 19:55:01 +05:00