using CvMatcher.Models.Requests; using CvMatcher.Models.Responses; namespace Api.Services.Contracts; /// /// Orchestrates CV indexing, job matching, and job discovery operations. /// public interface ICvMatcherService { /// /// Indexes a CV PDF into the RAG system and returns document metadata. /// Returns cached metadata without re-indexing when the same text hash already exists. /// /// Uploaded CV PDF file. /// Cancellation token. /// Upload response with document ID, hash, and indexing statistics. Task UploadCvAsync(IFormFile file, CancellationToken ct); /// /// Scores a CV against a specific job posting URL or pasted description using the LLM. /// Caches the result so repeat requests for the same (CV, job, language) triple are served instantly. /// /// Match request containing CV document ID, job URL or description, and language preference. /// Cancellation token. /// Structured match response with score, summary, strengths, gaps, and recommendations. Task MatchJobAsync(MatchJobRequest request, CancellationToken ct); /// /// Searches the RAG index for job documents most similar to the given CV and scores the top candidates. /// /// Request containing the CV document ID and optional result count limit. /// Cancellation token. /// Response with the CV document ID and a list of ranked match results. Task FindJobsAsync(FindJobsRequest request, CancellationToken ct); }