Features · Architecture · Quick Start · Usage · Structure · Comparison
Two autonomous LangGraph agents — one for research, one for job search. Both can email results.
- Research Agent — Tavily web search → draft report → AI critique → revision loop → email
- Job Search Agent — Tavily + SerpAPI job search → AI shortlist → cover letters → email
- Revision Loop — Research agent critiques its own draft and re-researches up to 2 times
- Dual Search — Job agent queries Tavily (web) + SerpAPI (Google Jobs) simultaneously
- Smart Filtering — Regex-based noise removal (aggregators, social media, salary pages)
- Email Delivery — Both agents send results via SMTP (Gmail)
flowchart LR
UI["Streamlit UI"]
UI --> R1["Research<br/>(Tavily)"]
R1 --> R2["Draft<br/>(Gemini 2.5 Flash)"]
R2 --> R3["Critique<br/>(Mistral)"]
R3 -->|"Revise"| R1
R3 -->|"Approved"| R4["Email"]
UI --> J1["Search<br/>(Tavily + SerpAPI)"]
J1 --> J2["Filter<br/>(Mistral)"]
J2 --> J3["Cover Letter<br/>(Mistral)"]
J3 --> J4["Email"]
| Component | Research Agent | Job Search Agent |
|---|---|---|
| Search | Tavily | Tavily + SerpAPI (Google Jobs) |
| Generator | Gemini 2.5 Flash | Mistral Small |
| Critic | Mistral Small | — |
| Loop | Up to 2 revisions (conditional) | Linear |
| Output | Markdown report + email | Shortlist + cover letters + email |
git clone https://github.com/kairav7220/deep-agent.git
cd deep-agent
pip install -r requirements.txtSet your API keys in .env:
TAVILY_API_KEY="tvly-..."
SERPAPI_KEY="..."
GOOGLE_API_KEY="AIza..."
MISTRAL_API_KEY="..."
EMAIL_ADDRESS="your@gmail.com"
EMAIL_PASSWORD="app-password"streamlit run app.pystreamlit run app.py # Launch UI
python research_agent.py "What is LangGraph?" # CLI mode
python job_agent.py # CLI mode| Feature | DeepAgent | Basic LangGraph Agent | Manual Research |
|---|---|---|---|
| Agents | 2 (research + job) | 1 | — |
| Search Sources | Tavily + SerpAPI | Single | Manual |
| Self-Critique Loop | ✅ Up to 2 revisions | ❌ | — |
| Email Reports | ✅ SMTP | ❌ | — |
| Cover Letters | ✅ AI-generated | ❌ | — |
| Smart Job Filtering | ✅ Regex + LLM | ❌ | — |
| UI | ✅ Streamlit | ❌ CLI only | — |
deep-agent/
├── app.py # Streamlit UI (research + job tabs)
├── research_agent.py # LangGraph research agent (4 nodes + revision loop)
├── job_agent.py # LangGraph job search agent (4 nodes)
├── requirements.txt # Python dependencies
├── CONTRIBUTING.md # Contribution guide
├── llms.txt # AI assistant context
├── .gitignore
└── LICENSE # MIT
MIT © kairav7220