Vaani is a production-grade, voice-native AI platform that redefines debt recovery. By fusing LiveKit's real-time transport with Groq's lightning-fast inference and Deepgram's voice intelligence, Vaani creates an autonomous negotiator that is ethical, compliant, and startlingly human.
features β’ architecture β’ call-flow β’ installation β’ usage
- Sub-500ms Latency: Powered by Groq (Llama 3) and Deepgram Nova-2, providing instant responses that feel like a natural conversation.
- Full Duplex: Debtors can interrupt the agent at any time, just like in a real human call.
- Dynamic Personas:
- Rachel: Empathetic and patient (Good for hardship cases).
- Orion: Firm and direct (Good for strategic defaulters).
Vaani doesn't just talk; it analyzes. The integrated "Sherlock" engine monitors every second of the call for compliance:
- FDCPA Guardrails: Instantly flags Bankruptcy, Attorney Representation, or Cease & Desist triggers.
- Matrix Profiling: Classifies debtors into strategic quadrants (e.g., Hardship Case vs Strategic Defaulter).
- Live Tags: Autonomously tags calls as Promise to Pay (PTP), Refusal, or Dispute.
- Dark Mode CLI Interface: Watch the live transcript unfold in a cinematic, hacker-style terminal.
- Real-time Visualization: Risk badges pop up instantly as the AI detects intent.
- Analytics: Track recovery rates and risk scores across thousands of calls.
Vaani operates on a high-performance, modular 3-tier architecture.
| Component | Technology Stack | Purpose |
|---|---|---|
| Frontend | React 18, Vite, Tailwind CSS | The "Mission Control" dashboard for dispatch and monitoring. |
| Backend API | Python, FastAPI | Orchestrates calls, manages sip_handler, and serves API endpoints. |
| Voice Agent | LiveKit Agents, Groq, Deepgram | The "Brain" that connects to the audio stream and generates speech. |
sequenceDiagram
participant User as π€ Admin
participant Frontend as π» Dashboard
participant API as π FastAPI Server
participant LK as π‘ LiveKit Cloud
participant Agent as π€ AI Worker
participant Debtor as π± Debtor Phone
User->>Frontend: Click "Start Call"
Frontend->>API: POST /api/call
API->>LK: Create Room & Generate Token
LK-->>Agent: Job Triggered
Agent->>LK: Connect to Room
Agent->>Debtor: SIP Dial Out
Debtor-->>Agent: "Hello?"
Agent->>Debtor: "Hi, this is Rachel from RiverLine..."
loop Conversation Loop
Debtor->>Agent: Audio Stream
Agent->>Agent: STT (Deepgram) -> LLM (Groq) -> TTS (Deepgram)
Agent->>Debtor: Audio Response
Agent->>Frontend: Real-time Transcript
end
- Python 3.10+ (Essential - 3.13 is NOT supported yet)
- Node.js 18+
- LiveKit Cloud Account
- API Keys: Groq, Deepgram, LiveKit
git clone https://github.com/vasu-devs/Vaani.git
cd VaaniCreate a .env.local file in the backend/ directory (or root, the runner handles it):
# LiveKit Config
LIVEKIT_URL=wss://your-project.livekit.cloud
LIVEKIT_API_KEY=API_...
LIVEKIT_API_SECRET=Secret_...
# AI Models
GROQ_API_KEY=gsk_...
DEEPGRAM_API_KEY=...
# Telephony (Optional)
SIP_OUTBOUND_TRUNK_ID=ST_...We provide a unified runner to handle everything.
# 1. Install Backend Dependencies
# Note: Ensure you are using Python 3.10/3.11/3.12
pip install -r backend/requirements.txt
# 2. Install Frontend Dependencies
cd frontend
npm install
cd ..
# 3. RUN!
python dev.pyThis will launch:
- API Server: http://localhost:8001
- Frontend: http://localhost:5173
- Agent Worker: Background process
We have included Dockerfiles to make deployment easy.
- Fork this repo.
- Create a new App in DigitalOcean.
- Service 1 (API): Select
backend/Dockerfile. Port8000.- Command:
python -m uvicorn run_server:app --host 0.0.0.0 --port 8000
- Command:
- Service 2 (Agent): Add a component. Select
backend/Dockerfile. Type: Worker.- Command:
python run_agent.py start
- Command:
- Service 3 (Frontend): Add a component. Select
frontend/Dockerfile. Port80. - Environment Variables: Copy your
.env.localto the App-Level Environment Variables.
To verify the production build on your machine:
docker compose -f docker-compose.prod.yml up --buildVaani/
βββ backend/ # Python Server & Agent Code
β βββ app/ # Main Application Logic
β β βββ api/ # FastAPI Routes
β β βββ services/ # Business Logic (SIP, Agents)
β β βββ core/ # Config & Utils
β βββ run_agent.py # Worker Entrypoint
β βββ run_server.py # API Entrypoint
β βββ requirements.txt # Python Deps
β
βββ frontend/ # React Application
β βββ src/
β β βββ components/ # UI Components (Sidebar, Terminal...)
β β βββ App.jsx # Main View
β βββ package.json # JS Deps
β
βββ dev.py # Unified Development Runner
| Issue | Solution |
|---|---|
| ImportError: cannot import name 'api' from 'livekit' | Ensure you have installed livekit-api and NOT livekit-server-sdk. Check backend/requirements.txt. |
| Agent Not Joining | Check .env.local credentials. Run python backend/run_agent.py dev manually to see logs. |
| No Audio | Verify you have livekit-plugins-deepgram and livekit-plugins-groq installed. |
| Python Version Error | LiveKit SDK currently requires Python < 3.13. Use Python 3.10, 3.11, or 3.12. |
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Built with π€ by Vasudev.