Commit Graph

87 Commits (80eb5b3bbc8be9f516dc3f75a07feff15b2b6ee8)

Author SHA1 Message Date
ahmed.mujtaba 3933ba55d6 pkt tiemzone no mateter the briowser
Deploy to S3 / deploy (push) Successful in 39s Details
2026-09-09 20:37:20 +05:00
ahmed.mujtaba 25220d237b Merge branch 'main' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into SQS_BROKER 2026-09-09 19:20:23 +05:00
ahmed.mujtaba 0e4902d486 offerws page 2026-09-09 19:19:05 +05:00
Talha Ahmed f63878fe19 Merge remote-tracking branch 'origin/main' into Talha
Deploy to S3 / deploy (push) Successful in 36s Details
# Conflicts:
#	backend/inbox/views.py
2026-09-09 16:13:13 +05:00
Talha Ahmed 06427a4f32 Run gpt-4o-mini in production and cut OpenAI spend without changing outputs
- .env.example documents the production model (gpt-4o-mini-2024-07-18) and a
  4000-token output cap; the model rejects caps above 16384 with a 400, which
  the old 32768 value triggered on every llm_call request.
- llm_setup: safe default cap and per-call token/cache usage logging.
- agent/prompt: job posts precede the resume so the stable block hits the
  prompt cache for every CV after the first in a sync run.
- inbox: On-Hold rescan pairs candidates with active jobs only; scores against
  closed roles were paid for and never shown.
- app: ruff formatting for the config/model edits from main, and an accurate
  comment on why gpt-4o-mini is admitted while the rest of gpt-4o is not.

Verified live on gpt-4o-mini: llm_call and the scorer both succeed, the
28-check scoring audit passes, ruff/mypy/pytest pass for app.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-09 15:58:07 +05:00
ahmed.mujtaba 3969d62a51 sumkmary check udpate 2026-09-09 15:52:46 +05:00
ahmed.mujtaba cd4743e953 global countires 2026-09-08 17:10:08 +05:00
ahmed.mujtaba 79098aefd5 RESCAN IMPLEMENTED 2026-09-08 15:25:43 +05:00
ahmed.mujtaba 86531c77db commitred with correct city name
CI / checks (push) Failing after 1m53s Details
CI / checks (pull_request) Failing after 1m55s Details
2026-09-07 19:59:28 +05:00
ahmed.mujtaba ad6f8ba121 s3 lionk done
CI / checks (push) Failing after 2m9s Details
CI / checks (pull_request) Failing after 2m4s Details
2026-09-07 19:32:49 +05:00
ahmed.mujtaba d00ebcf6f5 filter appliede
CI / checks (push) Failing after 1m57s Details
CI / checks (pull_request) Failing after 1m53s Details
2026-09-07 18:42:15 +05:00
ahmed.mujtaba ded1b9053d dashboiard sheet export
CI / checks (push) Failing after 1m55s Details
CI / checks (pull_request) Failing after 1m47s Details
2026-09-07 17:53:49 +05:00
ahmed.mujtaba 3dd716c3d3 added onhold tab that sorts the unmatched cvs 2026-09-07 17:32:20 +05:00
ahmed.mujtaba 7ceecdb6c7 reapplied logic correct
CI / checks (push) Failing after 2m41s Details
CI / checks (pull_request) Failing after 2m37s Details
2026-09-07 15:54:47 +05:00
ahmed.mujtaba 82686f0bdf cronjjob implementedd 2026-09-07 14:56:03 +05:00
Talha Ahmed 5b29e2b592 CV Bank: replace Talent Pool with a searchable, ranked bank of stored CVs
CI / checks (push) Failing after 3m12s Details
Deploy to S3 / checks (push) Failing after 2m24s Details
Deploy to S3 / deploy (push) Has been skipped Details
The bank used to be write-only: a CV uploaded with no job carried only its
full text, so nothing could search or rank it. Now the employment agent's
extraction (title, company, education, plus new skills and years_experience,
both clamped to what the resume actually states) is stored on the row, and
the bank is ranked against a job the moment that job opens.

- New CV Bank screen at /cvbank replaces Talent Pool; the inline bank card
  moves out of CV Import. One table, two populations: speculative uploads,
  and silver medalists (rejected applicants scoring >= CV_BANK_SILVER_FLOOR,
  read live from their application rather than copied).
- matching/ranking.py: the tier-1 keyword ranker moves out of
  talent/plugins.py so Find Talent and the bank share one implementation;
  talent/plugins.py re-exports it and its numbers are unchanged.
- Taskiq tasks in job.candidate.bank_tasks: backfill profiles for CVs
  banked before extraction existed, and rank the bank when a job opens so
  recruiters are told about matches above CV_BANK_SUGGEST_THRESHOLD.
  Retention (CV_BANK_RETENTION_MONTHS) is stamped on the row at upload; the
  sweep flags expired rows and never deletes.
- Migrations 029 (bank profile columns) and 030 (per-job bank matches).
- Routes: POST /candidate/cv-bank/score, GET /candidate/cv-bank/suggestions.
- README: The CV Bank, plus the retention and deletion policy.

Also in this change:
- Inbox, Sheet Forms: has_linkedin / has_resume filters, tri-valued so
  "no link" is a real filter and NULL rows are kept in it; tab badge counts
  now narrow with the list and the search box.
- Hiring-manager candidate rows carry the ATS score and band.
- Tests: analytics dashboard merge logic, employment extraction clamps,
  form-data filters, manager candidate serializer, CV Bank mapper.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 13:39:20 +05:00
ahmed.mujtaba 6b4ad6b0dd Implement application history retrieval for candidates and enhance reapplication tracking
- Added methods to retrieve application history by email across various sources (inbox, manual uploads, form data).
- Introduced new serializers for application history items and overall history.
- Updated candidate and inbox views to include application history in responses.
- Enhanced frontend components to display reapplication badges and previous application details.
- Adjusted API endpoints to support fetching application history based on email input.
2026-09-04 19:06:22 +05:00
ahmed.mujtaba 0558af52c4 . 2026-09-04 16:10:56 +05:00
Talha Ahmed 8540577531 Fix inbox loading stall
Deploy to S3 / deploy (push) Successful in 34s Details
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 19:59:26 +05:00
ahmed.mujtaba 1133517117 . 2026-09-03 16:03:42 +05:00
ahmed.mujtaba a33f4e18fc add pagination inhistory 2026-09-02 17:00:44 +05:00
ahmed.mujtaba b0d280ec86 Merge branch 'main' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into Add_ATS_Order_by 2026-09-02 13:45:29 +05:00
ahmed.mujtaba 8c5549a201 Add Progress bar 2026-09-02 13:33:11 +05:00
Talha Ahmed f9fd88c5aa Dashboard redesign: org-wide activity summary with applications-per-job
Backend: new GET /analytics/applications-per-job/fetch (analytics.view) counting
inbox + manual-upload applications per job on the same basis as the funnel, with
zero-application open reqs included. Per-job group-bys added to Inbox_Messages,
Manual_UPLOAD_CANDIDATE; JobPosts.list_open_reqs for the zero-fill.

Frontend: Dashboard rewritten as a filterable summary (Week/Month/Quarter/Year +
department) - My Tasks, Today's Schedule and Quick Actions removed; 8 KPI tiles
(Hires and Offers Sent now shown); Applications per Job hero row-list; pipeline
card refed from /analytics/funnel so it obeys filters; Offer Book, Needs
Attention and Recent Activity cards added. ChartCard and time ranges extracted
to shared modules used by both Dashboard and Analytics.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-01 22:23:38 +05:00
ahmed.mujtaba 42e590e71d . 2026-08-31 17:35:34 +05:00
ahmed.mujtaba 8380be0d8a recieved time implemented 2026-08-31 15:51:52 +05:00
ahmed.mujtaba 56f529afa1 frontend skip logic done 2026-08-31 12:54:24 +05:00
ahmed.mujtaba 31742c2c49 correct sort implemented 2026-08-31 12:42:00 +05:00
ahmed.mujtaba bb056456fc the pipeline and dashboard synced 2026-08-31 00:27:27 +05:00
ahmed.mujtaba 4b84ae4a30 recruiterhub activity improvement 2026-08-30 23:24:00 +05:00
ahmed.mujtaba e4c5ffec20 is_approved, and file_pat aded 2026-08-28 19:36:22 +05:00
ahmed.mujtaba b5d2b05a6d Hiring manager 2026-08-28 15:54:21 +05:00
ahmed.mujtaba 7e07df18ca s3 configured pending testing 2026-08-28 13:32:25 +05:00
ahmed.mujtaba d47e90b9ec . 2026-08-27 19:21:33 +05:00
ahmed.mujtaba 65c189a6db . 2026-08-25 20:11:02 +05:00
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