Salah satu automation yang paling high-impact untuk tim sales adalah AI lead qualifier — sistem yang otomatis score setiap inbound lead sebagai HOT, WARM, atau COLD berdasarkan data yang ada.
Di artikel ini saya breakdown cara build-nya dari awal: arsitektur, tools yang dibutuhkan, prompting strategy, dan lessons learned dari project real yang sudah live.
Kenapa Lead Qualification Perlu Di-automate?
Tanpa automation, proses tipikal sebuah tim SDR:
- Lead masuk dari form / webinar / LinkedIn
- SDR buka CRM, lihat data yang ada
- Google nama perusahaan, cek LinkedIn
- “Feel” — ini kayaknya HOT atau enggak
- Assign ke AE atau masuk nurture queue
Masalahnya:
- Inconsistent — scoring bergantung pada SDR yang bertugas, mood, dan pengalaman
- Slow — 10–30 menit per lead kalau dilakukan dengan benar
- Tidak scalable — 100 lead masuk setelah webinar? Tim kewalahan
Dengan AI lead qualifier, setiap lead di-score dalam 30 detik, dengan kriteria yang konsisten, 24/7.
Arsitektur Overview
Form Submission
↓
[n8n Webhook Trigger]
↓
[Data Enrichment] ← Apollo.io / Clearbit
↓
[Claude AI Scoring] ← System prompt + ICP rubric
↓
┌──────────────────┐
↓ ↓
[CRM Entry] [Slack Alert]
(HubSpot/Notion) (SDR channel)
Tools yang dibutuhkan:
- n8n (self-hosted atau cloud)
- Claude AI via Anthropic API
- Apollo.io (enrichment — ada free tier)
- HubSpot atau Notion (CRM)
- Slack (notifikasi)
Step 1: Setup n8n Webhook Trigger
Buat workflow baru di n8n. Tambah node Webhook sebagai trigger.
Method: POST
Path: /lead-qualifier
Response Mode: Immediately
Copy webhook URL — ini yang akan di-hit form submission Pak/Bu.
Test dengan Postman atau Insomnia:
{
"name": "Budi Santoso",
"email": "budi@startup.co.id",
"company": "PT Maju Bersama",
"role": "CEO",
"phone": "+6281234567890",
"message": "Kami butuh automate proses lead generation untuk tim sales 10 orang"
}
Step 2: Data Enrichment via Apollo.io
Setelah dapat data dari form, kita enrich dengan data perusahaan dari Apollo.
Tambah node HTTP Request:
Method: POST
URL: https://api.apollo.io/v1/people/match
Headers:
Content-Type: application/json
X-Api-Key: {{ $env.APOLLO_API_KEY }}
Body:
{
"email": "{{ $json.email }}",
"reveal_personal_emails": false
}
Apollo akan return data seperti:
- Company size (employee count)
- Industry
- Funding stage
- LinkedIn URL
- Technology stack yang digunakan
Simpan key fields ke variable untuk dipakai di step berikutnya.
Step 3: Claude AI Scoring
Ini adalah inti dari workflow. Tambah node HTTP Request untuk call Anthropic API.
URL: https://api.anthropic.com/v1/messages
Method: POST
Headers:
x-api-key: {{ $env.ANTHROPIC_API_KEY }}
anthropic-version: 2023-06-01
content-type: application/json
Body (ini yang paling penting):
{
"model": "claude-opus-4-5",
"max_tokens": 500,
"system": "Kamu adalah AI lead qualifier untuk perusahaan B2B SaaS. Tugasmu: analisis data lead dan berikan score berdasarkan Ideal Customer Profile (ICP) yang diberikan. Selalu respond dalam format JSON yang valid.",
"messages": [
{
"role": "user",
"content": "Berikan lead score untuk data berikut:\n\nLead:\n- Nama: {{ $json.name }}\n- Role: {{ $json.role }}\n- Company: {{ $json.company }}\n- Company Size: {{ $('Apollo').item.json.organization.estimated_num_employees }} karyawan\n- Industry: {{ $('Apollo').item.json.organization.industry }}\n- Funding: {{ $('Apollo').item.json.organization.funding_events[0].type }}\n- Message: {{ $json.message }}\n\nICP kami:\n- Ukuran perusahaan: 20-500 karyawan (ideal: 50-200)\n- Role decision maker: CEO, CTO, VP Sales, Head of Ops\n- Industry: Tech, SaaS, E-commerce, Finance\n- Pain: menyebut automation, efisiensi, atau AI secara eksplisit\n- Funding: Seed ke atas lebih baik\n\nBerikan respons dalam format JSON:\n{\n \"score\": \"HOT|WARM|COLD\",\n \"confidence\": 0-100,\n \"reasoning\": \"2-3 kalimat penjelasan\",\n \"next_action\": \"immediate_call|email_sequence|nurture\",\n \"flags\": [\"positive_signal_1\", \"negative_signal_1\"]\n}"
}
]
}
Hasil dari Claude akan seperti ini:
{
"score": "HOT",
"confidence": 87,
"reasoning": "CEO dari perusahaan 80 karyawan di industri SaaS, explicitly mention automation pain. Company sudah Series A. Role dan company size fit dengan ICP.",
"next_action": "immediate_call",
"flags": ["decision_maker", "explicit_pain_mentioned", "series_a_funded", "company_size_ideal"]
}
Step 4: Parse Response dan Routing
Tambah node Code untuk parse JSON response Claude:
const response = $input.item.json.content[0].text;
const parsed = JSON.parse(response);
return {
score: parsed.score,
confidence: parsed.confidence,
reasoning: parsed.reasoning,
next_action: parsed.next_action,
flags: parsed.flags.join(', ')
};
Kemudian tambah Switch node untuk routing berdasarkan score:
- HOT → immediate Slack alert + CRM entry priority
- WARM → CRM entry + email sequence trigger
- COLD → CRM entry + nurture queue
Step 5: CRM Entry dan Slack Notification
HubSpot Contact Create
Untuk HOT dan WARM lead, create contact di HubSpot:
Operation: Create Contact
Properties:
email: {{ $json.email }}
firstname: {{ $json.name.split(' ')[0] }}
lastname: {{ $json.name.split(' ').slice(1).join(' ') }}
company: {{ $json.company }}
jobtitle: {{ $json.role }}
nexo_lead_score: {{ $('Claude').item.json.score }}
nexo_ai_reasoning: {{ $('Claude').item.json.reasoning }}
Slack Alert untuk HOT Lead
Buat Slack message yang actionable — SDR harus langsung tahu apa yang perlu dilakukan:
🔥 *HOT LEAD — Action Required*
*{{ $json.name }}* — {{ $json.role }} @ {{ $json.company }}
Score: HOT ({{ $('Claude').item.json.confidence }}% confidence)
📋 *AI Reasoning:*
{{ $('Claude').item.json.reasoning }}
✅ *Signals:* {{ $('Claude').item.json.flags }}
📞 *Next Action:* {{ $('Claude').item.json.next_action }}
👉 <https://app.hubspot.com/contacts/{{ $('HubSpot').item.json.id }}|Buka di HubSpot>
Tips Prompt Engineering untuk Lead Scoring
Dari pengalaman build beberapa sistem ini, beberapa hal yang saya pelajari:
1. Definisikan ICP dengan spesifik
Jangan hanya tulis “perusahaan menengah”. Tulis: “50–200 karyawan, industri SaaS/Tech/Ecommerce, sudah Seed funding ke atas”. Semakin spesifik, semakin accurate scoring-nya.
2. Selalu minta reasoning
Claude yang menjelaskan kenapa sebuah lead HOT jauh lebih useful dari sekadar label. SDR bisa prepare konteks yang tepat sebelum cold call.
3. Tambahkan negative signals
Selain positive signals (funding, ukuran perusahaan), definisikan juga red flags: “Freelancer dan konsultan individual tidak fit ICP kami”, “Perusahaan > 1000 karyawan butuh enterprise deal yang tidak kami handle saat ini”.
4. Gunakan confidence threshold
Saya selalu set threshold: confidence < 60% → route ke human review. Better safe than sorry — false positive (COLD yang sebenarnya HOT) adalah kehilangan revenue potensial.
5. A/B test prompt
Setelah 2 minggu, compare scoring AI dengan ground truth dari outcome deal. Kalau banyak HOT yang tidak convert, adjust prompt untuk lebih strict.
Error Handling yang Perlu Di-setup
Beberapa failure scenarios yang perlu di-handle:
- Apollo API rate limit — Implement retry dengan exponential backoff (n8n punya built-in retry)
- Apollo tidak nemuin perusahaan — Fallback: score berdasarkan form data saja, flag sebagai “limited data”
- Claude response bukan valid JSON — Try-catch di Code node, fallback ke WARM dengan flag “ai_error”
- Slack webhook down — Log ke Postgres, trigger email fallback
ROI Calculation
Dari project yang sudah live:
| Sebelum | Sesudah |
|---|---|
| 15 menit/lead manual research | 30 detik/lead AI scoring |
| Inconsistent scoring | Consistent berdasarkan ICP |
| 10+ jam/minggu SDR time | < 1 jam/minggu review |
| 12% lead-to-meeting rate | 18–22% lead-to-meeting rate |
Kalau tim Pak/Bu punya 100 lead/minggu dan 3 SDR dengan loaded cost Rp 70K/jam: saving ~Rp 70 juta/tahun dari man-hours. Belum termasuk improvement konversi.
Mau Build Ini untuk Bisnis Pak/Bu?
Kalau Pak/Bu mau sistem ini live tanpa harus build sendiri, ini adalah typical Power Pack project — selesai dalam 2 minggu, include AI Lead Qualifier + CRM integration + Slack notification + 30-day support.
Konsultasi gratis 30 menit — kita design arsitektur yang fit dengan tech stack dan ICP Pak/Bu.