Notebooks
M
Mistral AI
Multi Agent Earnings Call Analysis System (MAECAS)

Multi Agent Earnings Call Analysis System (MAECAS)

agentsnon_frameworkmistral-cookbookearnings_callsmistral

Multi-Agent Earnings Call Analysis System (MAECAS)

Open In Colab

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:

  1. Extracts insights from quarterly transcripts using specialized analysis agents
  2. Delivers both comprehensive reports and targeted query responses
  3. Identifies trends and patterns across quarters
  4. 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

Solution Architecture

Installation

We need mistralai for LLM usage.

[1]
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

[2]

Setup API Keys

Here we setup MistralAI API key.

[3]

Initialize Mistral client

Here we initialise Mistral client.

[4]

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.

[1]
--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

  1. DEFAULT_MODEL - For General Analysis

  2. STRUCTURED_MODEL - For Structured Outputs

  3. OCR_MODEL - For parsing the earnings call document.

[5]

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

[6]

Strategic Insight

[7]

Sentiment Insight

[8]

Risk Insight

[9]

Competitor Insight

[10]

Temporal Insight

[11]

Query Analysis

[12]

Report Section

[13]

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.

[14]

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
[15]

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

[16]

Financial Agent

[17]

Strategic Agent.

[18]

Sentiment Agent

[19]

Risk Agent

[20]

Competitor Agent

[21]

Temporal Analysis Agent

[22]

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.

[23]

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.

[24]

Initialize the system for NVIDIA 2025 earnings calls

[25]

Process All Quarterly Transcripts

We process all quarterly transcripts and generate different insights at once, making both report generation and query answering more efficient.

[26]
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.

[27]

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 ===

[28]

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

[29]

=== 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 ===

[30]

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

[31]

=== 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 ===

[32]

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

[33]

=== 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 ===

[34]