4 specialized agents · Web search · Confidence scoring · Structured JSON + Markdown reports
| Capability | Implementation |
|---|---|
| Multi-agent orchestration | 4-agent LangGraph workflow (Search → Summarize → Critic → Report) |
| Factual reliability | Critic agent cross-checks sources, flags contradictions, scores claim confidence |
| Production API | FastAPI endpoint with structured JSON outputs for downstream apps |
| Interactive demo | Streamlit UI with live agent progress, tabs, and report download |
| Cost-efficient stack | Groq free tier + DuckDuckGo search (no paid search API required) |
Each agent is a LangGraph node sharing typed state. The pipeline runs sequentially: retrieve sources, extract facts, validate claims, then compile a markdown report.
| Agent | Role | Output |
|---|---|---|
| Search | Queries DuckDuckGo, fetches page content | Top 5 URLs + text snippets |
| Summarizer | Extracts key facts from each source | Structured per-source summaries |
| Critic | Cross-checks claims across sources | Contradictions + confidence assessments |
| Report | Synthesizes verified material | Final markdown research report |
git clone https://github.com/AnvitDevadiga/research-assistant.git
cd research-assistant
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtcp .env.example .env
# Add GROQ_API_KEY from https://console.groq.com (free tier)streamlit run streamlit_app.pyOpen http://localhost:8501 — enter a query, watch the 4-agent pipeline progress, and explore results in tabs (Report · Sources · Validation · Raw JSON).
uvicorn app.api:app --reloadcurl -X POST http://localhost:8000/research \
-H "Content-Type: application/json" \
-d '{"query": "latest trends in AI agents"}'POST /research
Request:
{
"query": "your research question here"
}Response:
{
"query": "latest trends in AI agents",
"report": "## Overview\n...",
"overview": "Short summary extracted from the report",
"key_findings": ["Finding 1", "Finding 2"],
"contradictions": ["Source A says X; Source B says Y"],
"assessments": [
{
"claim": "LangGraph adoption grew in 2026",
"confidence": "high",
"notes": "Supported by multiple sources"
}
],
"sources": [
{
"url": "https://example.com",
"title": "Example Article",
"summary": "Brief summary of the source"
}
],
"confidence": "HIGH",
"source_count": 5,
"errors": [],
"current_agent": "report"
}Interactive docs: http://localhost:8000/docs
Multi-AgentResearchAssistant/
├── app/
│ ├── agents/
│ │ ├── search_agent.py # DuckDuckGo search + content fetch
│ │ ├── summarizer_agent.py # LLM-powered summarization
│ │ ├── critic_agent.py # Contradiction detection + confidence
│ │ └── report_agent.py # Final report compilation
│ ├── graph.py # LangGraph state machine
│ ├── api.py # FastAPI REST endpoints
│ ├── structured_output.py # Structured JSON from pipeline state
│ ├── llm.py # Groq LLM configuration
│ └── state.py # Shared agent state schema
├── streamlit_app.py # Interactive demo UI
├── requirements.txt
├── Procfile # Render.com deployment
└── .env.example
Deployed API: research-assistant-k824.onrender.com
Free tier may sleep after inactivity. First request can take ~30s to wake up.
- Agentic AI: Multi-step LangGraph workflows with typed shared state
- LLM engineering: Structured JSON extraction, fallbacks, prompt design per agent role
- Backend: FastAPI REST API with Pydantic models and CORS
- Frontend: Streamlit dashboard with live progress and export
- DevOps: Render deployment via Procfile
Built by Anvit Devadiga