Real-time TCPA Compliance Copilot for Call Centers
Features • Screenshots • Installation • Usage • Architecture • Rules • LLM Integration • Contributing
Whisperwire is a local-first, real-time compliance monitoring application designed for call center agents. It listens to live call transcripts and provides instant alerts when potential TCPA (Telephone Consumer Protection Act) violations are detected.
- 🔒 100% Local – No data leaves your machine
- ⚡ Real-time Detection – Alerts appear as violations happen
- 🤖 LLM-Powered – Optional local Ollama integration for nuanced analysis
- 📋 11 TCPA Rules – Comprehensive coverage of calling time, DNC, disclosure, and consent regulations
- 🎨 Premium UI – Modern dark theme with glass morphism effects
The primary interface for call center agents. Shows live transcript, real-time compliance alerts, and suggested compliant responses.
Full-featured view during an active call showing compliance score, expanded alert details, call notes, and suggested responses.
When a compliance violation is detected (e.g., customer requests Do Not Call), alerts appear immediately with severity, confidence scores, and suggested responses.
Analytics dashboard for supervisors showing total calls monitored, alert rates, severity breakdowns, and most common rule violations.
Complete library of all 11 TCPA compliance rules with detailed explanations, legal references, and recommended responses.
- Live Transcript – Real-time display of conversation as it happens
- Compliance Score – Dynamic percentage score that updates as alerts are triggered
- Compliance Alerts – Instant notifications with severity levels (High/Medium/Low)
- Evidence Quotes – Exact text that triggered the alert
- Confidence Scores – How certain the system is about each violation
- Suggested Responses – Pre-written compliant phrases to copy and use
- Expandable Alert Details – Click alerts to see "Why It Matters" and suggested fixes
- Call Metadata – Duration, call type, DNC status tracking
- Call Notes – Add notes during the call for documentation
- Call History – View recent calls with scores and alert counts
- Export Transcript – Download call transcript with alerts as text file
- Sound Alerts – Audio notification for high-severity issues (toggleable)
- Keyboard Shortcuts – Enter to add message, Ctrl+Shift+N for notes
- Analytics Summary – Total calls, alerts, and alert rate statistics
- Severity Breakdown – Visual breakdown of High/Medium/Low alerts
- Top Rules Triggered – Which compliance rules are most commonly violated
- Alerts Log – Filterable table of all historical alerts
- Export – Download alerts as JSON or CSV
- 11 TCPA Rules – All major TCPA compliance areas covered
- Search & Filter – Find rules by ID, title, or category
- Category Filters – Filter by Calling Time, DNC, Disclosures, Consent, etc.
- Expandable Details – "Why It Matters", legal references, trigger phrases
- Node.js 18+ (required)
- Rust (only required for desktop app build)
- Ollama (optional, for LLM mode)
The fastest way to run Whisperwire - no Rust required:
# Clone the repository
git clone https://github.com/your-org/whisperwire.git
cd whisperwire/app
# Install dependencies
npm install
# Run in development mode
npm run devThe application will open at http://localhost:3000
To build a standalone desktop application, you need:
- Install Rust from rustup.rs
- Install Tauri prerequisites - see Tauri Prerequisites
Then build the app:
# Build the desktop app
npm run tauri buildThe built executable will be in src-tauri/target/release/
For enhanced compliance detection with local LLM:
# Install Ollama (https://ollama.ai)
# Then pull a model:
ollama pull llama3.2:1b
# Start Ollama server
ollama serveWhen Ollama is running, Whisperwire automatically detects it and enables "LLM Active" mode.
- Click "Start Call" to begin a new monitoring session
- The call timer starts and a unique Call ID is assigned
- Enter transcript segments using the input at the bottom:
- Select speaker (Agent or Customer)
- Type the message
- Press Enter or click Add
When a violation is detected:
-
Alert appears in the Compliance Alerts panel with:
- Severity badge (High/Medium/Low)
- Rule ID (e.g., DNC-001)
- Confidence percentage
-
View details by clicking the alert to see:
- Evidence quote
- Why it matters
- Suggested response
-
Copy response – One-click copy of compliant phrases
Click "End Call" to:
- Stop the timer
- Save all alerts to the database
- Reset for the next call
whisperwire/
├── app/ # Main application
│ ├── src/ # Next.js frontend
│ │ ├── app/ # Pages and layouts
│ │ ├── components/ # React components
│ │ │ ├── AgentView.tsx
│ │ │ ├── AdminView.tsx
│ │ │ └── RulesView.tsx
│ │ ├── lib/ # Utilities
│ │ │ ├── evaluator.ts # Frontend rule evaluation
│ │ │ └── rules.ts # TCPA rule definitions
│ │ └── types/ # TypeScript types
│ │
│ └── src-tauri/ # Rust backend (Tauri)
│ └── src/
│ ├── lib.rs # Main entry, Tauri commands
│ ├── evaluator.rs # Compliance evaluation engine
│ ├── llm.rs # Ollama LLM integration
│ ├── rules.rs # Rule definitions (YAML format)
│ └── database.rs # SQLite storage
│
└── docs/ # Documentation
├── architecture.md
├── ruleset.md
└── images/
| Layer | Technology |
|---|---|
| Frontend | Next.js 16, React 19, TypeScript, Tailwind CSS |
| Animations | Framer Motion |
| Icons | Lucide React |
| State | React useState/useCallback |
| Notifications | React Hot Toast |
| Backend | Tauri 2.x, Rust |
| Database | SQLite (via rusqlite) |
| LLM | Ollama (local) |
Whisperwire includes 11 TCPA compliance rules across 7 categories:
| Rule ID | Title | Severity | Category |
|---|---|---|---|
| TIME-001 | Calling Time Violation | 🔴 High | Calling Time |
| DNC-001 | Customer Requested No Further Calls | 🔴 High | Do Not Call |
| DNC-002 | Agent Continued After DNC Request | 🔴 High | Do Not Call |
| DNC-003 | National DNC List - No Consent | 🔴 High | Do Not Call |
| DISC-001 | Missing Seller Identity Disclosure | 🟡 Medium | Disclosures |
| DISC-002 | Missing Sales Call Nature Disclosure | 🟡 Medium | Disclosures |
| DISC-003 | Missing Product/Service Description | 🟢 Low | Disclosures |
| CONS-001 | Consent Revocation Detected | 🔴 High | Consent |
| IDENT-001 | Missing Callback Number | 🟢 Low | Identification |
| PREC-001 | Prerecorded Voice Without Consent | 🔴 High | Prerecorded |
| REC-001 | Missing Recording Disclosure | 🟡 Medium | Recording |
- Trigger Phrases – Exact phrase matching (e.g., "don't call me again")
- Regex Patterns – Pattern matching for variations (e.g., "do not call", "stop calling")
- Metadata Checks – System data like DNC list status or time zone
When Ollama is running locally, Whisperwire can use an LLM for more nuanced compliance detection:
- Connection Check – App checks for Ollama at
http://localhost:11434 - Model Verification – Confirms a supported model is available
- System Prompt – All enabled rules are converted to YAML and sent as context
- Evaluation – LLM analyzes transcript with full rule knowledge
- Structured Output – JSON response with alerts and suggestions
llama3.2:1b(recommended for speed)llama3.2:3bmistralgemma
| Feature | Rules Mode | LLM Mode |
|---|---|---|
| Speed | ⚡ Instant | ~1-2 seconds |
| Accuracy | Exact matches only | Nuanced understanding |
| False Positives | Lower | May be higher |
| Offline | ✅ Yes | Needs Ollama running |
This application provides compliance risk signals only. It is NOT legal advice.
Compliance requirements depend on jurisdiction and require review by legal counsel. TCPA rules vary by state, call type, and business relationship. Always consult with a qualified attorney before implementing compliance policies.
MIT License - See LICENSE for details.
- Tauri – For the lightweight desktop framework
- Ollama – For local LLM inference
- Lucide – For beautiful icons
- Framer Motion – For smooth animations
Built with ❤️ for compliance teams everywhere
© 2026 Whisperwire • v1.0.0




