A multi-agent pipeline that drafts a tailored job application response from a job description and your resume.
Given a job description and a resume (both as plain text files), applycrew runs them through five LLM agents in sequence and outputs a copy-paste-ready application response:
- JD agent — extracts key skills, required experience, technologies, and soft skills from the job description.
- Resume agent — extracts strongest accomplishments, relevant technical skills, experience, and quantified impact from the resume.
- Fit agent — compares the two analyses to find matches, gaps, the best positioning angle, and proof points to emphasize.
- Writer agent — drafts a concise, natural application response based on the fit analysis.
- Reviewer agent — polishes the draft using the original JD and resume as context, removing buzzwords and AI-sounding phrasing, and returns the final text.
git clone https://github.com/dachi-dev/applycrew.git
cd applycrew
python3 -m venv venv
source venv/bin/activate
pip install langgraph langchain-openai langchain-core python-dotenvCreate a .env file in the project root:
LLM_MODEL=llama-3.3-70b-versatile
LLM_BASE_URL=https://api.groq.com/openai/v1
GROQ_API_KEY=your_api_key_here
The pipeline uses ChatOpenAI pointed at any OpenAI-compatible endpoint. Defaults above use Groq (free tier). To use OpenAI, Together, OpenRouter, or another provider, change LLM_MODEL and LLM_BASE_URL and use the matching API key.
Replace the templates in:
data/job_description.txt— paste the full job descriptiondata/resume.txt— paste your resume
python3 main.pyThe final application response is printed to stdout.
- Python 3
- LangGraph — orchestrates the agent pipeline as a directed state graph.
- LangChain (
langchain-openai,langchain-core) — prompt templates and LLM client. - python-dotenv — loads environment variables from
.env. - OpenAI-compatible LLM backend — defaults to Groq's Llama 3.3 70B, but works with any OpenAI-compatible API.
applycrew/
├── agents/
│ ├── jd_agent.py
│ ├── resume_agent.py
│ ├── fit_agent.py
│ ├── writer_agent.py
│ └── reviewer_agent.py
├── data/
│ ├── job_description.txt
│ └── resume.txt
├── graph.py # LangGraph pipeline definition
├── main.py # Entry point
└── .env # Not committed