
Deep Research Agent
- 237 installs
- 38 repo stars
- Updated January 5, 2026
- qodex-ai/ai-agent-skills
Deploy a multi-step research agent to synthesize markets, technologies, regulations, or competitors with cited sources and structured memos.
About
Deep-research-agent runs structured investigation workflows: decompose questions, query diverse sources, cross-check claims, produce cited summaries and decision memos, and flag uncertainties so idea-stage teams ground product bets in verifiable external intelligence rather than shallow search snippets.
- Multi-hop source gathering
- Citation-backed synthesis memos
- Topic decomposition and sub-queries
- Contradiction and confidence scoring
- Exportable research briefs
Deep Research Agent by the numbers
- 237 all-time installs (skills.sh)
- +3 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #2,640 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/qodex-ai/ai-agent-skills --skill deep-research-agentAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 237 |
|---|---|
| repo stars | ★ 38 |
| Last updated | January 5, 2026 |
| Repository | qodex-ai/ai-agent-skills ↗ |
What it does
Deploy a multi-step research agent to synthesize markets, technologies, regulations, or competitors with cited sources and structured memos.
Files
Deep Research Agent
Build intelligent autonomous research agents that systematically investigate topics, evaluate sources, synthesize findings, and produce comprehensive reports.
Research Workflow
Stage 1: Research Planning
See examples/research_planner.py for ResearchPlanner:
- Define research questions
- Identify key research areas
- Plan information sources and evaluation criteria
- Create research timeline
Stage 2: Source Gathering
Gather sources from multiple channels:
- Academic databases (Google Scholar, PubMed, JSTOR)
- News sources and publications
- Industry reports and whitepapers
- Web and social media searches
- Expert interviews
Stage 3: Source Evaluation
See examples/source_evaluator.py for SourceEvaluator:
- Evaluate author expertise
- Assess publisher credibility
- Check information recency
- Identify potential biases
Stage 4: Information Extraction
Extract structured data from sources:
- Key findings and main points
- Statistics and quantitative data
- Expert opinions and perspectives
- Emerging trends
- Research gaps
Stage 5: Synthesis & Analysis
See examples/research_synthesizer.py for ResearchSynthesizer:
- Identify main conclusions
- Organize supporting evidence
- Identify conflicting viewpoints
- Detect research gaps
- Suggest future research directions
Stage 6: Report Generation
See examples/research_report_generator.py for ResearchReportGenerator:
- Generate executive summaries
- Format findings with evidence
- Present conflicting views
- Identify gaps and opportunities
- Create comprehensive reports with citations
Research Agent Implementation
Build a comprehensive research agent by: 1. Creating research plans with ResearchPlanner 2. Gathering sources from multiple channels 3. Evaluating sources with SourceEvaluator 4. Extracting structured information 5. Synthesizing findings with ResearchSynthesizer 6. Generating reports with ResearchReportGenerator
Specialized Research Types
Market Research
Build market research capabilities:
- Estimate market size and growth rates
- Identify key competitors and market players
- Analyze market segments and entry barriers
- Identify opportunities and threats
- Track industry trends
Competitive Intelligence
Build competitive intelligence analysis:
- Identify direct and indirect competitors
- Analyze competitor products and pricing
- Estimate market share and positioning
- Assess strengths and weaknesses
- Track competitive strategies and moves
Literature Review
Build literature review automation:
- Search academic databases systematically
- Extract paper metadata and abstracts
- Analyze contributions and methodologies
- Identify key themes and connections
- Generate literature review synthesis
Best Practices
Research Quality
- ✓ Use multiple reliable sources
- ✓ Cross-reference findings
- ✓ Evaluate source credibility
- ✓ Identify and acknowledge biases
- ✓ Document all sources
Depth & Scope
- ✓ Define clear research questions
- ✓ Set appropriate scope
- ✓ Balance breadth and depth
- ✓ Identify research gaps
- ✓ Suggest future directions
Synthesis & Analysis
- ✓ Organize findings logically
- ✓ Present supporting evidence
- ✓ Address conflicting views
- ✓ Draw evidence-based conclusions
- ✓ Avoid unsupported claims
Tools & Technologies
Academic Search
- Google Scholar
- PubMed
- JSTOR
- ArXiv
- PapersWithCode
News & Web Search
- NewsAPI
- Bing News
- Google News
- RSS Feeds
- Social Media APIs
Data Analysis
- Pandas
- NumPy
- scikit-learn
- Statistical tools
Getting Started
1. Define research question 2. Create research plan 3. Gather sources 4. Evaluate credibility 5. Extract key information 6. Identify patterns 7. Synthesize findings 8. Generate comprehensive report
"""
Research Planning Module
Handles research planning and methodology design.
"""
from typing import Dict, List
class ResearchPlanner:
"""Plans and structures research initiatives."""
def create_research_plan(self, topic: str, scope: str) -> Dict:
"""
Create a structured research plan.
Args:
topic: Research topic
scope: Research scope (quick, comprehensive, etc.)
Returns:
Dictionary with research plan
"""
plan = {
"research_question": self._generate_research_question(topic),
"key_areas": self._identify_key_areas(topic),
"information_sources": [
"academic databases",
"news sources",
"industry reports",
"expert interviews"
],
"evaluation_criteria": {
"relevance": "Does it answer the research question?",
"credibility": "Is the source reliable?",
"recency": "Is the information current?",
"bias": "Are there apparent biases?"
},
"timeline": self._create_timeline(scope)
}
return plan
def _generate_research_question(self, topic: str) -> str:
"""Generate focused research question."""
return f"What are the key aspects and implications of {topic}?"
def _identify_key_areas(self, topic: str) -> List[str]:
"""Identify key research areas."""
return [f"Introduction to {topic}", "Key factors", "Industry trends", "Future outlook"]
def _create_timeline(self, scope: str) -> Dict:
"""Create research timeline."""
return {"scope": scope, "estimated_duration": "2-4 weeks"}
"""
Research Report Generation Module
Generates comprehensive research reports.
"""
from typing import Dict
class ResearchReportGenerator:
"""Generates research reports from synthesis."""
def generate_comprehensive_report(self, synthesis: Dict, topic: str) -> str:
"""
Generate comprehensive research report.
Args:
synthesis: Synthesized research findings
topic: Research topic
Returns:
Formatted report as string
"""
report = f"""
# Research Report: {topic}
## Executive Summary
{self.create_executive_summary(synthesis)}
## Main Findings
{self.format_findings(synthesis["main_conclusions"])}
## Supporting Evidence
{self.format_evidence(synthesis["supporting_evidence"])}
## Conflicting Views & Debates
{self.format_conflicts(synthesis["conflicting_views"])}
## Research Gaps
{self.format_gaps(synthesis["research_gaps"])}
## Recommendations
{self.generate_recommendations(synthesis)}
## References
{self.generate_references(synthesis)}
"""
return report
def create_executive_summary(self, synthesis: Dict) -> str:
"""Create executive summary."""
return "Summary of key research findings and conclusions."
def format_findings(self, findings: list) -> str:
"""Format findings for report."""
if not findings:
return "No key findings identified."
return "\n".join([f"- {finding}" for finding, count in findings])
def format_evidence(self, evidence: Dict) -> str:
"""Format supporting evidence."""
result = ""
for category, items in evidence.items():
result += f"\n### {category.replace('_', ' ').title()}\n"
result += "\n".join([f"- {item}" for item in items[:5]])
return result
def format_conflicts(self, conflicts: list) -> str:
"""Format conflicting views."""
if not conflicts:
return "No major conflicting views identified."
return "\n".join([f"- {conflict}" for conflict in conflicts])
def format_gaps(self, gaps: list) -> str:
"""Format research gaps."""
if not gaps:
return "Research appears comprehensive."
return "\n".join([f"- {gap}" for gap in gaps])
def generate_recommendations(self, synthesis: Dict) -> str:
"""Generate recommendations."""
return "Based on findings, recommended actions and next steps."
def generate_references(self, synthesis: Dict) -> str:
"""Generate references section."""
return "List of sources cited in report."
"""
Research Synthesis Module
Synthesizes and analyzes research findings.
"""
from typing import Dict, List
from collections import Counter
class ResearchSynthesizer:
"""Synthesizes research findings from multiple sources."""
def synthesize_findings(self, information: Dict) -> Dict:
"""
Synthesize research findings.
Args:
information: Extracted information from sources
Returns:
Dictionary with synthesized findings
"""
synthesis = {
"main_conclusions": self.identify_main_conclusions(information),
"supporting_evidence": self.organize_evidence(information),
"conflicting_views": self.identify_conflicts(information),
"research_gaps": self.identify_gaps(information),
"future_directions": self.suggest_future_research(information)
}
return synthesis
def identify_main_conclusions(self, information: Dict) -> List:
"""Find most consistent findings across sources."""
findings_frequency = Counter(information.get("key_findings", []))
main_conclusions = findings_frequency.most_common(5)
return main_conclusions
def organize_evidence(self, information: Dict) -> Dict:
"""Organize supporting evidence."""
return {
"statistics": information.get("statistics", []),
"expert_opinions": information.get("expert_opinions", []),
"trends": information.get("trends", [])
}
def identify_conflicts(self, information: Dict) -> List:
"""Identify conflicting viewpoints."""
# Placeholder for conflict identification
return []
def identify_gaps(self, information: Dict) -> List:
"""Identify research gaps."""
return information.get("gaps", [])
def suggest_future_research(self, information: Dict) -> List:
"""Suggest future research directions."""
return ["Address identified gaps", "Explore emerging trends"]
"""
Source Evaluation Module
Evaluates and scores information sources for credibility.
"""
from datetime import datetime
from typing import Dict
class SourceEvaluator:
"""Evaluates credibility of information sources."""
def evaluate_source(self, source: Dict) -> int:
"""
Evaluate source credibility.
Args:
source: Source object with attributes
Returns:
Credibility score (0-100)
"""
score = 0
# Authority: Is author qualified?
if hasattr(source, 'author_expertise_level') and source.author_expertise_level > 0.7:
score += 25
# Credibility: Is publisher trusted?
if hasattr(source, 'publisher_reputation') and source.publisher_reputation > 0.8:
score += 25
# Recency: Is information current?
if hasattr(source, 'publication_date'):
days_old = (datetime.now() - source.publication_date).days
if days_old < 365:
score += 25
# Bias: Are there clear biases?
if hasattr(source, 'bias_score') and source.bias_score < 0.3:
score += 25
return score