| 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 |
| |
| from src.tasks.tasks import ( |
| cv_parsing_task, |
| jd_analysis_task, |
| company_research_task, |
| gap_analysis_task, |
| cv_optimization_task, |
| outreach_writing_task |
| ) |
| |
| 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 |
| ] |
|
|
| |
| 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 |
|
|