Search indexed candidates. Results always come from the live API.
Attempts real Gmail draft. Falls back to log-only if Gmail is unavailable.
Live data from candidate_pipeline table. Approvals update status immediately.
.txt files are fully parsed. PDF/DOCX formats receive PyMuPDF / docx parsing with fallback warning.