
OpenAI와 Outscraper Google Maps API를 활용한 AI 영업 에이전트 구축하기
요약
OpenAI와 Outscraper Google Maps API를 결합하여 로컬 비즈니스 데이터를 기반으로 리드를 발굴하는 AI 영업 에이전트 구축 방법을 소개합니다. 데이터 수집부터 리드 점수 산정, 아웃리치 초안 작성까지 이어지는 개발자 워크플로우를 다룹니다.
핵심 포인트
- Outscraper API를 활용한 실시간 Google Maps 비즈니스 데이터 확보
- GPT를 이용한 리드 점수(Lead Scoring) 및 영업 신호 분석
- 사람의 검토를 거치는 안전한 AI 아웃리치 워크플로우 설계
- 로컬 검색 쿼리를 실제 영업 기회로 전환하는 에이전트 아키텍처
OpenAI를 활용한 AI 영업 에이전트는 활용할 수 있는 실제 Google Maps 비즈니스 데이터가 있을 때 유용해집니다.
모델은 리드 (leads) 점수를 매기고, 영업 신호 (sales signals)를 설명하며, 아웃리치 (outreach) 초안을 작성하는 데 도움을 줄 수 있지만, 어떤 지역 비즈니스가 활발한지, 연락 가능한지, 리뷰가 있는지, 또는 웹사이트가 누락되었는지 등을 추측해서는 안 됩니다.
그 지점에서 Outscraper Google Maps API가 적합한 역할을 합니다.
이 튜토리얼에서는 프롬프트 (prompts) 프로토타이핑과 로컬 검색 로직을 위해 GPT로 시작하여, 실제 운영 환경을 위한 Google Maps 비즈니스 데이터 확보를 위해 Outscraper로 넘어가는 개발자 워크플로우 (workflow)를 구축할 것입니다.
워크플로우는 다음과 같습니다:
GPT 프로토타입 → Outscraper Google Maps API → OpenAI 리드 점수 산정 (lead scoring) → 사람이 검토하는 아웃리치 (outreach)
우리가 구축하는 것
우리는 로컬 검색 쿼리 (query)를 입력받아 비즈니스 기록을 수집하고, 가장 강력한 리드 신호를 점수화하며, 사람이 검토할 수 있도록 아웃리치 초안을 준비하는 간단한 AI 영업 에이전트를 구축합니다.
에이전트가 메시지를 자동으로 전송하지는 않습니다.
목표는 AI 에이전트가 작업을 준비하되 사람이 최종 아웃리치를 검토하는, 더 안전한 영업 조사 워크플로우를 개발자가 구축할 수 있도록 돕는 것입니다.
아키텍처 (architecture)는 다음과 같습니다:
로컬 검색 쿼리 (Local search query)
↓
Outscraper Google Maps API
...
에이전트의 동작은 비즈니스 데이터 수집, 각 기록의 점수 산정, 가장 강력한 신호 설명, 아웃리치 관점 초안 작성, 그리고 무언가를 보내기 전 사람의 승인을 기다리는 루프 (loop)를 통해 이루어집니다.
입력 예시:
예약 관리나 평판 관리 도움이 필요할 수 있는 오스틴(Austin)의 치과 클리닉을 찾아줘.
출력 예시:
비즈니스: Example Dental Clinic
리드 점수 (Lead score): 8/10
가장 강력한 신호: 높은 리뷰 수, 4.0 미만의 평점, 그리고 예약 관련 불만 사항
...
AI 영업 에이전트에 Google Maps 비즈니스 데이터가 필요한 이유
AI 영업 에이전트에게는 회사 이름 이상의 것이 필요합니다.
로컬 리드 생성 (local lead generation)을 위해, 에이전트는 해당 비즈니스가 활성 상태인지, 연락이 가능한지, 그리고 제안 내용과 관련이 있는지를 보여주는 필드들을 바탕으로 추론해야 합니다.
유용한 Google Maps 비즈니스 데이터에는 다음이 포함됩니다:
- 비즈니스 이름 (business name)
- 카테고리 (category)
- 주소 (address)
- 도시 (city)
- 웹사이트 (website)
- 전화번호 (phone number)
- 평점 (rating)
- 리뷰 수 (review count)
- 비즈니스 상태 (business status)
- 영업 시간 (opening hours)
- 로컬 수요 신호 (local demand signals)
- 웹사이트 누락 신호 (missing website signal)
- 취약한 연락 경로 (weak contact path)
- 고객 리뷰 패턴 (customer review patterns)
이것이 중요한 이유는 동일한 카테고리에 속한 두 비즈니스라도 서로 다른 아웃리치 (outreach)가 필요할 수 있기 때문입니다.
리뷰 300개, 평점 3.7점, 그리고 반복적인 예약 불만 사항이 있는 치과 클리닉은 리뷰 12개, 완벽한 웹사이트, 그리고 눈에 띄는 마찰(friction)이 없는 클리닉과는 다릅니다.
첫 번째 비즈니스는 예약 워크플로우 소프트웨어 (appointment workflow software)나 평판 관리 (reputation management)에 더 적합할 수 있습니다.
두 번째 비즈니스는 동일한 메시지를 필요로 하지 않을 수 있습니다.
OpenAI는 추론 (reasoning)을 도와줍니다.
Outscraper Google Maps API는 로컬 비즈니스 데이터 레이어 (data layer)를 제공합니다.
이 둘을 결합하면 실제 필드를 사용하여 실제 비즈니스의 점수를 매기는 AI 리드 생성 에이전트를 만들 수 있습니다.
GPT에서 영업 로직 프로토타입 만들기
전체 백엔드 (backend)를 구축하는 것부터 시작하지 마세요.
GPT 내부에서 영업 에이전트 로직을 테스트하는 것부터 시작하세요.
이것이 프로토타입 레이어 (prototype layer)입니다.
10개의 로컬 비즈니스 기록을 가져와 GPT에 붙여넣으세요.
그런 다음 다음과 같은 프롬프트 (prompt)를 테스트합니다:
Google Maps에서 가져온 로컬 비즈니스 기록을 붙여넣겠습니다.
각 비즈니스가 이 제안에 대한 잠재적 리드 (lead)로서 적합한지 점수를 매기세요:
...
이 작은 프로토타입은 프로덕션 코드 (production code)를 작성하기 전에 중요한 질문들에 답을 줍니다:
- 프롬프트가 유용한 영업 신호 (sales signals)를 식별하는가?
- 점수 산정 로직 (scoring logic)이 타당한가?
- 모델이 세부 사항을 지어내는 것 (hallucination)을 방지하는가?
- 아웃리치 관점 (outreach angle)이 비즈니스 데이터와 연결되는가?
- 출력이 영업 사원이 다음에 무엇을 검토할지 결정하는 데 도움이 되는가?
GPT는 로직을 빠르게 테스트할 수 있기 때문에 이 단계에서 유용합니다.
하지만 GPT는 프로덕션 (production) 데이터 레이어 (data layer)가 아닙니다.
GPT는 추론 (reasoning)을 설계하는 데 도움을 줍니다.
반복 가능한 Google Maps 데이터 수집을 대체하지는 못합니다.
GPT 프로토타입에서 Outscraper 프로덕션 워크로드로 전환하기
프로토타입이 작은 샘플에서 제대로 작동한다면, 워크플로우를 프로덕션 (production) 환경으로 옮기세요.
그 지점에서 Outscraper가 중요해집니다.
백엔드 (backend)를 먼저 구축하지 않고 대량 추출 (bulk extraction)을 테스트하거나, CSV 파일을 내보내거나, Google Maps 데이터를 탐색하고 싶을 때는 Google Maps Scraper를 사용하세요.
Google Maps 비즈니스 데이터를 앱, CRM, 백엔드 작업 또는 AI 영업 에이전트에 직접 연결하고 싶을 때는 Google Maps API를 사용하세요.
연결 구조는 간단합니다:
GPT = 프로토타입 프롬프트 (prompts) 및 검색 로직
Outscraper Google Maps API = 프로덕션 로컬 비즈니스 데이터
OpenAI = 리드 스코어링 (lead scoring) 및 아웃리치 (outreach) 초안 작성
...
이렇게 하면 시스템을 실용적으로 유지할 수 있습니다.
GPT는 에이전트 로직을 테스트합니다.
Outscraper는 구조화된 비즈니스 레코드를 수집합니다.
OpenAI는 해당 레코드를 바탕으로 점수를 매기고 초안을 작성합니다.
사람이 최종 메시지를 승인합니다.
Node.js 프로젝트 설정하기
새 프로젝트를 생성합니다:
mkdir ai-sales-agent-outscraper
cd ai-sales-agent-outscraper
npm init -y
...
package.json에 모듈 지원을 추가합니다:
{
"type": "module"
}
.env 파일을 생성합니다:
OPENAI_API_KEY=your_openai_api_key
OUTSCRAPER_API_KEY=your_outscraper_api_key
OPENAI_MODEL=your_preferred_openai_model
소스 코드에 API 키를 하드코딩하지 마세요.
Outscraper로 Google Maps 비즈니스 데이터 가져오기
agent.js라는 파일을 생성합니다.
import "dotenv/config";
import OpenAI from "openai";
...
검색 쿼리에는 카테고리와 위치가 모두 포함되어야 합니다.
좋은 예시는 다음과 같습니다:
치과, Austin, TX, USA
레스토랑, Miami, FL, USA
지붕 공사 업체, Phoenix, AZ, USA
...
프로덕션 워크로드 (Production workloads)의 경우, 다음과 같이 모호한 검색은 피하십시오:
내 주변 비즈니스 (businesses near me)
에이전트에게는 구체적인 지역 검색 로직이 필요합니다.
카테고리, 도시, 주(state), 그리고 국가를 사용하십시오.
비즈니스 레코드 정규화 (Normalize the Business Records)
API 응답은 쿼리 설정에 따라 중첩된 배열 (nested arrays)을 포함할 수 있습니다.
응답을 깔끔한 리스트로 변환하는 헬퍼 함수 (helper function)를 만드십시오.
function flattenOutscraperResults(rawResponse) {
const data = rawResponse?.data;
...
OpenAI로 보내기 전에 페이로드 (payload)를 집중된 상태로 유지하십시오.
모델에는 모든 필드가 필요하지 않습니다.
리드 스코어링 (lead scoring)을 지원하는 필드들이 필요합니다:
- 카테고리 적합성 (category fit)
- 연락 가능성 (contactability)
- 웹사이트 존재 여부 (website presence)
- 평점 (rating)
- 리뷰 수 (review count)
- 비즈니스 상태 (business status)
- 지역 수요 신호 (local demand signal)
OpenAI로 리드 스코어링 하기 (Score Leads With OpenAI)
이제 정규화된 레코드를 OpenAI로 보내는 함수를 만듭니다.
async function scoreLeadsWithOpenAI({ businesses, offer }) {
const prompt = `
당신은 AI 영업 조사 어시스턴트입니다.
...
이것은 리드 스코어링 레이어 (lead scoring layer)를 생성합니다.
에이전트는 단순히 비즈니스의 순위를 매기는 것이 아닙니다.
왜 해당 비즈니스가 검토할 가치가 있는지 설명하는 것입니다.
영업 사원이 메시지를 보내기 전에 신호 (signal)를 이해해야 하므로, 그 설명은 매우 중요합니다.
첫 번째 AI 영업 에이전트 실행하기 (Run the First AI Sales Agent)
메인 함수를 추가합니다.
async function runAgent() {
const query = "dental clinics, Austin, TX, USA";
const offer =
...
파일을 실행합니다:
node agent.js
예상 출력 패턴:
Business name: Example Dental Care
Lead score: 8/10
Strongest signal: Phone number, website, high review count, and rating below 4.0
...
사람의 검토를 거치는 아웃리치 초안 작성 (Draft Outreach With Human Review)
리드 스코어링을 마친 후, 짧은 아웃리치 (outreach) 초안을 생성할 수 있습니다.
에이전트가 자동으로 이를 보내게 하지 마십시오.
별도의 함수를 만듭니다.
async function draftHumanReviewedOutreach({ leadSummary, offer }) {
const prompt = `
사람의 검토를 위한 짧은 아웃리치 초안을 작성하세요.
...
잘못된 아웃리치 (outreach) 초안은 다음과 같습니다:
안녕하세요, 저희는 비즈니스 성장을 도와드립니다. 관심 있으신가요?
사람이 검토한 더 강력한 초안은 다음과 같습니다:
안녕하세요, 귀하의 클리닉이 많은 리뷰 수를 보유하고 있다는 점을 확인했습니다. 리뷰 패턴을 검토해 볼 가치가 있을 것 같습니다. 저희는 치과 클리닉이 놓친 전화 후속 조치 및 예약 워크플로 (workflow)를 개선하도록 돕고 있습니다. 몇 가지 아이디어를 공유해 드려도 괜찮을까요?
더 나은 초안이 효과적인 이유는 눈에 보이는 비즈니스 신호 (business signal)와 연결되기 때문입니다.
또한, 데이터가 보여주는 것 이상을 알고 있는 척하지 않습니다.
더 나은 로컬 검색 로직 추가
첫 번째 버전은 하나의 쿼리 (query)를 사용합니다.
실제 운영 환경 (production workloads)에서는 반복 가능한 검색 로직을 사용하십시오.
예를 들어:
const searches = [
"dental clinics, Austin, TX, USA",
"dental clinics, Dallas, TX, USA",
...
각 쿼리를 루프 (loop)로 돌면서 레코드 (records)를 수집할 수 있습니다.
async function collectFromMultipleLocalSearches(searches, limitPerSearch = 10) {
const allBusinesses = [];
...
이를 통해 에이전트가 실제 로컬 잠재 고객 발굴 (prospecting) 워크플로를 지원할 수 있습니다.
예시:
- 여러 도시에 걸친 동일한 니치 (niche) 시장
- 한 도시 내의 다양한 카테고리
- 하나의 주를 여러 로컬 시장으로 분할
- 월간 리드 (lead) 갱신을 위한 반복 검색
이 지점에서 워크플로는 트랜잭션 (transactional) 성격을 갖게 됩니다.
독자는 단순히 AI 영업 에이전트가 무엇인지 배우는 것에 그치지 않습니다.
데이터 파이프라인 (data pipeline)의 첫 번째 버전을 직접 구축하고 있는 것입니다.
운영 체크리스트 (Production Checklist)
이를 실제 워크플로에 적용하기 전에, 운영 제어 장치를 추가하십시오.
다음 체크리스트를 사용하세요:
환경 변수 (environment variables)에 저장된 API 키
특정 카테고리 + 도시 검색 쿼리
페이로드 (payload) 크기를 줄이기 위한 필드 제한
...
가장 중요한 규칙:
AI 영업 에이전트는 아웃리치를 준비할 수 있습니다.
아웃리치는 반드시 사람이 승인해야 합니다.
이 규칙은 워크플로가 자동 스팸 시스템으로 변질되지 않으면서도 유용하게 유지되도록 합니다.
운영 워크플로에서 Outscraper의 역할
Outscraper는 이 AI 영업 에이전트를 위한 운영 데이터 계층 (production data layer)입니다.
Google Maps Scraper는 대량 추출 (bulk extraction), CSV 내보내기 (CSV export), 노코드 (no-code) 테스트, 또는 코드를 작성하기 전에 Google Maps 비즈니스 데이터를 빠르게 검토하고 싶을 때 유용합니다.
Outscraper Google Maps API는 Google Maps 비즈니스 데이터를 백엔드 (backend), CRM, 영업 대시보드 (sales dashboard), 또는 에이전트 워크플로 (agent workflow)에 직접 연결하고 싶을 때 유용합니다.
데이터를 테스트하고 싶을 때는 스크래퍼 (scraper) 페이지를 사용하세요.
반복 가능한 운영 워크로드 (production workloads)가 필요할 때는 API를 사용하세요.
운영 경로 (production path)는 다음과 같습니다:
로컬 검색 로직 (Local search logic)
↓
Outscraper Google Maps API
...
데이터 필드 (data fields)가 구체적일수록 에이전트는 더 강력해집니다.
OpenAI에게 추측하도록 요청하는 대신, 다음과 같은 필드를 전달하세요:
비즈니스 이름 (business name)
카테고리 (category)
웹사이트 (website)
...
이것만으로도 유용한 첫 번째 리드 스코어링 (lead scoring) 단계를 생성하기에 충분합니다.
마치며
OpenAI를 사용하여 AI 영업 에이전트를 구축하는 것은 단순히 프롬프트 (prompts)를 작성하는 것만이 아닙니다.
에이전트에는 데이터 계층 (data layer)이 필요합니다.
지역 비즈니스 잠재 고객 발굴 (prospecting)을 위해, Outscraper Google Maps API는 OpenAI가 점수를 매기고, 요약하며, 사람이 검토할 수 있는 아웃리치 초안 (outreach drafts)으로 변환할 수 있는 구조화된 Google Maps 비즈니스 데이터를 제공할 수 있습니다.
- GPT로 프롬프트 로직을 프로토타이핑 (prototype)하며 시작하세요.
- 작은 샘플을 사용하여 리드 스코어링을 테스트하세요.
- 아웃리치 관점 (outreach angle)이 실제 필드와 연결되는지 확인하세요.
- 그 다음, 운영 워크로드 (production workloads)를 위해 Outscraper로 이동하세요.
대량 추출 및 데이터 테스트에는 Google Maps Scraper를 사용하세요.
앱, 백엔드, CRM 또는 에이전트 통합에는 Google Maps API를 사용하세요.
최종 워크플로는 다음과 같습니다:
GPT 프로토타입 (GPT prototype)
↓
Outscraper Google Maps API
...
GPT 프롬프트 테스트에서 운영 AI 영업 에이전트로 넘어갈 준비가 되었다면, Outscraper의 구조화된 Google Maps 비즈니스 데이터로 시작하세요.
대량 추출을 위해 Google Maps Scraper를 사용하거나, 앱, 에이전트, CRM 또는 백엔드 워크플로에 Google Maps API를 연결하세요.
그런 다음 구조화된 레코드 (structured records)를 OpenAI로 보내 리드 스코어링, 조사 요약, 그리고 사람이 검토하는 아웃리치 초안을 생성하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기
