Commit Graph

178 Commits (e114aeb0cf8e4ec3a28abdeac3d27a8140527d7b)

Author SHA1 Message Date
ahmed.mujtaba e114aeb0cf add .env vars 2026-08-24 21:05:53 +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
ahmed.mujtaba 8c12872c6e Remove `.env.example` and update Docker configurations for environment management
- Deleted the `.env.example` file as it is no longer needed; all configurations are now centralized in `backend/.env`.
- Updated `docker-compose.yml` and `docker-compose.dev.yml` to reflect changes in environment variable handling, ensuring that the application reads from `backend/.env` exclusively.
- Adjusted the nginx configuration to improve API request handling and ensure proper proxying for frontend interactions.

These changes streamline the environment setup process and enhance the overall configuration management for local and production deployments.
2026-08-24 20:38:15 +05:00
Talha Ahmed f9eb9f1f24 Candidate hiring forms (Annexure A/E/J), full-page profile, UX audit fixes
Deploy to S3 / deploy (push) Successful in 37s Details
Backend: new candidate_forms domain (requisition, interview analysis,
cultural fit) with XOR inbox/manual keys, server-recomputed section
averages and combined summary, INTERVIEW-stage gate (409), history
events, INTERVIEWS_* permissions + 008 RBAC seed; offers table gains
the seven Annexure-J fields.

Frontend: Forms tab in the candidate profile (paper-exact labels from
/forms/definitions, rating tables, score summary tiles, completion
dots); profile converted to a full page at /candidate/:userId opened
from Candidates, Talent Pool and Pipeline; live Advance Stage now calls
PATCH /candidate/stage; workflow-ordered tabs; responsive pass verified
by headless-Edge screenshots at 375-2400px; Stars import crash fix in
Interviews; Matching tab strip wraps on phones.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 20:14:36 +05:00
ahmed.mujtaba 312c574896 added test folder
Deploy to S3 / deploy (push) Successful in 34s Details
2026-08-24 15:08:17 +05:00
ahmed.mujtaba 20b852d064 addn db_sweyup
Deploy to S3 / deploy (push) Successful in 35s Details
2026-08-24 15:07:11 +05:00
ahmed.mujtaba 73f96a5782 remove tests
Deploy to S3 / deploy (push) Successful in 33s Details
2026-08-24 15:05:50 +05:00
ahmed.mujtaba ea6f67786c . 2026-08-24 15:04:45 +05:00
talha.ahmed 6f54020f5c Merge pull request 'Dashboard audit fixes, Find Talent rename, already-applied matching' (#23) from Talha into main
Deploy to S3 / deploy (push) Successful in 31s Details
2026-08-21 15:12:26 +00: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
talha.ahmed 0009c40ac1 Merge pull request 'ATS scoring engine + backend/frontend integration' (#8) from Talha into main
Deploy to S3 / deploy (push) Successful in 34s Details
2026-08-21 12:25:55 +00:00
Talha Ahmed 600d438af3 Analytics: report library, NL ask, TTH baseline, source spend
Builds the four remaining analytics gaps from the architecture plan:

- Report library (REQ-ANL-03): new backend/reports module - saved reports
  as parameterisations of the governed analytics queries (never free-form
  SQL), rolling window_days filters, recorded runs, CSV export via
  Content-Disposition. Reports screen gains the library card with
  create/run/export/delete plus a results modal.
- Natural-language analytics (REQ-ANL-05, ADR-0010): POST /analytics/ask
  maps a question onto one whitelisted intent, runs the same governed
  query the dashboard uses, then narrates the numbers. Ask Analytics card
  on the Analytics screen; LLM outages 503 without touching the charts.
- Time-to-hire baseline (REQ-ANL-08): KPIs surface tth_baseline_* from
  org setting analytics.tth_baseline ({days,source}); not hardcoded
  per OPEN-12. analytics added to org-settings categories. Reports TTH
  card shows the delta when set.
- Source spend (REQ-ANL-09 cost side): hiring costs can be tagged with a
  source channel; source performance returns tagged spend and
  cost-per-application, including spend-only rows for channels with zero
  applications (wasted spend must stay visible). Log-cost modal and
  Source Performance table on Reports; untagged spend stays
  cost-per-hire only.

Verified live: migration autogenerated and applied (saved_reports,
report_runs, hiring_costs.source_channel_id), 50 backend tests, vite
build + smoke/token/theme suites, and a headless-browser drive of both
screens end to end.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 17:24:35 +05:00
ahmed.mujtaba a8b213be39 commited 2026-08-21 13:00:22 +05:00
Talha Ahmed 5330a2504e Merge branch 'Talha'
Deploy to S3 / deploy (push) Successful in 41s Details
# Conflicts:
#	.gitignore
#	backend/main.py
2026-08-20 22:29:09 +05:00
Talha Ahmed e1bd8526f3 Talent tab: LinkedIn sourcing per job via Apify
New backend/talent/ module (runs + profiles tables, RBAC talent.* seed,
frontend-polled run lifecycle) and frontend Talent screen: job + location
pickers, paid-search confirm, big loader, ranked profile cards with match
ring, profile detail modal, show-10-then-more, next-page re-search.

Sourcing quality: current-title facet + skills-only keyword query,
experience-range facet, thin-result broadening ladder, Utopia Brands/Deals
current employees excluded actor-side and server-side, graded 0-100
relevance score (title phrase over keyword stuffing).

Also narrows the overbroad **_**_**.py gitignore rule to alembic versions;
it was silently swallowing app/tests __init__.py files, the engine smoke
script, and the new talent plugin tests.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 22:27:18 +05:00
ahmed.mujtaba c536def585 Update Docker and API configurations for improved job fetching and API proxying
- Adjusted `VITE_API_BASE` in Dockerfile and docker-compose.yml to allow same-origin requests, enhancing compatibility with nginx proxy settings.
- Increased the `top` query limit in `app.py` to 500 to accommodate frontend requirements while ensuring consistency across job fetching in `Jobs.jsx` and `Managers.jsx`.
- Updated nginx configuration to properly proxy API requests, preventing incorrect responses for job-related endpoints.

These changes streamline the interaction between the frontend and backend, ensuring a smoother user experience when fetching job data.
2026-08-20 18:55:49 +05:00
ahmed.mujtaba 40edc092a3 top limit maitnained 2026-08-20 18:40:24 +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 ebc1cc7c3a Merge pull request 'Add_History' (#22) from Add_History into main
Deploy to S3 / deploy (push) Successful in 30s Details
Reviewed-on: #22
2026-08-20 13:02:01 +00:00
ahmed.mujtaba 1564707da4 Merge branch 'main' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into Add_History 2026-08-20 18:01:33 +05:00
ahmed.mujtaba db6204632b Merge branch 'Add_History' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into Add_History 2026-08-20 17:59:50 +05:00
ahmed.mujtaba a9da4c2b81 updated db_seetup 2026-08-20 17:59:48 +05:00
ahmed.mujtaba 64b7c9dde7 Merge pull request 'Add mailbox sync functionality and related API endpoints' (#21) from Add_History into main
Deploy to S3 / deploy (push) Successful in 31s Details
Reviewed-on: #21
2026-08-20 12:56:04 +00:00
ahmed.mujtaba 43189a11ae Merge branch 'main' into Add_History 2026-08-20 12:55:57 +00: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 2bbdc7b7c4 dbsetup
Deploy to S3 / deploy (push) Successful in 34s Details
2026-08-20 17:32:18 +05:00
ahmed.mujtaba eca848b9d2 Merge pull request 'Implement candidate history tracking and enhance email URL configuration' (#20) from Add_History into main
Deploy to S3 / deploy (push) Successful in 33s Details
Reviewed-on: #20
2026-08-20 12:23:38 +00:00
ahmed.mujtaba b9bff60e27 Merge branch 'main' into Add_History 2026-08-20 12:23:28 +00:00
ahmed.mujtaba c7fc2fed10 Implement candidate history tracking and enhance email URL configuration
- Added a new `CandidateHistory` model to maintain an append-only audit log for candidate actions.
- Introduced `HistoryRecorder` functionality to log significant events across various modules, including interviews, feedback, and notes.
- Updated existing methods to include `current_user` for tracking who performed actions.
- Enhanced the `EMAIL_URL` configuration in `docker-compose.yml` to allow for environment variable overrides.
- Updated frontend components to support fetching and displaying candidate history.

This commit improves the application's ability to track changes and actions related to candidates, enhancing accountability and transparency.
2026-08-20 17:22:22 +05:00
ahmed.mujtaba 868f14b10d Merge pull request 'Add_History' (#19) from Add_History into main
Deploy to S3 / deploy (push) Successful in 40s Details
Reviewed-on: #19
2026-08-20 11:44:28 +00:00
ahmed.mujtaba d6d929faf6 Merge branch 'main' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into Add_History 2026-08-20 16:42:48 +05:00
ahmed.mujtaba cd35af8161 Enhance interview and job functionalities
- Updated the interview model to include `graph_event_id` and `web_link` for calendar integration.
- Added methods for setting calendar events and retrieving job titles associated with interviews.
- Modified serializers to include new fields in the interview response.
- Enhanced the job post model to include applicant counts.
- Updated frontend components to handle new fields and improve user experience with calendar event management.
- Introduced image upload functionality in job forms with validation for file types and sizes.
- Improved dashboard and calendar UI for better data presentation.

This commit streamlines interview scheduling and job management processes, enhancing overall application functionality.
2026-08-20 16:41:21 +05:00
Talha Ahmed 202d05c4f9 Real Excel export for the Jobs list
- GET /jobs/export (jobs.export): styled .xlsx via openpyxl — branded
  banner, dark-green frozen header with auto-filter, zebra rows, color-
  coded status, bulleted requirements/nice-to-have, date formatting.
  Honors the same filters as /jobs/fetch.
- Export button on the Jobs screen now downloads the file through the
  authenticated downloadFile helper, carrying the active UI filters,
  with an Exporting... busy state (was a fake success toast).
- openpyxl pinned in backend requirements.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-19 20:10:42 +05:00
Talha Ahmed 9eb1a5f311 Rename assist preview button from Redo to Regenerate
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-19 20:02:13 +05:00
Talha Ahmed 878d1e3776 Add AI sparkles icon to the Create Job button
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-19 19:56:33 +05:00
ahmed.mujtaba 07c51e7a90 Merge pull request 'UI_CHANGES' (#18) from UI_CHANGES into main
Deploy to S3 / deploy (push) Successful in 33s Details
Reviewed-on: #18
2026-08-19 14:40:35 +00:00
ahmed.mujtaba 6c506cd8f9 Merge branch 'UI_CHANGES' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into UI_CHANGES 2026-08-19 19:38:58 +05:00
ahmed.mujtaba 48e467cf27 Merge branch 'main' into UI_CHANGES 2026-08-19 14:37:43 +00:00
ahmed.mujtaba 1c1a774dc8 Merge branch 'main' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into UI_CHANGES 2026-08-19 19:34:57 +05:00
ahmed.mujtaba 039a37747a theme updated 2026-08-19 19:34:16 +05:00
ahmed.mujtaba 8e95adb320 mark as read and unread woth correct position 2026-08-19 19:30:02 +05:00
ahmed.mujtaba 63a0fbf857 horizontal expansion 2026-08-19 19:12:42 +05:00
ahmed.mujtaba 24f3c5df53 mark correc t 2026-08-19 19:07:53 +05:00
ahmed.mujtaba 71d9803db2 Assing corrected 2026-08-19 18:52:48 +05:00
Talha Ahmed 84f2918e43 AI field assist on job forms + channel-free internal job creation
Deploy to S3 / deploy (push) Successful in 33s Details
- New POST /job/assist-field (job_board.create OR jobs.edit): per-field
  AI fix/suggest via backend/job_assist package on the shared llm_call.
  Suggest is gated on title + experience anchors; decisive typo repair;
  provider failures return a generic 503.
- AiFieldAssist component: sparkle button per field with fix/suggest,
  loading, preview-before-apply, abort on close; wired into JobForm and
  EditJobForm with per-field suggest hints.
- Create Job no longer requires a Buffer channel: without channel_id or
  platform the backend saves an internal-only requisition (platform
  internal) and never calls Buffer; publishing stays on the Job Board.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-19 18:51:56 +05:00
ahmed.mujtaba ee2f0c8ef8 . 2026-08-19 18:46:24 +05:00
ahmed.mujtaba c106aad567 ui cahnges 2026-08-19 18:14:26 +05:00
yaseen.zafar 32af1a3d37 added workflow fix
Deploy to S3 / deploy (push) Successful in 32s Details
2026-08-19 17:00:15 +05:00