verifies ranked Gmail suggestions render with visible reasons/confidence
verifies single-message import refreshes the same job’s correspondence view
verifies automatic linked-thread refresh shows a later Gmail reply without manual re-import
verifies manual search override is sent as queryOverride
Verification
frontend dependencies were installed with npm ci in job-tracker-ui
focused React test passed:
CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/correspondence-gmail-import.test.tsx
Verification Evidence
#
Command
Exit Code
Verdict
Duration
1
npm ci (job-tracker-ui)
0
✅ pass
not recorded
2
CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/correspondence-gmail-import.test.tsx
0
✅ pass
~2.8s
Diagnostics
Open a job with imported Gmail correspondence and inspect the Gmail tab chips: linked-thread count, last refresh summary, and Gmail connection lastSyncedAt show whether the workspace considers the thread live.
Watch network traffic for GET /gmail/job-candidates and POST /gmail/refresh-linked-threads to confirm the workspace distinguishes ranked suggestions from already-linked thread refresh.
Inspect rendered correspondence chips (Thread ..., From ..., To ...) to verify imported Gmail metadata survived the round trip from persistence to UI.
Read job-tracker-ui/src/correspondence-gmail-import.test.tsx for the durable automated proof of manual query override plus no-manual-reimport continuity.
Notes
The Gmail tab now treats the backend as the source of truth for ranking while keeping the manual search field as a fallback override, and it refreshes known linked threads once per loaded job/thread-set automatically to avoid re-import loops.