AI

Bright Data를 활용한 AI 리드 생성 에이전트 구축

AI와 Bright Data를 활용해 리드 생성 프로세스를 자동화하는 방법을 알아보세요. 본 가이드는 스크래핑부터 스코어링, 아웃리치까지 모든 단계를 다룹니다.
5 분 읽기
AI Lead Generation Agent using Bright data

리드 생성은 영업의 생명선이지만, 대부분의 팀에게 여전히 좌절스러운 병목 현상입니다. 기존 방식은 느리고 편향적이며 확장하기 어려워, 최고의 인재들을 수동 검색, 데이터 입력, 추측 작업의 악순환에 가둡니다. 하지만 이 핵심 기능을 지루한 업무에서 원활한 자동화 이점으로 전환할 수 있다면 어떨까요?

이 가이드에서 배우게 될 내용:
– AI 리드 생성이란 무엇인가
– AI가 기존 방식을 능가하는 이유
– 단계별로 나만의 리드 생성 에이전트를 구축하는 방법
– Bright Data가 워크플로우를 어떻게 가속화하는지

시작해 보세요!

AI 리드 생성이란 무엇인가

간단히 말해, AI 리드 생성은 인공 지능을 활용해 잠재 고객을 자동으로 찾아내고, 수집하며, 정보를 보강하고, 자격을 평가하는 과정입니다. 이는 원시 데이터를 실행 가능한 영업 기회로 전환합니다.

이는 24시간 내내 작동하는 고효율 데이터 기반 영업 개발 담당자라고 생각하시면 됩니다. 단순히 리드를 찾는 것을 넘어, 그들을 이해합니다.

AI 에이전트는 네 가지 핵심 작업으로 구성된 원활한 자동화 워크플로우를 수행합니다:

  1. 스크래핑 – Bright Data의 스크래퍼 같은 도구를 자율적으로 활용해 대상 소스(예: LinkedIn, 기업 웹사이트)에서 원시 데이터를 수집합니다. 이는 ‘외부 환경과 상호작용’하는 방식입니다.
  2. Enrich(보강) – 에이전트는 주로 기업 정보인 이 원시 데이터에 다른 도구를 활용해 핵심 정보를 추가합니다. 이메일 주소, 전화번호, 기술 스택 데이터, 기업 자금 조달 소식 및 기타 공개 데이터를 자동으로 찾아냅니다.
  3. 점수 부여(Score) – AI 에이전트의 핵심인 “의사 결정”과 “문제 해결” 능력이 발휘되는 단계입니다. 보강된 데이터를 활용해 리드를 평가합니다. 예시:
    • 규칙 기반 점수 부여: “산업 = 기술이고 직원 수 > 50인 경우 10점 추가”
    • LLM 기반 추론: LLM이 리드 프로필과 기업 뉴스를 분석하여 귀사의 이상적인 고객 프로필(ICP)을 묘사하는 미묘한 프롬프트를 기반으로 적합성을 평가합니다. 단순한 규칙으로 코딩하기 어려운 복잡한 기준도 이해할 수 있습니다.
  4. 참여: 마지막으로 에이전트가 행동을 수행합니다. 분석에서 그치지 않습니다. 자격을 갖춘 리드를 CRM에 자동으로 추가하거나, 맞춤형 아웃리치 이메일을 생성하거나, 다른 플랫폼에서 첫 접촉 메시지를 발송하여 발견부터 첫 접촉까지의 루프를 완성합니다.

기존 리드 생성 방식의 한계

수십 년간 리드 생성을 위한 영업 프로세스는 대부분 수동으로 유지되어 왔습니다. 영업 사원이 직접 잠재 고객을 검색하고, 제한된 정보를 바탕으로 잠재력을 판단하며, 바쁜 수신함에 적시에 후속 조치가 전달되기를 바라는 식입니다. 이 접근 방식은 단순히 구식일 뿐만 아니라 근본적으로 결함이 있습니다. 기존 방식이 영업 팀에 실패하는 이유는 다음과 같습니다:

1.자격 평가에서의 인간적 편향: 수동 프로세스는 직감과 주관적 판단에 크게 의존합니다. 담당자는 무의식적으로 익숙한 기업이나 특정 직책의 리드를 우선시할 수 있습니다.

2.유실되는 리드: 수동 리드 생성은 탭, 스프레드시트, CRM 항목 사이를 오가는 혼란스러운 과정입니다. 유망한 리드가 복잡한 엑셀 시트에서 사라지거나, 브라우저 탭에서 잊혀지거나, 급한 업무에 밀려 시스템에 입력조차 되지 않는 것은 피할 수 없습니다. 유실되는 모든 리드는 매출이 직접적으로 유출되는 것입니다.

3.팀 가용성의 한계: 영업팀은 (운이 좋다면) 주 40시간만 근무할 수 있습니다. 수면, 휴가, 주말이 필요하죠. 하지만 인터넷은 그렇지 않습니다. 잠재 고객은 24시간 내내 솔루션을 탐색하지만, 수동 프로세스는 업무 시간에만 대응할 수 있습니다. 이

AI 리드 생성이 중요한 이유

AI 기반 리드 생성은 단순한 업그레이드가 아닌 영업 프로세스의 완전한 변혁입니다. 이는 기존 방식의 핵심적 한계를 직접 해결함으로써 중요합니다:

  • 완전한 자동화: 반복적이고 시간 소모적인 검색 및 데이터 수집 작업을 처리하여 팀이 거래 성사에 집중할 수 있도록 합니다.
  • 연중무휴 운영: 인간 팀과 달리 AI 에이전트는 24시간 내내 작동하여 시간대 차이로 인한 기회 손실을 방지합니다.
  • 데이터 기반 의사 결정: 주관적 추측과 편향을 객관적 기준에 따른 자격 평가로 대체하여 가장 잠재력 높은 리드만 추적합니다.
  • 즉각적 대응: AI는 몇 분 안에 잠재고객을 식별하고 접촉을 시작하여 참여율과 전환율을 획기적으로 높입니다.
  • 무제한 확장성: 수천 명의 잠재 고객을 손쉽게 분석하여 인력을 비례적으로 늘리지 않고도 비즈니스의 아웃리치 규모를 확장할 수 있습니다.

AI가 영업 접근 방식을 어떻게 재구성하는지 확인하셨으니, 이제 자체 구축 방법을 이해하는 것이 중요합니다. 다음으로, AI 기반 리드 생성 에이전트를 실제로 구축하는 방법을 살펴보겠습니다.

AI 리드 생성 에이전트 구축하기

이 글에서는 AI 리드 생성 에이전트를 단계별로 구축하는 방법을 안내합니다. 전체 워크플로를 자동화하는 간소화된 에이전트를 구축할 것입니다. Bright Data와 Streamlit가 어떻게 손쉽게 결합되어 끊임없이 작동하는 시스템을 만드는지 확인하실 수 있습니다.

필수 조건

개발 환경을 다음 요구 사항으로 설정하세요:

  • (Python 3.9) 이상
  • Bright Data 계정: 가입 후 API 토큰 생성 (무료 체험 크레딧 제공)
  • OpenAI API 키: OpenAI 대시보드에서 임베딩 및 LLM 접근을 위한 키 생성
  • VS Code 또는 PyCharm과 같은 코드 편집기
  • Python 가상 환경은 종속성을 분리하여 관리합니다.
  • Streamlit 라이브러리는 대화형 사용자 인터페이스를 제공하여 사용자가 도구를 활용할 수 있게 합니다.

환경 설정

프로젝트 디렉터리를 생성하고 종속성을 설치하세요. 다른 Python 프로젝트와의 충돌을 피하기 위해 깨끗한 가상 환경을 설정하는 것으로 시작하세요.

python -m venv venv
# macOS/Linux: source venv/bin/activate
# Windows: venvScriptsactivate
pip install langchain langchain-community langchain-openai streamlit python-dotenv 

lead_generator.py라는 새 파일을 생성하고 다음 임포트를 추가합니다. 이 라이브러리들은 웹 스크래핑, 텍스트 처리, 임베딩, 사용자 인터페이스를 처리합니다.

import base64
import json
import streamlit as st
import os
import requests
from dotenv import load_dotenv
from typing import Dict, List, Any

from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import FAISS
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain.schema import Document
from langchain.agents import initialize_agent, AgentType, Tool
from langchain.memory import ConversationBufferMemory
from langchain.callbacks import StreamlitCallbackHandler

load_dotenv()

Bright Data 구성

환경 변수를 사용하여 API 자격 증명을 안전하게 저장하세요. 자격 증명을 저장할 .env 파일을 생성하여 민감한 정보를 코드와 분리하세요.

BRIGHT_DATA_API_TOKEN="your_bright_data_api_token_here"
OPENAI_API_KEY="your_openai_api_key_here"

필요한 항목:

  • Bright Data API 토큰: Bright Data 대시보드에서 생성
  • OpenAI API 키: LLM 텍스트 생성에 사용

1단계: Bright Data로 데이터 수집

이제 LinkedIn 프로필 등에서 리드 데이터를 가져오기 위한 구성을 설정할 차례입니다.

Bright Data의 웹 스크레이퍼 API 작동 방식에 익숙하지 않다면 먼저 문서를 확인하는 것이 좋습니다.

간단히 말해, 웹 스크레이퍼 API는 특정 도메인의 공개 데이터를 가져올 수 있는 API 엔드포인트를 제공합니다. 백엔드에서는 Bright Data가 자체 서버에서 미리 준비된 스크레이핑 작업을 초기화하고 실행합니다. 이 API는 IP 로테이션, CAPTCHA 해결 및 기타 조치를 처리하여 웹 페이지에서 공개 데이터를 효과적이고 윤리적으로 수집합니다. 작업이 완료되면 스크레이핑된 데이터는 구조화된 형식으로 파싱되어 스냅샷 형태로 제공됩니다.

따라서 일반적인 작업 흐름은 다음과 같습니다:

  1. 웹 스크래핑 작업을 시작하기 위해 API 호출을 트리거합니다.
  2. 스크랩된 데이터가 포함된 스냅샷이 준비되었는지 주기적으로 확인합니다.
  3. 사용 가능해지면 스냅샷에서 데이터를 가져옵니다.

몇 줄의 코드로 위 논리를 구현할 수 있습니다

class BrightDataCollector:
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = "https://api.brightdata.com/datasets/v3"
        self.headers = {"Authorization": f"Bearer {api_key}"}

    def collect_leads(self, filters: Dict[str, Any], limit: int = 10) -> List[Dict[str, Any]]:
        # 검색 트리거
        r = requests.post(
            f"{self.base_url}/trigger",
            headers={**self.headers, "Content-Type": "application/json"},
            params={"dataset_id": "gd_your_lead_dataset_id", "type": "discover_new", "limit_per_input": str(limit)},
            json=[{
                "keyword": f"{filters.get('role','')} {filters.get('industry','')}".strip(),
                "location": filters.get("location", "")
            }]
        )
        snapshot_id = r.json().get("snapshot_id")
        if not snapshot_id:
            return []

        # 준비될 때까지 폴링
        url = f"{self.base_url}/snapshot/{snapshot_id}?format=json"
        for _ in range(30):
            snap = requests.get(url, headers=self.headers)
            if snap.status_code == 200:
                return snap.json()
            time.sleep(5)
        return []

2단계: AI를 활용한 리드 검증

원시 리드를 수집한 후, 다음 과제는 이상적인 고객 프로필에 부합하는 리드를 선별하는 것입니다. 수동 점수 부여 대신, 검색 매개변수를 추출하고 리드를 분석하며 관련성 점수를 할당하고 최적의 매칭을 강조하는 AI 자격 평가기를 활용할 수 있습니다.

아래 클래스에서는 LangChain과 OpenAI를 활용해 이 워크플로를 구축하는 방법을 보여줍니다.

   """AI 기반 리드 자격 평가 및 점수 부여"""

    def __init__(self, api_key: str):
        self.llm = ChatOpenAI(api_key=api_key, model_name="gpt-3.5-turbo", temperature=0.3)
        self.embeddings = OpenAIEmbeddings(api_key=api_key)

        # 자격 평가 프롬프트
        self.analysis_prompt = PromptTemplate(
            input_variables=["query", "lead"],
            template="""
            원본 쿼리: {query}
            리드: {lead}

            다음 JSON을 반환:
            - 점수 (1-100)
            - 분석
            - 문제점
            - 가치 제안
            - 의사 결정권자 수준
            - 참여 가능성
"""
        )

        self.analysis_chain = LLMChain(llm=self.llm, prompt=self.analysis_prompt)

    def qualify(self, lead: dict, query: str) -> dict:
        """단일 리드 검증"""
        result = self.analysis_chain.run(query=query, lead=json.dumps(lead))
        return {**lead, **json.loads(result)}

    def batch_qualify(self, leads: list, query: str) -> list:
        """리드 다수 검증 및 순위 지정"""
        results = [self.qualify(lead, query) for lead in leads]
        return sorted(results, key=lambda x: x["score"], reverse=True)

    def vector_store(self, leads: list):
        """의미적 검색을 위한 FAISS 벡터 저장소 구축"""
        docs = [Document(page_content=f"{l['name']} {l['title']} {l['company']}", metadata={"i": i})
                for i, l in enumerate(leads)]
        return FAISS.from_documents(docs, self.embeddings)

3단계: 상호작용을 위한 Streamlit UI

이 UI 레이어는 API 키 설정, AI 설정 제어, 직관적인 시각 자료로 리드 탐색을 가능하게 하여 모든 요소를 통합합니다

st.set_page_config(page_title="AI 리드 생성 에이전트", page_icon="🎯", layout="wide")

# 헤더
st.title("🔎 AI 기반 리드 생성 에이전트")

# 사이드바 설정
with st.sidebar:
    st.header("API 키")
    bright_data_api_key = st.text_input("Bright Data API 키", type="password")
    openai_api_key = st.text_input("OpenAI API 키", type="password")
    st.header("설정")
    model_name = st.selectbox("OpenAI 모델", ["gpt-3.5-turbo", "gpt-4"])
    max_leads = st.slider("최대 리드 수", 5, 50, 10)

# 채팅 인터페이스
if "messages" not in st.session_state:
    st.session_state.messages = []

for msg in st.session_state.messages:
    with st.chat_message(msg["role"]):
        st.markdown(msg["content"])

user_input = st.chat_input("이상적인 리드를 설명해 주세요...")

if user_input:
    st.session_state.messages.append({"role": "user", "content": user_input})
    st.chat_message("user").markdown(user_input)

    # Placeholder: AI가 필터를 추출하고 리드를 가져옵니다
    st.chat_message("assistant").markdown("필터 추출 완료, 리드 가져오기 중...")

# 간단한 리드 카드 표시
def display_lead_card(lead: Dict[str, Any]):
    with st.expander(f"{lead.get('name')} - {lead.get('title')} at {lead.get('company')}"):
        st.write(f"위치: {lead.get('location', 'N/A')}")
        st.write(f"이메일: {lead.get('email', 'N/A')}")
        st.write(f"링크드인: {lead.get('linkedin', 'N/A')}")
        st.write(f"점수: {lead.get('score', 0)}/100")

# 예시 리드
sample_leads = [
    {"name": "Jane Doe", "title": "마케팅 매니저", "company": "Fintech Co", "location": "CA", "email": "[email protected]", "linkedin": "linkedin.com/janedoe", "score": 85}
]

st.subheader("자격 있는 리드")
for lead in sample_leads:
    display_lead_card(lead)

이 UI를 통해 사용자는 단순한 JSON 점수뿐만 아니라 순위가 매겨진 리드, 인사이트, 참여 가능성을 한눈에 확인할 수 있습니다.

4단계: 후속 조치 자동화

잠재고객을 선별한 후에도 적절한 시기에 적절한 메시지로 소통해야 합니다. 이때 자동화가 필요합니다. FollowUpAutomator 클래스는 맞춤형 이메일, 링크드인 메시지, 후속 조치를 생성한 후 체계적인 순서로 일정 관리 및 실행합니다.

class FollowUpAutomator:
    """검증된 리드를 위한 기본 자동 후속 조치 시스템"""

    def __init__(self, api_key: str):
        self.llm = ChatOpenAI(api_key=api_key, model_name="gpt-3.5-turbo", temperature=0.7)

        # 간단한 템플릿
        self.initial_prompt = PromptTemplate(
            input_variables=["name", "company"],
            template="{company}의 {name}에게 짧고 친근한 아웃리치 이메일을 작성하세요."
        )
        self.followup_prompt = PromptTemplate(
            input_variables=["name", "company"],
            template="{company}의 {name}에게 80단어 미만의 정중한 후속 이메일을 작성하세요."
        )
        self.linkedin_prompt = PromptTemplate(
            input_variables=["name", "industry"],
            template="{industry} 업계의 {name}에게 짧은 LinkedIn 연결 요청 메시지를 작성하세요."
        )

        self.initial_chain = LLMChain(llm=self.llm, prompt=self.initial_prompt)
        self.followup_chain = LLMChain(llm=self.llm, prompt=self.followup_prompt)
        self.linkedin_chain = LLMChain(llm=self.llm, prompt=self.linkedin_prompt)

    def create_sequence(self, lead: Dict[str, Any]) -> List[Dict[str, Any]]:
        """한 리드에 대한 3단계 아웃리치 시퀀스를 생성합니다"""
        return [
            {"day": 0, "type": "email", "content": self.initial_chain.run(name=lead["name"], company=lead["company"])},
            {"day": 2, "type": "linkedin", "content": self.linkedin_chain.run(name=lead["name"], industry=lead.get("industry", ""))},
            {"day": 7, "type": "email", "content": self.followup_chain.run(name=lead["name"], company=lead["company"])}
        ]

    def schedule(self, leads: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
        """각 접촉에 날짜를 할당합니다"""
        scheduled = []
        for lead in leads:
            base = datetime.now()
            sequence = self.create_sequence(lead)
            for touch in sequence:
                touch["scheduled_date"] = base + timedelta(days=touch["day"])
                touch["lead"] = lead["name"]
            scheduled.append({"lead": lead["name"], "sequence": sequence})
        return scheduled

5단계: 코드 완성 및 실행

lead_generator.py 파일의 최종 코드입니다. 이제 다음 명령어로 실행할 수 있습니다:

streamlit run lead_generator.py

전체 코드베이스를 실행하면 어시스턴트가 사용자의 쿼리를 받아 Bright Data에서 최신 리드를 추출하고, AI 기반 점수와 인사이트로 이를 보강합니다. 10개 리드씩 처리되는 각 배치에 대해 최대 40개의 채용 공고가 분석, 점수화되며 관련성, 의사결정권, 참여 가능성에 따라 순위가 매겨집니다. 마지막으로 보강된 결과 전체 세트가 깔끔한 results.csv 파일로 내보내집니다. 단순한 연락처 목록이 아닌, 즉시 활용 가능한 AI 검증 리드 데이터베이스를 제공합니다.

The final UI of the AI lead generation agent

마무리

이제 전체 잠재고객 발굴 워크플로우를 자동화하는 AI 기반 리드 생성 에이전트를 구축할 수 있는 완벽한 프레임워크를 확보했습니다. 이 시스템은 웹에서 최신 데이터를 자율적으로 수집하고, 핵심 컨텍스트로 보강하며, 이상적인 고객 프로필에 기반해 리드를 지능적으로 검증하여 즉시 접촉 가능한 상태로 준비합니다.

이 접근법의 진정한 힘은 유연성에 있습니다. Bright Data 및 LLM 설정에서 대상 데이터 소스와 검증 기준을 수정하기만 하면 SaaS, 금융, 이커머스, 채용 등 모든 산업에 이 프레임워크를 적용할 수 있습니다. 모듈식 설계로 영업 프로세스가 발전함에 따라 새로운 데이터 엔드포인트, 스코어링 알고리즘 또는 출력 채널을 손쉽게 통합할 수 있습니다.

보다 진보적이고 강력한 워크플로우를 구축하려면 Bright Data 문서에서 제공하는 모든 데이터 세트와 솔루션을 살펴보시기 바랍니다.

지금 바로무료 Bright Data계정을 생성하고 체험 크레딧을 활용해 자동화된 리드 생성 에이전트를 구축해 보세요. 새는 수도꼭지 같은 영업 파이프라인을 예측 가능하고 고속의 수익 창출 엔진으로 탈바꿈시키십시오.