Skip to content

About

Transcript Intelligence Agent v3 - Modularized Python application for call analysis using hybrid local + LLM approach

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

Transcript Intelligence Agent v3 — Hybrid Architecture

A production-grade transcription analysis system that combines local ML models (cost-free, instant) with LLM intelligence (high-value reasoning) for enterprise call analytics.


📋 Quick Overview

Aspect Details
Purpose Analyze customer/internal calls to extract topics, sentiment, risks, and strategic insights
Architecture Hybrid: local models (Hugging Face, spaCy) + LLM (Claude/OpenAI)
Input Transcript directories with meeting-info.json, transcript.json, summary.json
Output JSON report + PowerPoint slides with analytics & insights
Scale Processes 1-1000s of calls; LLM calls bounded regardless of volume

🏗️ Architecture Diagram

┌──────────────────────────────────────────────────────────────────────┐
│                    TRANSCRIPT INTELLIGENCE AGENT v3                  │
└──────────────────────────────────────────────────────────────────────┘

                            INPUT LAYER
                                │
                ┌───────────────┴───────────────┐
                │                               │
          ┌─────▼────────┐          ┌──────────▼──────────┐
          │ Transcript   │          │ Meeting Info        │
          │ (JSON)       │          │ Summary (JSON)      │
          └─────┬────────┘          └──────────┬──────────┘
                │                               │
                └───────────────┬───────────────┘
                                │
                        ┌───────▼──────────┐
                        │ Validation Layer │
                        └───────┬──────────┘
                                │
                    ┌───────────┴──────────────┐
                    │                          │
        ┌───────────▼──────────────┐  ┌──────▼──────────┐
        │ Call Type Detection      │  │ Full Text Build │
        │ (Rule-based)             │  │ (Join Sentences)│
        └───────────┬──────────────┘  └──────┬──────────┘
                    │                         │
                    └───────────┬─────────────┘
                                │
        ┌───────────────────────▼────────────────────────┐
        │         PER-CALL HYBRID ANALYSIS LAYER         │
        │         (ONE ANALYSIS PER TRANSCRIPT)          │
        ├────────────────────────────────────────────────┤
        │  LOCAL MODELS (Cost: load-time only)           │
        │  ├─ Topic Classification (BART zero-shot)      │
        │  ├─ Topic Mapping (sentence-transformers)      │
        │  ├─ Sentiment Analysis (DistilBERT)            │
        │  ├─ Action Item Extraction (spaCy NER)         │
        │  ├─ Risk Keyword Scoring (regex + heuristics)  │
        │  └─ Speaker Engagement (turn counts)           │
        │                                                 │
        │  + Optional: Per-Call LLM Summary               │
        │    (Disabled by default — expensive)           │
        └────────────────────────┬─────────────────────┘
                                 │
                    Per-Call Analysis JSON
                (topic, sentiment, risks, actions)
                                 │
                    ┌────────────┴─────────────┐
                    │                          │
                    ▼                          ▼
        ┌─────────────────────┐    ┌───────────────────┐
        │ All Transcripts     │    │ All Analyses      │
        │ (list of dicts)     │    │ (list of dicts)   │
        └─────────────────────┘    └───────────────────┘
                    │                          │
                    └────────────┬─────────────┘
                                 │
        ┌────────────────────────▼─────────────────────┐
        │   CROSS-CALL INSIGHTS LAYER (1 LLM CALL)    │
        ├──────────────────────────────────────────────┤
        │ Aggregates:                                  │
        │  • Topic distribution (call counts)          │
        │  • Sentiment trends by call type             │
        │  • Risk flags (consolidated list)            │
        │  • Feature requests (from actions)           │
        │  • Call digest (top 8 calls by risk/sentiment)│
        │                                              │
        │ LLM Generates:                               │
        │  • Executive summary                         │
        │  • Strategic insights (with evidence)        │
        │  • Risk assessment                           │
        │  • Opportunities                             │
        │  • Stakeholder actions (Sales, Product, etc.)│
        └────────────────────────┬──────────────────────┘
                                 │
                    Cross-Call Insights JSON
                 (executive_summary, insights,
                   risks, opportunities, actions)
                                 │
        ┌────────────────────────▼─────────────────────┐
        │   SLIDE CONTENT LAYER (1 LLM CALL)          │
        ├──────────────────────────────────────────────┤
        │ Input:                                       │
        │  • Statistics (aggregated counts)            │
        │  • Executive summary                         │
        │  • Top insights                              │
        │  • Stakeholder actions                       │
        │  • Per-call digest                           │
        │                                              │
        │ LLM Generates Structured JSON:               │
        │  • Slide titles & subtitles                  │
        │  • Headline statistics                       │
        │  • Key findings (bullet points)              │
        │  • Charts: pie (topics), bar (call types)    │
        │  • Risk themes (top + secondary)             │
        │  • Expansion opportunities                   │
        │  • Impact table (customer-level signals)     │
        └────────────────────────┬──────────────────────┘
                                 │
                        JSON with Slide Schema
                                 │
        ┌────────────────────────▼─────────────────────┐
        │         OUTPUT GENERATION LAYER              │
        ├──────────────────────────────────────────────┤
        │  JSON Report: agent_analysis_results_v3.json │
        │  ├─ Metadata (timestamps, config)            │
        │  ├─ Statistics (call counts, topics)         │
        │  ├─ Individual analyses (all calls)          │
        │  ├─ Cross-call insights                      │
        │  └─ Failed calls (with errors)               │
        │                                              │
        │  PowerPoint: generate_slide.py               │
        │  ├─ Loads results JSON                       │
        │  ├─ Passes to build_deck.js (Node)           │
        │  └─ Outputs: Customer_Call_Intelligence...   │
        │             _Run_Summary.pptx                │
        └──────────────────────────────────────────────┘


🔌 Configuration & Environment

env vars

# Paths
DATASET_PATH=./dataset              # Where transcripts live
OUTPUT_PATH=./outputs               # Where results go

# LLM Provider
LLM_PROVIDER=openai                 # "openai" (Claude not yet in LLMClient.__init__)
OPENAI_API_KEY=sk-...               # Your OpenAI key

# Feature Flags
USE_LOCAL_CLASSIFIER=true           # BART zero-shot for topic
USE_LOCAL_SENTIMENT=true            # DistilBERT for sentiment
USE_LOCAL_NER=true                  # spaCy for action items + risks
PER_CALL_LLM_SUMMARY=false          # Expensive; default off

# Models
OPENAI_MODEL=gpt-4o-mini
TAG_CACHE_PATH=./tag_topic_cache.json

.env File Example

DATASET_PATH=./dataset
OUTPUT_PATH=./outputs
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o-mini
USE_LOCAL_CLASSIFIER=true
USE_LOCAL_SENTIMENT=true
USE_LOCAL_NER=true
PER_CALL_LLM_SUMMARY=false
TAG_CACHE_PATH=./tag_topic_cache.json

🚀 Usage

Run Full Analysis Pipeline

python orchestrator.py

Output:

  • outputs/agent_analysis_results_v3.json — Complete analysis
  • Console: progress, summary stats, insights

Generate PowerPoint

python generate_slide.py outputs/agent_analysis_results_v3.json outputs/my_deck.pptx

Or with defaults:

python generate_slide.py

Run Individual Modules (for testing)

from config import DATASET_PATH
from transcript_loader import load_transcript
from local_analyzers import classify_sentiment_local

# Load one call
t = load_transcript(DATASET_PATH / "call_0")

# Analyze sentiment
result = classify_sentiment_local(t["full_text"], t["sentences"])
print(result["sentiment_label"], result["sentiment_score"])

📈 Performance Notes

Stage Time Cost Notes
Load (N calls) ~0.1s per call $0 Sequential file I/O
Local analysis (N calls) ~2–5s per call $0 Model load is one-time cost
Cross-call insights (1×) ~2–3s ~$0.01 Fixed prompt size
Slide content (1×) ~2–3s ~$0.01 Fixed prompt size
Total (100 calls) ~10–15 min ~$0.02 Dominated by local model load

Scaling:

  • 1–10 calls: ~1 min
  • 100 calls: ~10 min
  • 1000 calls: ~100 min (model load amortized)

Version: 3.0 (Modularized)
Last Updated: 2026-06-16
License: Proprietary

About

Transcript Intelligence Agent v3 - Modularized Python application for call analysis using hybrid local + LLM approach

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages