import os from pathlib import Path PROJECT_ROOT = Path(__file__).resolve().parents[1] os.environ["XDG_DATA_HOME"] = str(PROJECT_ROOT / ".local" / "share") from crewai import Crew, Process # pyrefly: ignore [missing-import] from src.tasks.tasks import ( cv_parsing_task, jd_analysis_task, company_research_task, gap_analysis_task, cv_optimization_task, outreach_writing_task ) # pyrefly: ignore [missing-import] from src.agents.agents import ( cv_parser_agent, jd_analyzer_agent, company_research_agent, gap_analyst_agent, cv_optimizer_agent, outreach_writer_agent ) def build_crew(cv_path: str, jd_source: str, company_name: str, city: str): cv_parser = cv_parser_agent() jd_analyzer = jd_analyzer_agent() company_researcher = company_research_agent() gap_analyst = gap_analyst_agent() cv_optimizer = cv_optimizer_agent() outreach_writer = outreach_writer_agent() agents = [ cv_parser, jd_analyzer, company_researcher, gap_analyst, cv_optimizer, outreach_writer ] # Create tasks with explicit context dependencies cv_task = cv_parsing_task(cv_path, cv_parser) jd_task = jd_analysis_task(jd_source, jd_analyzer) company_task = company_research_task(company_name, city, company_researcher) gap_task = gap_analysis_task(gap_analyst, cv_task=cv_task, jd_task=jd_task) optimization_task = cv_optimization_task( cv_optimizer, cv_task=cv_task, jd_task=jd_task, gap_task=gap_task, company_task=company_task ) outreach_task = outreach_writing_task( outreach_writer, cv_task=cv_task, jd_task=jd_task, gap_task=gap_task, company_task=company_task ) tasks = [ cv_task, jd_task, company_task, gap_task, optimization_task, outreach_task ] crew = Crew( agents=agents, tasks=tasks, process=Process.sequential, verbose=True, cache=False ) return crew