Agent Pro is an intelligent lead management system that automates WhatsApp communication and AI-powered voice calls for business leads. It integrates with the Vapi AI calling platform to initiate voice calls and tracks all lead interactions in a SQLite database — all through a clean web dashboard.
Think of it as your personal AI sales agent, working 24/7.
- 📲 WhatsApp Automation — Connects your WhatsApp account via QR code scan and sends automated messages to leads
- 📞 AI Voice Calling — Integrates with Vapi.ai to make intelligent AI-powered calls
- 🗄️ Lead Management — Stores and tracks all leads (name, phone, email, status) in SQLite
- 🔄 Auto Reconnect — Automatically re-initializes WhatsApp if disconnected
- 🖥️ Web Dashboard — Visual frontend to manage leads, view QR codes, and monitor call status
- ⚙️ Config Persistence — Saves API keys and connection state to
config.json
| Layer | Technology |
|---|---|
| Runtime | Node.js |
| Web Framework | Express.js |
| WhatsApp Integration | whatsapp-web.js |
| AI Calling | Vapi.ai API |
| Database | SQLite3 |
| HTTP Client | Axios |
| Frontend | HTML/CSS/JS (static) |
- Node.js
v18+ - A WhatsApp account
- A Vapi.ai account & API key
# Clone the repository
git clone https://github.com/samyuktaap/agent-pro.git
cd agent-pro
# Install dependencies
npm install
# Create a .env file
echo "PORT=3000" > .env
echo "VAPI_API_KEY=your_api_key_here" >> .env
# Start the server
node server.jsOpen http://localhost:3000 in your browser, scan the WhatsApp QR code, and start managing leads!
agent-pro/
├── public/ # Frontend dashboard (HTML/CSS/JS)
├── server.js # Main Express server + WhatsApp + Vapi logic
├── config.json # Persisted API keys and connection state
├── database.sqlite # SQLite database (auto-created on first run)
├── .wwebjs_auth/ # WhatsApp session data (auto-created)
└── package.json # Dependencies
| Variable | Description |
|---|---|
PORT |
Port to run the server on (default: 3000) |
VAPI_API_KEY |
Your Vapi.ai API key |
Pull requests are welcome! For major changes, please open an issue first to discuss what you'd like to change.
Made with ❤️ by Samyuktaa P