How to Automate Market Research Reports with a Multi-Agent Crew Using CrewAI
Market research reports traditionally require weeks of manual data gathering, analysis, and writing. A CrewAI multi-agent crew can produce a comparable report in hours — with specialized agents handling each phase and built-in quality checks ensuring accuracy. This tutorial walks you through building a market research crew from definition to execution.
Step 1: Define Your Research Scope
Before building the crew, clarify what the report covers. Example scope: “AI tools market landscape in Southeast Asia — competitor analysis, market size estimates, growth trends, and investment patterns for Q3 2026.” Clear scope ensures each agent’s task description targets the right data.
Step 2: Define Research-Specific Agents
Create agents tailored to market research:
from crewai import Agent
data_gatherer = Agent(
role="Market Data Gatherer",
goal="Collect quantitative market data — revenue figures, growth rates, market share percentages, and investment totals",
backstory="You are a quantitative research specialist who finds precise numbers. You always cite the original source for every data point and flag estimates versus confirmed figures.",
verbose=True
)
qualitative_researcher = Agent(
role="Qualitative Market Researcher",
goal="Identify qualitative insights — market narratives, competitive positioning, regulatory trends, and strategic shifts",
backstory="You specialize in understanding market stories — why companies succeed, how regulations shape opportunities, and what strategic moves signal future trends. You read beyond the numbers.",
verbose=True
)
analyst = Agent(
role="Senior Market Analyst",
goal="Synthesize quantitative and qualitative findings into coherent market analysis with actionable conclusions",
backstory="You combine hard data with strategic narrative to produce analysis that decision-makers can act on. You identify contradictions between data sources, flag uncertainties, and present balanced conclusions.",
verbose=True
)
report_writer = Agent(
role="Professional Report Writer",
goal="Transform market analysis into a polished, executive-ready report with clear structure, data visualizations, and strategic recommendations",
backstory="You write reports that busy executives actually read. Clear headers, concise paragraphs, data tables, and bold recommendations — never burying insights in verbose prose.",
verbose=True
)
Step 3: Assign Research Tools
from crewai_tools import SerperDevTool, ScrapeWebsiteTool, CSVLoaderTool
data_gatherer.tools = [SerperDevTool(), ScrapeWebsiteTool(), CSVLoaderTool()]
qualitative_researcher.tools = [SerperDevTool(), ScrapeWebsiteTool()]
analyst.tools = [] # Analyst synthesizes — tools aren't needed for reasoning
report_writer.tools = [FileWriterTool()]
Step 4: Define Sequential Research Tasks
from crewai import Task
data_collection = Task(
description="Gather quantitative data on the AI tools market in Southeast Asia: market size, growth rates, competitor revenue, investment volumes, and adoption statistics. Cite every source.",
expected_output="A data table with 20+ quantitative metrics, each with source citation and confidence level (confirmed vs. estimated).",
agent=data_gatherer
)
qualitative_research = Task(
description="Research qualitative market dynamics: key competitive narratives, regulatory developments, strategic partnerships, and emerging business models in Southeast Asia's AI tools space.",
expected_output="A narrative analysis document covering 5-7 qualitative themes, each with supporting evidence and source citations.",
agent=qualitative_researcher
)
analysis = Task(
description="Synthesize the quantitative data and qualitative narratives into a coherent market analysis. Identify patterns, flag contradictions between sources, and produce actionable conclusions with confidence ratings.",
expected_output="An integrated market analysis that combines data points with strategic narrative, identifies 3-5 key conclusions with supporting evidence, and rates each conclusion's confidence level.",
agent=analyst,
context=[data_collection, qualitative_research]
)
report = Task(
description="Write an executive-ready market research report from the analysis. Structure: Executive Summary, Market Overview, Competitive Landscape, Growth Drivers, Risk Factors, Strategic Recommendations. Include data tables and key metric highlights.",
expected_output="A complete market research report in markdown format, 3000-4000 words, with clear section headers, data tables, and actionable recommendations.",
agent=report_writer,
context=[analysis]
)
Step 5: Execute the Crew
from crewai import Crew, Process
research_crew = Crew(
agents=[data_gatherer, qualitative_researcher, analyst, report_writer],
tasks=[data_collection, qualitative_research, analysis, report],
process=Process.sequential
)
result = research_crew.kickoff()
The data gatherer and qualitative researcher run first (in sequence). The analyst then receives both outputs and synthesizes them. The report writer receives the synthesis and produces the final document. Total execution time typically ranges from 30-60 minutes depending on research scope and model speed.
Step 6: Review and Refine
Read the final report. If specific sections need deeper data, add follow-up tasks targeting those gaps. You can re-run specific agents with refined task descriptions without rebuilding the entire crew — CrewAI supports incremental refinement through targeted re-execution.
Step 7: Automate Recurring Reports
For weekly or monthly market reports, parameterize your task descriptions with date ranges and market segments. Use Python variables in task descriptions: description=f"Research AI tools market in {region} for {quarter}". Schedule execution with cron or GitHub Actions — your market research becomes a fully automated recurring workflow.
