Documentation Index
Fetch the complete documentation index at: https://docs.spn.wtf/llms.txt
Use this file to discover all available pages before exploring further.
What This Application Does
Ignitech AI Caller is an automated outbound calling system for lead qualification. It receives leads from sources such as IndiaMART, Facebook Lead Ads, Facebook Page messages, and CSV uploads; stores them in PostgreSQL; calls valid phone numbers through LiveKit SIP using a Vobiz trunk; runs an AI voice agent; saves the structured call outcome; and pushes qualified leads into Talking Shops CRM. The application is built for sales teams that need a repeatable first qualification call before a human follows up.Main Outcomes
- New leads are collected into one
leadstable. - The scheduler calls leads only during configured calling days and hours.
- A voice agent speaks with the lead and collects qualification answers.
- Each call attempt is stored in the
callstable with status, duration, failure reason, and qualification JSON. - Qualified calls are pushed to Talking Shops as follow-up tasks.
- Rejected, unanswered, stale, or failed calls can be retried with limits.
- Streamlit dashboards show lead pipeline, call status, pushed records, and call-minute usage.
Core Technologies
| Tool | Use in this application |
|---|---|
| Python | Main runtime for all services |
| LiveKit Agents | Voice-agent runtime and room/session handling |
| LiveKit SIP | Connects phone calls to LiveKit rooms |
| Vobiz | SIP provider used to dial and receive PSTN phone calls |
| Sarvam AI | STT, LLM, and TTS stack for the Sarvam agent mode |
| OpenAI Realtime | Low-latency realtime voice conversation mode |
| PostgreSQL | Persistent lead, call, retry, and qualification storage |
| asyncpg | Async PostgreSQL driver |
| aiohttp/httpx | HTTP servers and API integrations |
| Streamlit | Internal lead pipeline and call-minute dashboards |
| Docker Compose | Production-style multi-service runtime |
| Talking Shops | CRM destination for qualified follow-up tasks |
| IndiaMART API | Polling lead source |
| Facebook Graph/Webhooks | Lead Ads and Page message lead source |
Service Map
Repository Layout
| File | Purpose |
|---|---|
agent.py | Sarvam-based LiveKit voice agent |
agent_realtime.py | OpenAI Realtime-based LiveKit voice agent |
db.py | PostgreSQL schema, connection pool, and DB helper functions |
lead_fetcher.py | IndiaMART poller and Facebook webhook server |
scheduler.py | Lead polling, calling-window enforcement, SIP call trigger, CRM push loop |
sip_setup.py | LiveKit SIP trunk setup, listing, deletion, and manual test calls |
talkingshops_pusher.py | Formats and pushes qualified calls to Talking Shops |
streamlit_app.py | Internal pipeline dashboard and CSV lead upload |
pages/minutes.py | Streamlit page for successful call minutes |
token_server.py | LiveKit token server for browser/local testing |
docker-compose.yml | Database, agent, fetcher, scheduler, dashboard, and token server services |
.env.example | Full configuration template |