An AI-powered multi-agent system that generates a complete job application package — deployed as a cloud-native application with Docker, OpenShift, Ansible, and GitHub Actions CI/CD.
Input a company name, job role, and your name — 4 AI agents collaborate to generate:
| Output | Description |
|---|---|
| 🔍 Company Research Report | Culture, values, requirements, recent news |
| 📄 Personalized Cover Letter | 250–350 words, tailored to the company |
| 🎯 Interview Prep | 5 likely questions with tips on how to answer |
| 📧 Formal Cold Email | Ready to send to the hiring manager on LinkedIn |
| Tool | Purpose |
|---|---|
| CrewAI | Multi-agent orchestration framework |
| Groq (LLaMA 3.3 70B) | LLM for agent reasoning and writing |
| Serper API | Real-time web search tool |
| LiteLLM | LLM provider interface |
| Streamlit | Interactive web UI |
| Python 3.11 | Core language |
| Tool | Purpose |
|---|---|
| Docker | Containerization |
| Docker Hub | Image registry |
| OpenShift | Enterprise Kubernetes platform |
| Ansible | Deployment automation |
| GitHub Actions | CI/CD pipeline |
job-research-agent/
├── src/
│ ├── __init__.py
│ ├── agents.py # 4 Agent definitions
│ └── tasks.py # 4 Task definitions
├── k8s/
│ ├── deployment.yaml # OpenShift deployment manifest
│ ├── service.yaml # Service manifest
│ └── route.yaml # Route manifest for public URL
├── ansible/
│ └── playbook.yml # Ansible deployment playbook
├── .github/
│ └── workflows/
│ └── deploy.yml # GitHub Actions CI/CD pipeline
├── app.py # Streamlit UI
├── Dockerfile # Container definition
├── requirements.txt # Python dependencies
├── .env # API keys (not pushed to GitHub)
├── .gitignore
└── README.md
User Input (Company + Role + Name)
↓
Researcher Agent → Searches web → Research Report
↓
Writer Agent → Reads research → Cover Letter
↓
Coach Agent → Reads research → 5 Interview Questions + Tips
↓
Emailer Agent → Reads research → Formal Cold Email
↓
All 4 outputs displayed in Streamlit tabs
git push → GitHub Actions triggers
↓
Docker build → Docker Hub push
↓
oc apply manifests → OpenShift deployment
↓
Live on OpenShift public URL
1. Clone the repository
git clone https://github.com/YashRM27/job-research-agent.git
cd job-research-agent2. Install dependencies
pip install -r requirements.txt3. Create a .env file
GROQ_API_KEY=your_groq_api_key_here
SERPER_API_KEY=your_serper_api_key_here4. Run the Streamlit app
streamlit run app.pydocker build -t job-research-agent .
docker run -p 8501:8501 --env-file .env job-research-agent# Login to OpenShift
oc login --token=YOUR_TOKEN --server=YOUR_SERVER
# Create secrets
oc create secret generic api-keys \
--from-literal=GROQ_API_KEY=your_key \
--from-literal=SERPER_API_KEY=your_key
# Apply manifests
oc apply -f k8s/deployment.yaml
oc apply -f k8s/service.yaml
oc apply -f k8s/route.yaml
# Check status
oc get pods
oc get routeansible-playbook ansible/playbook.ymlEvery git push to main automatically:
- Builds Docker image
- Pushes to Docker Hub
- Deploys to OpenShift
- Verifies deployment status
Required GitHub Secrets
DOCKERHUB_USERNAME
DOCKERHUB_TOKEN
OPENSHIFT_TOKEN
OPENSHIFT_SERVER
- Groq API (Free LLM): https://console.groq.com
- Serper API (Free web search): https://serper.dev
- RAG — upload resume PDF for personalized output
- Support multiple output formats (PDF, DOCX)
- Email sending integration
- Job fit score based on resume vs job description
- Fix CrewAI non-root permission conflict on OpenShift
- Add persistent volume for ChromaDB storage
- Horizontal pod autoscaling
- Multi-environment deployment (dev / staging / prod)