Skip to main content

A package for extracting structured fields from call transcripts and evaluating conversation quality with confidence scores

Project description

Automatic Goggles Logo

Automatic Goggles

PyPI version Python 3.8+ License: MIT Downloads

Post-Call Analysis & Conversational Evaluation

Extract structured fields from transcripts with confidence scores and evaluate conversation quality using Assertive LLM-as-a-Judge

Automatic-Goggles? | Installation | Quick Start | Features | Use-Cases


🎯 What is Automatic Goggles?

Automatic Goggles is a lightweight, production-ready Python package for analyzing conversation transcripts. It provides two core capabilities:

1. 🔍 Field Extraction

Extract structured data (names, emails, dates, custom fields) from transcripts with confidence scores

Field Extraction

2. ⚖️ Conversation Evaluation

Assess conversation quality against custom assertions using LLM-as-a-Judge

Asserts Evaluation

Built for voice agent post-call analysis, customer support quality assurance, and conversational AI evaluation.


🚀 Installation

pip install automatic-goggles

Requires Python 3.8+

🚀 Examples

Field Extraction in 30 Seconds

from transtype import TranscriptProcessor

fields = [
    {
        "field_name": "agent_email",
        "field_type": "string",
        "format_example": "agent@company.com",
        "field_description": "The agent's email address for follow-up communication"
    },
    {
        "field_name": "agent_name",
        "field_type": "string",
        "format_example": "John Doe",
        "field_description": "Full name of the customer service agent"
    }
]

processor = TranscriptProcessor(
    api_key="your-openai-api-key",
    fields=fields,
    include_reasoning=True
)

conversation = {
    "messages": [
        {"role": "assistant", "content": "My name is Sarah Chen, you can reach me at sarah@example.com"},
        {"role": "user", "content": "Thanks, I'll email you"}
    ]
}

result = processor.process(conversation)

Output:

{
    "fields": [
        {
            "field_name": "agent_email",
            "field_value": "sarah@example.com",
            "field_confidence": 0.92,
            "field_reason": "Email explicitly mentioned by agent"
        },
        {
            "field_name": "agent_name",
            "field_value": "Sarah Chen",
            "field_confidence": 0.95,
            "field_reason": "Agent introduced herself by name"
        }
    ]
}

Conversation Evaluation in 30 Seconds

from transtype import AssertsEvaluator

evaluator = AssertsEvaluator(
    api_key="your-openai-api-key",
    evaluation_steps=[
        "Did the agent greet the customer politely?",
        "Did the agent ask clarifying questions?",
        "Did the agent resolve the customer's issue?",
        "Did the agent offer additional help?"
    ],
    threshold=0.7  # Pass threshold (0-1)
)

conversation = {
    "messages": [
        {"role": "user", "content": "My internet isn't working"},
        {"role": "assistant", "content": "Good morning! I'm sorry to hear that. When did this issue start?"},
        {"role": "user", "content": "This morning"},
        {"role": "assistant", "content": "Let me help you troubleshoot. Can you check if your router is powered on?"}
    ]
}

result = evaluator.evaluate(conversation)

Output:

{
    "result": {
        "score": 0.88,
        "success": true,
        "reason": "Agent demonstrated professionalism, asked clarifying questions, and initiated troubleshooting"
    }
}

🔥 Features

Field Extraction

  • Confidence-Weighted Scoring - Log probability-based confidence scores (0-1)
  • Contextual Descriptions - Improve accuracy with detailed field descriptions
  • Flexible Reasoning - Toggle explanations on/off for performance/cost optimization
  • Multi-Field Support - Extract multiple fields in one pass
  • Format Examples - Guide extraction with format examples

Conversation Evaluation

  • LLM-as-a-Judge - Research-backed evaluation using GPT models
  • Custom Assertions - Define your own quality criteria
  • Weighted Scoring - Confidence-weighted scores
  • Pass/Fail Thresholds - Configurable success criteria
  • Multi-Turn Support - Evaluate entire conversations

Technical Highlights

  • Fast & Cost-Effective - Optional reasoning for performance tuning
  • 🧪 Production-Ready - Confidence scores for reliability filtering
  • 📊 Transparent - Get reasoning explanations for every extraction/evaluation

💡 Use Cases

Use Case Description
Voice Agent Post-Call Analysis Extract key information (phone numbers, appointment dates, action items) after customer calls
Quality Assurance Evaluate if agents followed scripts, were polite, and resolved issues
Compliance Monitoring Verify agents disclosed required information (privacy policies, terms)
Training & Coaching Identify coaching opportunities by evaluating agent performance against best practices
Customer Insights Extract sentiment, pain points, and feature requests from support transcripts

🛠️ Field Definition Schema

Each field requires:

Property Required Description
field_name ✅ Yes Unique identifier for the field
field_type ✅ Yes Data type (currently supports "string")
format_example ✅ Yes Example of expected format (e.g., "(555) 123-4567")
field_description ✅ Yes Detailed context to guide extraction accuracy

Example:

{
    "field_name": "customer_phone",
    "field_type": "string",
    "format_example": "(555) 123-4567",
    "field_description": "The customer's primary phone number for callbacks. Look for 10-digit numbers in various formats."
}

🤝 Contributing

We welcome contributions! Here's how you can help:

  1. Report Bugs - Open an issue on GitHub
  2. Feature Requests - Suggest new features via issues
  3. Pull Requests - Submit PRs for bug fixes or features
  4. Documentation - Improve docs or add examples

📝 License

MIT License - see LICENSE for details


🙏 Acknowledgments


📬 Contact & Support


Built with ❤️ by developers, for developers

⭐ Star on GitHub | 📦 Install Now

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

automatic_goggles-0.8.0.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

automatic_goggles-0.8.0-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file automatic_goggles-0.8.0.tar.gz.

File metadata

  • Download URL: automatic_goggles-0.8.0.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for automatic_goggles-0.8.0.tar.gz
Algorithm Hash digest
SHA256 672899ddfcf8967e92c2e1598952f6c31af8bac258b239d95f25a5020ef0c5ad
MD5 dcc369354abb003b5ec540b9e14f19ea
BLAKE2b-256 24b84876f63e082cc515fe0c5d11477d0f0d383b8cc96507d13f09060a7d7cbd

See more details on using hashes here.

File details

Details for the file automatic_goggles-0.8.0-py3-none-any.whl.

File metadata

File hashes

Hashes for automatic_goggles-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 54998e1900f44f3d067ceca695be34b4e3f326a1e2f5636ed23eb18667014f5c
MD5 2ea1946e3f0976aba80c7e080b48175b
BLAKE2b-256 2e5fbfadb8d202fdb147862b92f4896da275ed486aa39faf4c6e1be7b7ad35ef

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page