Skip to main content

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 leads table.
  • 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 calls table 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

ToolUse in this application
PythonMain runtime for all services
LiveKit AgentsVoice-agent runtime and room/session handling
LiveKit SIPConnects phone calls to LiveKit rooms
VobizSIP provider used to dial and receive PSTN phone calls
Sarvam AISTT, LLM, and TTS stack for the Sarvam agent mode
OpenAI RealtimeLow-latency realtime voice conversation mode
PostgreSQLPersistent lead, call, retry, and qualification storage
asyncpgAsync PostgreSQL driver
aiohttp/httpxHTTP servers and API integrations
StreamlitInternal lead pipeline and call-minute dashboards
Docker ComposeProduction-style multi-service runtime
Talking ShopsCRM destination for qualified follow-up tasks
IndiaMART APIPolling lead source
Facebook Graph/WebhooksLead Ads and Page message lead source

Service Map

Lead sources
  -> lead_fetcher.py / Streamlit CSV upload
  -> PostgreSQL leads table
  -> scheduler.py
  -> LiveKit SIP outbound participant
  -> Vobiz trunk / phone network
  -> LiveKit room: ignitech-lead-{lead_id}
  -> agent.py or agent_realtime.py
  -> PostgreSQL calls table
  -> talkingshops_pusher.py
  -> Talking Shops CRM

Repository Layout

FilePurpose
agent.pySarvam-based LiveKit voice agent
agent_realtime.pyOpenAI Realtime-based LiveKit voice agent
db.pyPostgreSQL schema, connection pool, and DB helper functions
lead_fetcher.pyIndiaMART poller and Facebook webhook server
scheduler.pyLead polling, calling-window enforcement, SIP call trigger, CRM push loop
sip_setup.pyLiveKit SIP trunk setup, listing, deletion, and manual test calls
talkingshops_pusher.pyFormats and pushes qualified calls to Talking Shops
streamlit_app.pyInternal pipeline dashboard and CSV lead upload
pages/minutes.pyStreamlit page for successful call minutes
token_server.pyLiveKit token server for browser/local testing
docker-compose.ymlDatabase, agent, fetcher, scheduler, dashboard, and token server services
.env.exampleFull configuration template