Ashgen12's picture
Recruitment Copilot
14fdc5e verified
Raw
History Blame Contribute Delete
958 Bytes
from __future__ import annotations
from fastmcp import FastMCP
from services.search_service import QdrantSearchService
def register(mcp: FastMCP) -> None:
search_service = QdrantSearchService()
@mcp.tool()
def semantic_candidate_search(query: str, top_k: int = 5) -> dict:
"""Search candidates semantically from Qdrant and return GenUI-ready payloads."""
rows = search_service.semantic_search(query=query, top_k=top_k)
if not rows:
return {
"status": "no_results",
"message": "No semantic matches found. Ensure resumes are ingested and Qdrant is configured.",
"ui": {"summary": "No candidate results", "cards": []},
}
return {
"status": "success",
"count": len(rows),
"matches": rows,
"ui": search_service.build_genui_payload(query=query, rows=rows),
}