Multi Agent Earnings Call Analysis System (MAECAS)
Multi-Agent Earnings Call Analysis System (MAECAS)
Companies earnings calls provide critical insights into a company's performance, strategy, and future outlook. However, these transcripts are lengthy, dense, and cover diverse topics - making it challenging to extract targeted insights efficiently.
The Problem
Quarterly earnings calls provide critical insights into company performance, strategies, and outlook, but extracting meaningful analysis presents significant challenges:
- Earnings call transcripts are lengthy and dense, often spanning 20+ pages of complex financial discussions Key insights are scattered throughout the text without clear organization.
- Different stakeholders need different types of information (financial metrics, strategic initiatives, risk factors).
- Cross-quarter analysis requires manually tracking evolving narratives across multiple calls.
- Traditional manual analysis is time-consuming, inconsistent, and prone to missing important details.
Why This Matters
For investors, analysts, and business leaders, comprehensive earnings call analysis delivers significant value:
- Time Efficiency: Reduce analysis time from days to minutes
- Decision Support: Provide structured insights for investment and strategic decisions
- Comprehensive Coverage: Ensure no important insights are missed
- Consistent Analysis: Apply the same analytical rigor to every transcript
- Trend Detection: Identify patterns across quarters that might otherwise go unnoticed
Our Solution
The Earnings Call Analysis Orchestrator transforms how earnings calls are processed through a multi-agent workflow that:
- Extracts insights from quarterly transcripts using specialized analysis agents
- Delivers both comprehensive reports and targeted query responses
- Identifies trends and patterns across quarters
- Maintains a structured knowledge base of earnings insights
Specialized Analysis Agents
Our system employs specialized agents working in coordination to deliver comprehensive analysis:
Financial Agent: Extracts revenue figures, profit margins, growth metrics, and other quantifiable performance indicators.
Strategic Agent: Identifies product roadmaps, market expansions, partnerships, and long-term vision initiatives.
Sentiment Agent: Evaluates management's confidence, tone, and enthusiasm across different business segments.
Risk Agent: Detects supply chain, market, regulatory challenges, and assesses their severity and mitigation plans.
Competitor Agent: Tracks competitive positioning, market share discussions, and differentiation strategies.
Temporal Agent: Analyzes trends across quarters to identify business trajectory and evolving priorities.
Workflow Orchestration
The orchestrator serves as the central coordinator that:
- Efficiently processes and caches transcript text using advanced OCR
- Activates specialized agents based on analysis needs Stores structured insights in a centralized knowledge base
- Generates comprehensive reports with executive summaries, sectional analyses, and outlook
- Answers specific queries by leveraging relevant insights across quarters
Dataset
For demonstration purposes, we use NVIDIA's quarterly earnings call transcripts from 2025:
- Q1 2025 Earnings Call Transcript
- Q2 2025 Earnings Call Transcript
- Q3 2025 Earnings Call Transcript
- Q4 2025 Earnings Call Transcript
These transcripts contain discussions of financial results, strategic initiatives, market conditions, and forward-looking statements by NVIDIA's management team and their interactions with financial analysts.
Mistral AI Models
For our implementation, we use Mistral AI's LLMs:
mistral-small-latest: Used for general analysis and response generation.
mistral-large-latest: Used for structured output generation.
mistral-ocr-latest: Used for PDF transcript extraction and processing.
This modular approach enables both in-depth report generation and targeted question answering while maintaining efficiency through selective agent activation and insights reuse.
Solution Architecture

Installation
We need mistralai for LLM usage.
Collecting mistralai Downloading mistralai-1.6.0-py3-none-any.whl.metadata (30 kB) Collecting eval-type-backport>=0.2.0 (from mistralai) Downloading eval_type_backport-0.2.2-py3-none-any.whl.metadata (2.2 kB) Requirement already satisfied: httpx>=0.28.1 in /usr/local/lib/python3.11/dist-packages (from mistralai) (0.28.1) Requirement already satisfied: pydantic>=2.10.3 in /usr/local/lib/python3.11/dist-packages (from mistralai) (2.10.6) Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from mistralai) (2.8.2) Collecting typing-inspection>=0.4.0 (from mistralai) Downloading typing_inspection-0.4.0-py3-none-any.whl.metadata (2.6 kB) Requirement already satisfied: anyio in /usr/local/lib/python3.11/dist-packages (from httpx>=0.28.1->mistralai) (4.9.0) Requirement already satisfied: certifi in /usr/local/lib/python3.11/dist-packages (from httpx>=0.28.1->mistralai) (2025.1.31) Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.11/dist-packages (from httpx>=0.28.1->mistralai) (1.0.7) Requirement already satisfied: idna in /usr/local/lib/python3.11/dist-packages (from httpx>=0.28.1->mistralai) (3.10) Requirement already satisfied: h11<0.15,>=0.13 in /usr/local/lib/python3.11/dist-packages (from httpcore==1.*->httpx>=0.28.1->mistralai) (0.14.0) Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.11/dist-packages (from pydantic>=2.10.3->mistralai) (0.7.0) Requirement already satisfied: pydantic-core==2.27.2 in /usr/local/lib/python3.11/dist-packages (from pydantic>=2.10.3->mistralai) (2.27.2) Requirement already satisfied: typing-extensions>=4.12.2 in /usr/local/lib/python3.11/dist-packages (from pydantic>=2.10.3->mistralai) (4.12.2) Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.8.2->mistralai) (1.17.0) Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.11/dist-packages (from anyio->httpx>=0.28.1->mistralai) (1.3.1) Downloading mistralai-1.6.0-py3-none-any.whl (288 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 288.7/288.7 kB 7.7 MB/s eta 0:00:00 Downloading eval_type_backport-0.2.2-py3-none-any.whl (5.8 kB) Downloading typing_inspection-0.4.0-py3-none-any.whl (14 kB) Installing collected packages: typing-inspection, eval-type-backport, mistralai Successfully installed eval-type-backport-0.2.2 mistralai-1.6.0 typing-inspection-0.4.0
Imports
Setup API Keys
Here we setup MistralAI API key.
Initialize Mistral client
Here we initialise Mistral client.
Download Data
We will use NVIDIA's quarterly earnings call transcripts from 2025:
- Q1 2025 Earnings Call Transcript
- Q2 2025 Earnings Call Transcript
- Q3 2025 Earnings Call Transcript
- Q4 2025 Earnings Call Transcript
These transcripts contain discussions of financial results, strategic initiatives, market conditions, and forward-looking statements by NVIDIA's management team and their interactions with financial analysts.
--2025-04-10 19:13:26-- https://github.com/mistralai/cookbook/blob/main/mistral/agents/earnings_calls/data/nvidia_earnings_2025_Q1.pdf Resolving github.com (github.com)... 20.207.73.82 Connecting to github.com (github.com)|20.207.73.82|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: ‘nvidia_earnings_2025_Q1.pdf’ nvidia_earnings_202 [ <=> ] 208.56K --.-KB/s in 0.1s 2025-04-10 19:13:27 (1.58 MB/s) - ‘nvidia_earnings_2025_Q1.pdf’ saved [213562] --2025-04-10 19:13:27-- https://github.com/mistralai/cookbook/blob/main/mistral/agents/earnings_calls/data/nvidia_earnings_2025_Q2.pdf Resolving github.com (github.com)... 20.207.73.82 Connecting to github.com (github.com)|20.207.73.82|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: ‘nvidia_earnings_2025_Q2.pdf’ nvidia_earnings_202 [ <=> ] 208.56K --.-KB/s in 0.1s 2025-04-10 19:13:28 (1.53 MB/s) - ‘nvidia_earnings_2025_Q2.pdf’ saved [213563] --2025-04-10 19:13:28-- https://github.com/mistralai/cookbook/blob/main/mistral/agents/earnings_calls/data/nvidia_earnings_2025_Q3.pdf Resolving github.com (github.com)... 20.207.73.82 Connecting to github.com (github.com)|20.207.73.82|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: ‘nvidia_earnings_2025_Q3.pdf’ nvidia_earnings_202 [ <=> ] 208.56K --.-KB/s in 0.1s 2025-04-10 19:13:29 (1.59 MB/s) - ‘nvidia_earnings_2025_Q3.pdf’ saved [213562] --2025-04-10 19:13:29-- https://github.com/mistralai/cookbook/blob/main/mistral/agents/earnings_calls/data/nvidia_earnings_2025_Q4.pdf Resolving github.com (github.com)... 20.207.73.82 Connecting to github.com (github.com)|20.207.73.82|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: ‘nvidia_earnings_2025_Q4.pdf’ nvidia_earnings_202 [ <=> ] 208.56K --.-KB/s in 0.1s 2025-04-10 19:13:30 (1.51 MB/s) - ‘nvidia_earnings_2025_Q4.pdf’ saved [213563]
Initiate Models
-
DEFAULT_MODEL - For General Analysis
-
STRUCTURED_MODEL - For Structured Outputs
-
OCR_MODEL - For parsing the earnings call document.
Data Models
The solution uses specialized Pydantic models to structure and extract insights:
Core Analysis Models
- FinancialInsight: Captures metrics, values, and confidence scores for financial performance
- StrategicInsight: Represents initiatives, descriptions, timeframes, and importance ratings
- SentimentInsight: Tracks topic sentiment, evidence, and speaker attributions
- RiskInsight: Documents risks, impacts, mitigations, and severity scores
- CompetitorInsight: Records market segments, positioning, and competitive dynamics
- TemporalInsight: Identifies trends, patterns, and supporting evidence across quarters
Workflow Models
- QueryAnalysis: Determines required quarters, agent types, and analysis dimensions from user queries
- ReportSection: Structures report content with title, body, and optional subsections
Response Wrappers
- Each analysis model has a corresponding response wrapper (e.g., FinancialInsightsResponse) that packages insights into structured formats compatible with the Mistral API parsing capabilities
The models use Python's Literal types for categorized fields (such as sentiment levels or trend types) to enforce strict validation and ensure consistent terminology, enabling reliable cross-quarter comparisons while providing consistent knowledge extraction, storage, and retrieval across multiple analysis dimensions for both comprehensive reports and targeted queries.
Financial Insight
Strategic Insight
Sentiment Insight
Risk Insight
Competitor Insight
Temporal Insight
Query Analysis
Report Section
PDF Parser
Our PDF parser uses Mistral's OCR capabilities to extract high-quality text from earnings call transcripts while implementing a file-based caching system to improve performance. This approach enables accurate text extraction with minimal processing overhead for repeated analyses.
Insights Storage
The system includes a centralized InsightsStore component that:
- Maintains a persistent JSON database of all extracted insights
- Organizes insights by type (financial, strategic, etc.) and quarter
- Provides efficient retrieval for both report generation and query answering
- Eliminates redundant processing by caching analysis results
Specialised Agents
Our analysis relies on five domain-focused agents, each extracting specific insights:
Financial Agent - Analyzes metrics, revenue figures, margins, and growth rates.
Strategic Agent - Identifies product roadmaps, market expansions, and R&D investments.
Sentiment Agent - Evaluates management tone, confidence levels, and enthusiasm across topics.
Risk Agent - Detects challenges, uncertainties, and potential threats with severity ratings.
Competitor Agent - Tracks competitive positioning, market share discussions, and differentiation strategies.
Each agent processes transcripts through specialized prompts, producing structured insights that feed into the overall analysis.
Agent base class for specialised agents
Financial Agent
Strategic Agent.
Sentiment Agent
Risk Agent
Competitor Agent
Temporal Analysis Agent
Query Processor
The Query Processor analyzes user questions to determine the specific components needed:
- Interprets the queries about NVIDIA's earnings calls
- Identifies which quarters (Q1-Q4) are relevant to the question
- Determines which agent types should be activated based on query content
- Decides whether temporal analysis across quarters is required
- Provides a clear interpretation of the user's intent
This component ensures the workflow activates only the necessary analysis paths, improving efficiency while maintaining comprehensive answers.
Orchestration Layer
The EarningsCallAnalysisOrchestrator coordinates the entire analysis workflow with key functions:
- process_transcript(): Analyzes a quarterly transcript with all specialized agents
- generate_comprehensive_report(): Creates detailed reports across selected quarters
- answer_query(): Provides targeted responses to specific earnings call questions
- _generate_report_sections(): Produces structured sections (financial, strategic, etc.)
- _generate_query_response(): Crafts focused answers from relevant insights
- _compile_report(): Assembles all sections into a cohesive markdown document
This orchestration ensures efficient resource utilization while delivering both in-depth analysis reports and precise query responses.
Initialize the system for NVIDIA 2025 earnings calls
Process All Quarterly Transcripts
We process all quarterly transcripts and generate different insights at once, making both report generation and query answering more efficient.
Processing all quarterly transcripts... === Processing NVIDIA 2025 Q1 transcript === Parsing transcript for NVIDIA 2025 Q1 Processing PDF file: nvidia_earnings_2025_Q1.pdf Cached transcript for NVIDIA 2025 Q1 Extracting financial insights for quarter Q1... Financial agent completed for Q1 Extracting strategic insights for quarter Q1... Strategic agent completed for Q1 Extracting sentiment insights for quarter Q1... Sentiment agent completed for Q1 Extracting risk insights for quarter Q1... Risk agent completed for Q1 Extracting competitor insights for quarter Q1... Competitor agent completed for Q1 === Completed processing NVIDIA 2025 Q1 transcript === ✓ Successfully processed Q1 transcript === Processing NVIDIA 2025 Q2 transcript === Parsing transcript for NVIDIA 2025 Q2 Processing PDF file: nvidia_earnings_2025_Q2.pdf Cached transcript for NVIDIA 2025 Q2 Extracting financial insights for quarter Q2... Error processing transcript for Q2: Unterminated string starting at: line 2 column 3 (char 4) ✗ Failed to process Q2 transcript === Processing NVIDIA 2025 Q3 transcript === Parsing transcript for NVIDIA 2025 Q3 Processing PDF file: nvidia_earnings_2025_Q3.pdf Cached transcript for NVIDIA 2025 Q3 Extracting financial insights for quarter Q3... Financial agent completed for Q3 Extracting strategic insights for quarter Q3... Strategic agent completed for Q3 Extracting sentiment insights for quarter Q3... Sentiment agent completed for Q3 Extracting risk insights for quarter Q3... Risk agent completed for Q3 Extracting competitor insights for quarter Q3... Competitor agent completed for Q3 === Completed processing NVIDIA 2025 Q3 transcript === ✓ Successfully processed Q3 transcript === Processing NVIDIA 2025 Q4 transcript === Parsing transcript for NVIDIA 2025 Q4 Processing PDF file: nvidia_earnings_2025_Q4.pdf Cached transcript for NVIDIA 2025 Q4 Extracting financial insights for quarter Q4... Financial agent completed for Q4 Extracting strategic insights for quarter Q4... Strategic agent completed for Q4 Extracting sentiment insights for quarter Q4... Sentiment agent completed for Q4 Extracting risk insights for quarter Q4... Risk agent completed for Q4 Extracting competitor insights for quarter Q4... Competitor agent completed for Q4 === Completed processing NVIDIA 2025 Q4 transcript === ✓ Successfully processed Q4 transcript
Report Generation
We generate comprehensive report by organizing insights across quarters into structured sections including executive summary, financial analysis, strategic initiatives, market positioning, risk assessment, and future outlook.
Generating comprehensive annual report... === Generating comprehensive report for NVIDIA 2025 Q1, Q2, Q3, Q4 === Processing missing transcript for Q2... === Processing NVIDIA 2025 Q2 transcript === Using cached transcript for NVIDIA 2025 Q2 Extracting financial insights for quarter Q2... Financial agent completed for Q2 Extracting strategic insights for quarter Q2... Strategic agent completed for Q2 Extracting sentiment insights for quarter Q2... Sentiment agent completed for Q2 Extracting risk insights for quarter Q2... Risk agent completed for Q2 Extracting competitor insights for quarter Q2... Competitor agent completed for Q2 === Completed processing NVIDIA 2025 Q2 transcript === Running temporal analysis across quarters... Temporal analysis completed Generating report sections... Report sections generated Compiling final comprehensive report... === Report saved to NVIDIA_2025_Q1_Q2_Q3_Q4_Analysis.md ===
Displaying report saved to: NVIDIA_2025_Q1_Q2_Q3_Q4_Analysis.md
Query Answering
Our system analyzes user questions to determine relevant quarters, agent types, and analysis dimensions, then provides targeted responses using only the most applicable insights.
Query-1
Query - What were NVIDIA's key financial metrics in Q1 and Q2 2025?
Agents Used - Financial Agent
Quarters - Q1, Q2
Temporal Analysis Required - False
Financial Year - 2025
=== Processing query: What were the key financial metrics in Q1 and Q2? === Analyzing query: What were the key financial metrics in Q1 and Q2? Query analysis completed Quarters needed: ['Q1', 'Q2'] Agent types needed: ['Financial'] Temporal analysis required: True Query intent: User wants to know the key financial metrics for NVIDIA in Q1 and Q2, likely to compare performance between these two quarters. Running temporal analysis across quarters... Temporal analysis completed === Query processing completed ===
Query-2
Query - Identify strategic shifts in NVIDIA's automotive business across 2025
Agents Used - Strategic Agent
Quarters - Q1, Q2, Q3, Q4
Temporal Analysis Required - True
Financial Year - 2025
=== Processing query: Identify strategic shifts in NVIDIA's automotive business across 2025 === Analyzing query: Identify strategic shifts in NVIDIA's automotive business across 2025 Query analysis completed Quarters needed: ['Q1', 'Q2', 'Q3', 'Q4'] Agent types needed: ['Strategic'] Temporal analysis required: True Query intent: User wants to identify strategic shifts in NVIDIA's automotive business throughout the year 2025. === Query processing completed ===
Query-3
Query - What risks did NVIDIA highlight in their Q4 earnings call, and how do they compare to those mentioned in Q3?
Agents Used - Risk Agent
Quarters - Q3, Q4
Temporal Analysis Required - True
Financial Year - 2025
=== Processing query: What risks did NVIDIA highlight in their Q4 earnings call, and how do they compare to those mentioned in Q3? === Analyzing query: What risks did NVIDIA highlight in their Q4 earnings call, and how do they compare to those mentioned in Q3? Query analysis completed Quarters needed: ['Q3', 'Q4'] Agent types needed: ['Risk'] Temporal analysis required: True Query intent: Identify and compare risks highlighted by NVIDIA in their Q3 and Q4 earnings calls. Running temporal analysis across quarters... Temporal analysis completed === Query processing completed ===