Dashboard audit fixes, Find Talent rename, already-applied matching #23

Merged
talha.ahmed merged 1 commits from Talha into main 2026-08-21 15:12:27 +00:00

Three work streams, all verified in the running app:

  • Dashboard/chart audit: pipeline bars no longer read 0% while the doughnut shows candidates (share-of-active-total base, REJECTED excluded, pipeline-order stages); KPI chips drop fake green arrows on empty deltas and decouple arrow direction from goodness on lower-is-better metrics; Closed Jobs stops adding hires; chart lib gets integer Y ticks, unclipped edge labels, and label thinning.
  • Find Talent rename: nav item and page title now match the action button.
  • Already-applied matching: sourced LinkedIn profiles are flagged when a CV in the ATS carries the same /in/slug link. Shared extraction in linkedin_utils.py, persisted+lazily-backfilled linkedin_slug columns on both application tables, annotation in talent/matching.py, and a green/amber chip on profile cards and the detail modal. Zero false positives across 50 real sourced profiles.

57 backend tests and the frontend build + smoke suites pass.

?? Generated with Claude Code

Three work streams, all verified in the running app: - **Dashboard/chart audit**: pipeline bars no longer read 0% while the doughnut shows candidates (share-of-active-total base, REJECTED excluded, pipeline-order stages); KPI chips drop fake green arrows on empty deltas and decouple arrow direction from goodness on lower-is-better metrics; Closed Jobs stops adding hires; chart lib gets integer Y ticks, unclipped edge labels, and label thinning. - **Find Talent rename**: nav item and page title now match the action button. - **Already-applied matching**: sourced LinkedIn profiles are flagged when a CV in the ATS carries the same /in/slug link. Shared extraction in linkedin_utils.py, persisted+lazily-backfilled linkedin_slug columns on both application tables, annotation in talent/matching.py, and a green/amber chip on profile cards and the detail modal. Zero false positives across 50 real sourced profiles. 57 backend tests and the frontend build + smoke suites pass. ?? Generated with [Claude Code](https://claude.com/claude-code)
talha.ahmed added 1 commit 2026-08-21 15:12:25 +00:00
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>
talha.ahmed merged commit 6f54020f5c into main 2026-08-21 15:12:27 +00:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: utopia-ai/HR-ATS-Portal#23
There is no content yet.