Bot WA AI untuk Lead Qualification
Cara membuat bot AI WhatsApp untuk qualify leads otomatis. Scoring, segmentasi, handover ke sales. Tutorial lengkap!
AI bisa qualify leads 24/7!
Daripada sales buang waktu dengan leads tidak qualified, biarkan AI yang filter, score, dan prioritaskan leads untuk kamu.
Apa Itu Lead Qualification?
📊 LEAD QUALIFICATION:
DEFINISI:
Proses menentukan apakah prospek
layak difollow-up oleh sales team.
TANPA QUALIFICATION:
- Sales contact semua leads
- Buang waktu dengan yang tidak serius
- Conversion rate rendah
- Tim overwhelmed
DENGAN AI QUALIFICATION:
- Filter otomatis 24/7
- Prioritas leads terbaik
- Sales fokus yang ready
- Conversion rate tinggiFramework BANT
🎯 BANT QUALIFICATION:
B - BUDGET
"Berapa budget yang disiapkan?"
• Ada budget ✅
• Belum ada budget ⚠️
• Tidak ada budget ❌
A - AUTHORITY
"Apakah Anda decision maker?"
• Decision maker ✅
• Influencer ⚠️
• No authority ❌
N - NEED
"Apa masalah yang ingin diselesaikan?"
• Clear need ✅
• Vague need ⚠️
• No need ❌
T - TIMELINE
"Kapan rencana implementasi?"
• < 1 bulan ✅
• 1-3 bulan ⚠️
• > 3 bulan / tidak tahu ❌Implementasi AI Lead Qualifier
System Prompt:
javascript
const LEAD_QUAL_PROMPT = `Kamu adalah AI assistant untuk [COMPANY] yang bertugas melakukan lead qualification.
TENTANG [COMPANY]:
- Software CRM untuk bisnis
- Harga mulai Rp 500.000/bulan
- Target: Bisnis dengan 5+ karyawan
TUGAS KAMU:
1. Sapa dengan ramah dan profesional
2. Tanyakan kebutuhan mereka
3. Kumpulkan info BANT secara natural:
- Budget (kemampuan bayar)
- Authority (decision maker atau bukan)
- Need (kebutuhan spesifik)
- Timeline (kapan butuh)
4. Score lead berdasarkan jawaban
5. Jika qualified, tawarkan demo/meeting
CARA BERTANYA (Natural, tidak interogasi):
- "Boleh tau bisnis kakak bergerak di bidang apa?"
- "Saat ini pakai sistem apa untuk manage customer?"
- "Ada target kapan mau mulai pakai sistem baru?"
- "Kalau boleh tau, budget yang disiapkan sekitar berapa?"
SCORING:
- Hot Lead: 3-4 BANT terpenuhi
- Warm Lead: 2 BANT terpenuhi
- Cold Lead: 0-1 BANT terpenuhi
OUTPUT FORMAT:
Setiap akhir conversation, generate summary dalam format:
[LEAD_SCORE: HOT/WARM/COLD]
[BUDGET: value/unknown]
[AUTHORITY: yes/no/unknown]
[NEED: description]
[TIMELINE: value/unknown]
[NOTES: additional info]
Jangan tampilkan format ini ke user, simpan internal.`;Full Implementation:
javascript
const OpenAI = require('openai');
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
// Store lead data
const leadData = new Map();
async function qualifyLead(userId, userMessage) {
// Initialize lead data if new
if (!leadData.has(userId)) {
leadData.set(userId, {
conversation: [],
bant: {
budget: null,
authority: null,
need: null,
timeline: null
},
score: null,
qualified: false
});
}
const lead = leadData.get(userId);
lead.conversation.push({ role: 'user', content: userMessage });
// AI response with qualification
const response = await openai.chat.completions.create({
model: 'gpt-4o',
messages: [
{ role: 'system', content: LEAD_QUAL_PROMPT },
...lead.conversation
],
temperature: 0.7
});
const aiResponse = response.choices[0].message.content;
// Extract BANT data if present
const bantData = extractBANTData(aiResponse);
if (bantData) {
updateLeadBANT(lead, bantData);
}
// Calculate score
lead.score = calculateLeadScore(lead.bant);
// Clean response (remove internal tags)
const cleanResponse = aiResponse
.replace(/\[LEAD_SCORE:.*?\]/g, '')
.replace(/\[BUDGET:.*?\]/g, '')
.replace(/\[AUTHORITY:.*?\]/g, '')
.replace(/\[NEED:.*?\]/g, '')
.replace(/\[TIMELINE:.*?\]/g, '')
.replace(/\[NOTES:.*?\]/g, '')
.trim();
lead.conversation.push({ role: 'assistant', content: cleanResponse });
// Check if qualified and ready for handover
if (lead.score === 'HOT' && !lead.qualified) {
lead.qualified = true;
await notifySalesTeam(userId, lead);
}
return cleanResponse;
}
function calculateLeadScore(bant) {
let score = 0;
if (bant.budget && bant.budget !== 'unknown') score++;
if (bant.authority === 'yes') score++;
if (bant.need && bant.need !== 'unknown') score++;
if (bant.timeline && ['immediate', '1_month', '1-3_months'].includes(bant.timeline)) score++;
if (score >= 3) return 'HOT';
if (score >= 2) return 'WARM';
return 'COLD';
}
async function notifySalesTeam(userId, lead) {
const summary = `
🔥 HOT LEAD ALERT!
📱 WhatsApp: ${userId}
📊 Score: ${lead.score}
BANT Summary:
💰 Budget: ${lead.bant.budget || 'Unknown'}
👤 Authority: ${lead.bant.authority || 'Unknown'}
📋 Need: ${lead.bant.need || 'Unknown'}
⏰ Timeline: ${lead.bant.timeline || 'Unknown'}
Recent conversation attached.
`;
// Send to sales team (Slack, email, etc)
await sendToSlack(process.env.SALES_CHANNEL, summary);
// Or send WhatsApp to sales manager
await sendWhatsApp(process.env.SALES_MANAGER, summary);
}Conversation Flow
Natural Qualification:
👤 User: Halo, mau tanya soal software CRM
🤖 Bot: Hai! Terima kasih sudah menghubungi [COMPANY] 😊
Boleh tau dulu, bisnis kakak bergerak di bidang apa?
Dan saat ini tim sales-nya ada berapa orang?
---
👤 User: Bisnis retail, ada 10 orang sales
🤖 Bot: Wah retail dengan 10 sales,
pasti butuh sistem yang bisa track semua activity ya!
Saat ini pakai cara apa untuk manage leads dan
follow-up customer? Excel, atau sudah ada sistem?
[NEED: CRM untuk manage 10 sales retail]
---
👤 User: Masih manual pakai excel, ribet banget
🤖 Bot: Ah iya, Excel memang jadi ribet kalau
tim sudah mulai besar 😅
Btw, kalau boleh tau, ada timeline kapan
mau mulai pakai sistem yang lebih proper?
Dan dari sisi budget, sudah ada gambaran?
---
👤 User: Maunya bulan depan. Budget sekitar 1-2 juta/bulan
🤖 Bot: Perfect! Budget 1-2 juta sangat cukup untuk
solusi lengkap kami 👍
Paket Professional kami Rp 1.5jt/bulan sudah include
untuk 10 users + training + support.
Oh ya, untuk pembelian software seperti ini,
kakak yang langsung decide atau perlu approval atasan?
[BUDGET: 1-2jt/bulan]
[TIMELINE: next month]
---
👤 User: Saya ownernya, jadi saya yang decide
🤖 Bot: Mantap! Berarti bisa langsung diskusi detail ya 😊
[AUTHORITY: yes]
[LEAD_SCORE: HOT]
Gimana kalau kita jadwalkan demo 30 menit?
Saya bisa tunjukkan langsung bagaimana [COMPANY]
bisa bantu manage 10 sales team kakak.
Available kapan yang nyaman?
- Besok jam 10 atau 2 siang?
- Atau pilih waktu lain?Lead Scoring Dashboard
javascript
// API untuk dashboard
app.get('/api/leads', async (req, res) => {
const leads = [];
for (const [userId, data] of leadData.entries()) {
leads.push({
userId,
score: data.score,
bant: data.bant,
qualified: data.qualified,
lastContact: data.lastContact,
conversationCount: data.conversation.length
});
}
// Sort by score priority
leads.sort((a, b) => {
const priority = { HOT: 3, WARM: 2, COLD: 1 };
return priority[b.score] - priority[a.score];
});
res.json({
summary: {
total: leads.length,
hot: leads.filter(l => l.score === 'HOT').length,
warm: leads.filter(l => l.score === 'WARM').length,
cold: leads.filter(l => l.score === 'COLD').length
},
leads
});
});Automated Actions
javascript
// Automated actions based on score
async function processLeadActions(userId, lead) {
switch (lead.score) {
case 'HOT':
// Immediate sales notification
await notifySalesTeam(userId, lead);
// Add to priority queue
await addToPriorityQueue(userId);
// Send calendar link
await sendCalendarLink(userId);
break;
case 'WARM':
// Add to nurture sequence
await addToNurtureSequence(userId);
// Schedule follow-up in 3 days
await scheduleFollowUp(userId, 3);
break;
case 'COLD':
// Add to long-term nurture
await addToLongTermNurture(userId);
// Send educational content
await sendEducationalContent(userId);
break;
}
}Best Practices
DO ✅
- Tanya secara natural, bukan interogasi
- Berikan value di setiap response
- Handover cepat untuk hot leads
- Nurture warm/cold leads
- Track dan optimizeDON'T ❌
- Terlalu banyak pertanyaan sekaligus
- Terlalu sales-y di awal
- Abaikan cold leads
- Skip follow-up
- Tidak ada human handoverFAQ
Berapa lama proses qualification?
3-5 pertanyaan natural dalam 1 conversation. Sekitar 5-10 menit.
Semua leads harus di-qualify?
Tergantung volume. High volume: qualify semua. Low volume: bisa langsung ke sales.
Kesimpulan
AI Lead Qualification = Sales lebih produktif!
| Manual | AI Qualification |
|---|---|
| Time consuming | 24/7 automated |
| Inconsistent | Standardized |
| Miss hot leads | Prioritized |
| Low conversion | High conversion |