Automate outbound sales calls with AI. Built with Vapi, Python & Claude — handles greetings, objections, meeting booking & CRM logging out of the box.
VaakSetu (వాక్సేతు) means "Voice Bridge" in Telugu — a bridge between your business and every lead through intelligent, automated sales conversations.
VaakSetu is an AI-powered voice agent that autonomously handles outbound cold calls end-to-end — from the first greeting to booking a meeting or logging the outcome in your CRM. No human needed on your side.
- 🤖 AI Sales Agent — Powered by Claude (Anthropic) for natural, intelligent conversations
- 📞 Outbound Calling — Triggers real phone calls via Vapi + Twilio
- 🗣️ Natural Voice — ElevenLabs text-to-speech for human-like audio
- 🧠 Objection Handling — Trained to handle common sales objections
- 📅 Meeting Booking — Books demos and follow-ups automatically
- 📋 CRM Logging — Logs call outcomes, notes, and lead quality
- 🔁 Bulk Dialing — Parallel async dialing for high-volume campaigns
- 📊 Webhook Events — Real-time call event handling via FastAPI
- 📱 Voicemail Detection — Leaves custom voicemail messages automatically
- 🔒 Secure — All secrets managed via environment variables
Lead List (CSV/CRM)
│
▼
agent.py ──► Vapi API ──► Prospect's Phone
│
▼
Real-time Pipeline
STT → Claude AI → TTS
│
▼
webhook.py
(FastAPI webhook server)
│
┌───────┴────────┐
▼ ▼
tools.py CRM / Calendar
(book_meeting, (HubSpot, Calendly,
log_outcome, Google Calendar)
transfer_call)
vaaksetu/
├── agent.py # Outbound call trigger + bulk dialer
├── assistant.py # Claude system prompt + function tools definition
├── tools.py # Tool handlers (booking, CRM logging, transfer)
├── webhook.py # FastAPI server for Vapi event handling
├── test_vapi.py # Connection test + call trigger debugger
├── .env.example # Environment variable template
├── requirements.txt # Python dependencies
└── README.md
- Python 3.10+
- Vapi account — $10 free credits on signup
- Anthropic API key
- Twilio account — for phone number
- ngrok — for local webhook tunnel (dev only)
- ElevenLabs account — for voice (optional, Vapi includes basic voices)
git clone https://github.com/yourusername/vaaksetu.git
cd vaaksetupip install -r requirements.txtcp .env.example .envEdit .env with your credentials:
VAPI_API_KEY=your_vapi_private_key
VAPI_PHONE_NUMBER_ID=your_vapi_phone_number_id
VAPI_ASSISTANT_ID=your_vapi_assistant_id
ANTHROPIC_API_KEY=your_anthropic_api_key
WEBHOOK_URL=https://your-ngrok-url.ngrok-free.app/webhook- Go to Vapi Dashboard
- Create a new assistant → Blank Template
- Set model to Anthropic → claude-sonnet-4-20250514
- Paste the system prompt from
assistant.py - Set voice to ElevenLabs → Adam
- Add your webhook URL under Server URL
- Add tools:
book_meeting,log_outcome,transfer_call - Save and copy the Assistant ID
# Terminal 1 — Start ngrok
ngrok http 8000
# Terminal 2 — Start FastAPI webhook server
python -m uvicorn webhook:app --port 8000 --reloadpython test_vapi.py# Single call
python agent.py --phone +917013549646 --name "Test Lead"
# With prospect context
python agent.py --phone +917013549646 --name "Jane" --context "SaaS founder, 20 employees"
# Bulk dial all leads in SAMPLE_LEADS
python agent.py --bulk1. VaakSetu dials the prospect
2. Prospect picks up
3. Alex greets: "Hi, is this [Name]? I'm Alex from [Company]..."
4. Qualifying questions → Value pitch → Objection handling
5. Prospect agrees → book_meeting tool fires → Meeting booked ✅
6. Call ends → log_outcome tool fires → CRM updated ✅
Edit SYSTEM_PROMPT in assistant.py — replace [Company] with your company name and tailor the pitch.
Edit tools.py → handle_log_outcome() — add HubSpot, Salesforce, or Airtable API calls.
Edit tools.py → handle_book_meeting() — add Calendly or Google Calendar integration.
Edit SAMPLE_LEADS in agent.py or load from a CSV:
import csv
with open("leads.csv") as f:
leads = list(csv.DictReader(f)) # columns: phone, name, context
asyncio.run(dial_leads_parallel(leads, concurrency=10))vapi-python
anthropic
fastapi
uvicorn
httpx
requests
python-dotenv
Install all:
pip install vapi-python anthropic fastapi uvicorn httpx requests python-dotenv- Never commit your
.envfile — it's in.gitignore - Use Private Key from Vapi (not Public Key) for server-side calls
- Rotate API keys immediately if accidentally exposed
- Use environment variables — never hardcode secrets in code
- CSV lead import
- Calendly integration
- HubSpot CRM integration
- Real-time dashboard for call monitoring
- A/B testing for opening messages
- Slack alerts on meeting bookings
- Retry logic for unanswered calls
- Call recording transcripts
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.
MIT License — feel free to use, modify, and distribute.
- Vapi — Voice AI infrastructure
- Anthropic Claude — AI brain
- ElevenLabs — Natural voice synthesis
- FastAPI — Webhook server
- Twilio — Telephony
Built with ❤️ from Hyderabad, India 🇮🇳
వాక్సేతు — Voice Bridge