Bot WA AI untuk Lead Qualification

Cara membuat bot AI WhatsApp untuk qualify leads otomatis. Scoring, segmentasi, handover ke sales. Tutorial lengkap!

Bot WA AI untuk Lead Qualification
Bot WA AI untuk Lead Qualification

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 tinggi

Framework 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 optimize

DON'T ❌

- Terlalu banyak pertanyaan sekaligus
- Terlalu sales-y di awal
- Abaikan cold leads
- Skip follow-up
- Tidak ada human handover

FAQ

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!

ManualAI Qualification
Time consuming24/7 automated
InconsistentStandardized
Miss hot leadsPrioritized
Low conversionHigh conversion

Setup Lead Qualifier →


Artikel Terkait