🔀

AI Research Assistant

Medium6 tools

Automated research workflow for gathering information, analyzing sources, and producing comprehensive reports.

CrewAIBrave Search MCPPerplexityNotionSlackGoogle Docs

Workflow Steps

  1. 1

    Planner Agent defines research scope and objectives

  2. 2

    Researcher Agent discovers relevant sources via web search

  3. 3

    Analyst Agent evaluates source credibility and extracts key information

  4. 4

    Synthesizer Agent combines findings into coherent insights

  5. 5

    Writer Agent produces well-structured research reports

  6. 6

    Editor Agent refines for clarity and verifies citations

  7. 7

    Distributor Agent shares reports to team and knowledge base

Download

Documentation

AI Research Assistant Workflow

Overview

The AI Research Assistant workflow automates the research process by leveraging AI agents to gather information, analyze sources, synthesize findings, and produce comprehensive research reports. This workflow is ideal for market research, competitive analysis, academic research, and technical investigation.

Difficulty: Medium

Tools Required

  • CrewAI - For multi-agent research team orchestration
  • Brave Search MCP - Web search for current information
  • Perplexity - AI-powered search and answers
  • Notion - Knowledge base and report storage
  • Slack - Team collaboration and sharing
  • Google Docs - Report formatting and collaboration

Workflow Steps

Step 1: Research Planning

The Planner Agent defines the research scope:

  • Clarify research objectives and questions
  • Identify key topics and subtopics
  • Determine source types needed
  • Set quality criteria for sources
def plan_research(topic, objectives):
    prompt = f"""
    Research Topic: {topic}
    Objectives: {objectives}
    
    Create a research plan including:
    1. Key research questions
    2. Topics to investigate
    3. Source types to prioritize
    4. Quality criteria
    """
    return llm.generate(prompt)

Step 2: Source Discovery

The Researcher Agent finds relevant sources:

  • Search web for current information
  • Identify authoritative sources
  • Collect diverse perspectives
  • Filter low-quality content
def discover_sources(plan):
    all_sources = []
    
    for topic in plan["topics"]:
        # Brave Search for web content
        results = brave_search(query=topic, count=20)
        all_sources.extend(results)
        
        # Perplexity for AI-summarized answers
        perplexity_results = perplexity.search(query=topic)
        all_sources.extend(perplexity_results)
    
    # Deduplicate and rank by quality
    return rank_sources(all_sources)

Step 3: Source Analysis

The Analyst Agent evaluates each source:

  • Read and extract key information
  • Assess credibility and bias
  • Identify relevant quotes and data
  • Cross-reference with other sources
def analyze_source(source):
    content = fetch_content(source["url"])
    
    analysis = llm.analyze(
        content=content,
        criteria=["credibility", "relevance", "bias", "timeliness"]
    )
    
    return {
        "source": source,
        "analysis": analysis,
        "key_points": extract_key_points(content),
        "quotes": extract_quotes(content),
        "data": extract_data(content)
    }

Step 4: Synthesis

The Synthesizer Agent combines findings:

  • Identify patterns across sources
  • Resolve conflicting information
  • Build coherent narrative
  • Highlight consensus and disagreements
def synthesize_findings(analyzed_sources):
    # Group by theme
    themes = group_by_theme(analyzed_sources)
    
    # For each theme, synthesize
    synthesis = {}
    for theme, sources in themes.items():
        synthesis[theme] = {
            "summary": llm.summarize(sources),
            "consensus": identify_consensus(sources),
            "disagreements": identify_disagreements(sources),
            "evidence": collect_evidence(sources)
        }
    
    return synthesis

Step 5: Report Generation

The Writer Agent produces the final report:

  • Structure the report logically
  • Write clear, concise sections
  • Include citations and references
  • Add executive summary
def generate_report(synthesis, format="markdown"):
    report = {
        "title": synthesis["topic"],
        "executive_summary": generate_executive_summary(synthesis),
        "sections": [],
        "references": []
    }
    
    for theme, data in synthesis["themes"].items():
        section = {
            "heading": theme,
            "content": write_section(theme, data),
            "citations": data["evidence"]["citations"]
        }
        report["sections"].append(section)
        report["references"].extend(data["evidence"]["sources"])
    
    return format_report(report, format)

Step 6: Review and Refine

The Editor Agent improves the report:

  • Check for clarity and flow
  • Verify citations are accurate
  • Ensure consistent tone
  • Add visual elements suggestions
def edit_report(report):
    improvements = []
    
    # Clarity check
    unclear_passages = find_unclear_passages(report)
    if unclear_passages:
        improvements.append({
            "type": "clarity",
            "suggestions": suggest_improvements(unclear_passages)
        })
    
    # Citation verification
    invalid_citations = verify_citations(report["references"])
    if invalid_citations:
        improvements.append({
            "type": "citations",
            "issues": invalid_citations
        })
    
    # Tone consistency
    tone_issues = check_tone_consistency(report)
    if tone_issues:
        improvements.append({
            "type": "tone",
            "suggestions": tone_issues
        })
    
    return {
        "report": report,
        "improvements": improvements
    }

Step 7: Distribution

The Distributor Agent shares the report:

  • Post to Notion knowledge base
  • Share with team via Slack
  • Create summary for quick consumption
  • Archive for future reference
def distribute_report(report, team_channels):
    # Create Notion page
    notion_page = notion.create_page(
        title=report["title"],
        content=report["content"],
        parent="Research Reports"
    )
    
    # Share with team
    for channel in team_channels:
        slack.post_message(
            channel=channel,
            text=f"📊 New Research Report: {report['title']}\nView: {notion_page['url']}"
        )
    
    # Create executive summary
    summary = create_executive_summary(report)
    slack.post_message(
        channel="#research-updates",
        text=summary
    )
    
    return {"notion_page": notion_page, "shared_to": team_channels}

Example Usage

Scenario: Market Research

Researcher: "Research the current state of AI agent frameworks for enterprise use"

AI Workflow:
1. ✅ Planner: Defines scope (market size, key players, trends, challenges)
2. ✅ Researcher: Finds 50+ sources from tech blogs, reports, forums
3. ✅ Analyst: Evaluates credibility, extracts key data points
4. ✅ Synthesizer: Identifies market leaders, emerging trends, pain points
5. ✅ Writer: Produces 15-page comprehensive report
6. ✅ Editor: Refines for clarity, verifies all citations
7. ✅ Distributor: Posts to Notion, shares to #research and #product teams

Scenario: Competitive Analysis

Researcher: "Analyze our top 3 competitors' AI features"

AI Workflow:
1. ✅ Planner: Identifies competitors and comparison dimensions
2. ✅ Researcher: Gathers product docs, reviews, news
3. ✅ Analyst: Extracts feature lists, pricing, user feedback
4. ✅ Synthesizer: Creates comparison matrix, identifies gaps
5. ✅ Writer: Produces competitive analysis report
6. ✅ Editor: Ensures objective tone, accurate claims
7. ✅ Distributor: Shares to #strategy and leadership

CrewAI Agent Definitions

from crewai import Agent, Task, Crew

# Planner Agent
planner = Agent(
    role='Research Planner',
    goal='Define comprehensive research scope and plan',
    backstory='Expert research methodology specialist with 10+ years of experience',
    verbose=True,
    allow_delegation=False
)

# Researcher Agent
researcher = Agent(
    role='Information Researcher',
    goal='Find and collect high-quality sources on the topic',
    backstory='Skilled researcher with expertise in web research and source evaluation',
    verbose=True,
    allow_delegation=True
)

# Analyst Agent
analyst = Agent(
    role='Source Analyst',
    goal='Evaluate sources and extract key information',
    backstory='Critical thinker with strong analytical skills and attention to detail',
    verbose=True,
    allow_delegation=False
)

# Synthesizer Agent
synthesizer = Agent(
    role='Research Synthesizer',
    goal='Combine findings into coherent insights',
    backstory='Expert in pattern recognition and information synthesis',
    verbose=True,
    allow_delegation=True
)

# Writer Agent
writer = Agent(
    role='Technical Writer',
    goal='Produce clear, well-structured research reports',
    backstory='Professional technical writer with expertise in research documentation',
    verbose=True,
    allow_delegation=False
)

# Tasks
plan_task = Task(
    description='Create detailed research plan for: {topic}',
    expected_output='Research plan with questions, topics, and criteria',
    agent=planner
)

research_task = Task(
    description='Find and collect sources based on the plan',
    expected_output='List of 20+ high-quality sources with URLs',
    agent=researcher,
    context=[plan_task]
)

# Create crew
crew = Crew(
    agents=[planner, researcher, analyst, synthesizer, writer],
    tasks=[plan_task, research_task, analysis_task, synthesis_task, writing_task],
    verbose=True
)

result = crew.kickoff(inputs={"topic": "AI agent frameworks for enterprise"})

Configuration

Brave Search API

export BRAVE_API_KEY=your-api-key

Perplexity API

export PERPLEXITY_API_KEY=your-api-key

Notion Integration

export NOTION_INTEGRATION_TOKEN=secret_xxx
export NOTION_DATABASE_ID=your-database-id

Slack Integration

export SLACK_BOT_TOKEN=xoxb-xxx

Pros

  • Comprehensive Research: Covers multiple angles and sources
  • Time Savings: Reduces research time by 70%+
  • Consistent Quality: Standardized evaluation criteria
  • Citation Tracking: Automatic reference management
  • Team Collaboration: Easy sharing and feedback
  • Reusable Process: Same workflow for different topics

Cons

  • API Costs: Multiple AI calls can be expensive
  • Source Quality: Depends on search engine results
  • Bias Risk: AI may introduce subtle biases
  • Complexity: Multi-agent setup requires configuration
  • Time: Full workflow takes 15-30 minutes

When to Use

Choose this workflow when:

  • You need comprehensive research on a topic
  • You're doing market or competitive analysis
  • You need to produce professional research reports
  • You want consistent research quality across your team

Consider alternatives when:

  • You need quick, simple answers (use Perplexity directly)
  • You're doing academic research requiring strict methodology
  • You have very specific source requirements

Resources


Last updated: May 2026