Automatic Goggles
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
2. ⚖️ Conversation Evaluation
Assess conversation quality against custom assertions using LLM-as-a-Judge
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:
- Report Bugs - Open an issue on GitHub
- Feature Requests - Suggest new features via issues
- Pull Requests - Submit PRs for bug fixes or features
- Documentation - Improve docs or add examples
📝 License
MIT License - see LICENSE for details
🙏 Acknowledgments
- Inspired by DeepEval's ConversationalGEval for confidence-weighted scoring
- Built with DSPy for robust LLM orchestration
- Powered by OpenAI language models
📬 Contact & Support
- GitHub Issues: Report bugs or request features
- Email: ashishorkalra@gmail.com
- Package: PyPI - automatic-goggles
Built with ❤️ by developers, for developers
Metadata
Release files for automatic-goggles 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| automatic_goggles-0.8.0.tar.gz | 11.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| automatic_goggles-0.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.1 kB
Release files / automatic_goggles-0.8.0.tar.gz
| Download URL | automatic_goggles-0.8.0.tar.gz |
|---|---|
| Size | 11.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
672899ddfcf8967e92c2e1598952f6c31af8bac258b239d95f25a5020ef0c5ad
|
|
BLAKE2b-256 checksum How to use checksums |
24b84876f63e082cc515fe0c5d11477d0f0d383b8cc96507d13f09060a7d7cbd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.12
|
Release files / automatic_goggles-0.8.0-py3-none-any.whl
| Download URL | automatic_goggles-0.8.0-py3-none-any.whl |
|---|---|
| Size | 11.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
54998e1900f44f3d067ceca695be34b4e3f326a1e2f5636ed23eb18667014f5c
|
|
BLAKE2b-256 checksum How to use checksums |
2e5fbfadb8d202fdb147862b92f4896da275ed486aa39faf4c6e1be7b7ad35ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.12
|
Security for automatic-goggles 0.8.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.