검색
← 모듈 로드맵

출처 없으면 모른다고 답하는 리드 파인더

발행 출처 DEV · Vaibhav Verma

클로드사례전문가

나중에 보기좋아요
공유 · 인쇄
후기댓글

누구에게나 AI 모델에 “팔 만한 회사 목록을 만들어 달라”고 시키면, 몇 초 만에 목록 하나가 나옵니다. 보기에는 훌륭합니다. 각 줄마다 자신감이 넘칩니다.

그렇다면 이제 이렇게 물어보세요. 그 줄들 중에서 어떤 것이 사실일까요?

“급성장 중입니다.” 누가 그렇게 말하나요? “직원 200명.” 어디에서 나온 수치인가요? “최근 투자 유치.” 언제요? 모델은 사실과 추측을 둘 다 같은 자신감 있는 어조로 써내기 때문에, 둘을 구분할 수가 없습니다.

그래서 저는 Lead Finder 를 만들었습니다. 무료 오픈 소스 Claude 플러그인으로, 규칙은 하나입니다. 사실에는 출처가 필요하고, 추측은 질문으로 바뀌며, 확인할 수 없었던 것은 모두 "unknown"으로 처리한다는 것입니다.

데모: 한 줄 요청이 점수표, 순위 목록, 출처가 있는 증거로 바뀐다
데모: 한 줄 요청이 점수표, 순위 목록, 출처가 있는 증거로 바뀐다
코드
/plugin marketplace add machgtm/lead-finder
/plugin install lead-finder@machgtm

그다음 이렇게 물어보세요. “리드 25개를 찾아줘. 나는 미국과 유럽에 판매하는 인원 50명에서 1,000명 규모의 소프트웨어 서비스 회사에 판매해.”

여기에는 그 뒤에 있는 설계 결정과, 테스트에서 잡아낸 버그들을 적었습니다.

1. 모델은 증거를 모읍니다. 계산은 스크립트가 합니다.

꾸며낸 점수를 얻는 가장 쉬운 방법은 모델에게 점수를 달라고 하는 것입니다. 그래서 Claude는 점수를 직접 쓰지 않습니다. 대신 증거 파일만 채웁니다:

코드
{
  "company": "Example Labs",
  "domain": "example.com",
  "signs": [
    {"id": "services", "state": "met",
     "source": "https://example.com/services",
     "quote": "We build custom web and mobile apps"},
    {"id": "size", "state": "unknown"}
  ],
  "signals": [
    {"id": "hiring_bd", "date": "2026-10-02",
     "detail": "Hiring a Business Development Manager, US",
     "source": "https://job-boards.greenhouse.io/example/jobs/102"}
  ]
}

그다음 약 300줄짜리 표준 라이브러리 Python 코드인 score.py가 그것을 순위로 바꿉니다. 또 모델이 비틀 수도 있는 규칙을 강제합니다.

  • met로 표시됐지만 http(s) 출처가 없으면 경고와 함께 unknown으로 낮춥니다.
  • 날짜가 없거나 미래 날짜인 신호는 제거합니다.
  • 모든 변경 사항을 출력하므로, Claude는 결과물을 편집하는 대신 출처로 돌아갑니다.

같은 증거가 들어가면 같은 점수가 나옵니다. 그리고 누구나 공식을 읽을 수 있습니다.

2. unknown은 "아니오"가 아닙니다

대부분의 점수 체계는 누락된 데이터를 0으로 처리합니다. 그러면 웹사이트 정보가 빈약한 회사를 조용히 불이익에 빠뜨리고, SEO가 좋은 회사를 유리하게 만듭니다.

여기서는 적합도에 대해 아는 것만 반영합니다:

점수공식
적합도충족된 신호의 가중치 ÷ 알려진 신호의 가중치
커버리지알려진 신호의 가중치 ÷ 전체 신호
의도각 신호 유형별로, 가장 최신 사본의 신선도 × 가중치 ÷ 총 신호 가중치

커버리지가 50% 미만이면 적합도는 "unproven"이며, 아무리 좋아 보여도 해당 회사를 "Call now"로 표시할 수 없습니다. 대신 "Qualify"만 가능합니다. 직접 가서 확인하라는 뜻입니다.

3. 테스트 버그 #1: 2,400명 규모 회사가 "Call now"로 나왔습니다

플러그인을 제 이상적인 고객상에 돌려봤습니다. 즉, 인원 50명에서 1,000명 규모의 소프트웨어 서비스 회사입니다. 그중 한 결과는 홈페이지에 2,400명 이상의 엔지니어가 있다고 나온, 운영이 잘 되는 회사였습니다. 다섯 개 적합도 신호 중 네 개를 충족했고, 사업 개발 채용도 하고 있었으며, 거의 상위권에 올라왔습니다.

계산은 맞았습니다. 하지만 점수표가 틀렸습니다. “50명에서 1,000명”은 다섯 개 신호 중 하나가 아니라, 거래를 아예 막는 조건이었습니다.

그래서 이제 신호에 "required": true를 붙일 수 있습니다. 어떤 회사가 그 조건 하나를 분명히 충족하지 못한다는 증거가 있으면, 나머지 점수와 상관없이 제외됩니다. 반면 그저 unknown인 경우는 제외되지 않습니다. unknown은 누구도 탈락시키지 않습니다.

4. 테스트 버그 #2: 채용 공고 다섯 개가 구매 신호 다섯 개로 계산됐습니다

이것도 독립적인 코드 리뷰에서 발견됐습니다. 스크래퍼는 채용 공고 하나당 한 행을 반환하므로, 영업 포지션 공고가 다섯 개 있는 회사는 채용 신호가 다섯 개로 집계됐고, 의도 점수는 100이 되었습니다. 결국 그 회사는 채용 중이면서 동시에 막 자금 조달을 끝낸 회사와 같은 점수로 묶였습니다.

이제는 신호 유형별로 한 번만 계산하고, 가장 최신 사본의 날짜를 사용합니다. 공고가 다섯 개여도 채용 신호는 하나입니다. 날짜는 가장 최근 공고를 따릅니다.

5. 구인 게시판은 공개 API입니다(그리고 날짜는 거짓말을 합니다)

“미국용 BD 매니저를 뽑고 있다”는 가장 강력한 구매 신호 중 하나이며, 스크래핑이 필요하지도 않습니다. 7개의 지원자 추적 시스템이 공개 JSON 또는 XML로 공개 채용 공고를 제공합니다: Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Breezy HR, Personio.

코드
def greenhouse(slug, fetch):
    data = fetch(f"https://boards-api.greenhouse.io/v1/boards/{slug}/jobs")
    if not isinstance(data, dict) or "jobs" not in data:
        return None   # no board: "unknown", not "not hiring"
    return [{
        "title": j.get("title", ""),
        "date": to_date(j.get("first_published")),  # not updated_at
        "source": j.get("absolute_url", ""),
    } for j in data["jobs"]]

이들을 만들면서 얻은 교훈은 두 가지입니다.

  • 게시 날짜를 쓰고, updated_at은 절대 쓰지 마세요. Greenhouse는 채용 공고가 수정될 때마다 updated_at을 올립니다. 그래서 1년 전 공고도 “어제 게시됨”으로 바뀝니다.
  • 실제 응답을 테스트 픽스처로 저장하세요. 7개 보드의 실시간 응답을 모두 캡처해 파서 테스트에 사용합니다. 또한 주간 CI 작업이 실시간 보드도 호출하므로, 사용자가 알기 전에 API 변경을 먼저 알 수 있습니다.

6. 실패 상황에서도 정직하게

제가 실행한 가장 좋은 테스트는 우연히 생겼습니다. 거의 모든 웹사이트가 차단된 샌드박스에서 플러그인을 돌렸습니다. 회사 페이지를 단 하나도 읽지 못했습니다.

많은 에이전트는 검색 스니펫에서 빈틈을 채웠을 것입니다. 하지만 이 도구는 아무 단서도 찾지 못했다고 반환했습니다. 찾은 다섯 후보를 모두 "미검증"으로 표시하고, 무엇이 막혔는지 설명했으며, 끝내려면 무엇이 필요할지도 제안했습니다.

그 행동은 스킬에 내장되어 있습니다. 확인을 거친 회사 수가 요청한 수보다 적으면, 그렇게 말해야 합니다. 목록을 억지로 채우면 안 됩니다.

동명이인 기업도 마찬가지입니다. 테스트 중에 "1,000만 달러를 조달했다"는 헤드라인이 확인 대상 소프트웨어 회사와 거의 같은 이름을 가진 암호화폐 회사에 대한 것이라는 사실이 드러났습니다. 이제 이 스킬은 뉴스와 구인 게시판이 같은 웹사이트에 속하는지 확인한 뒤에만 사용합니다.

아직 하지 않는 것

  • 발견이 가장 어렵습니다. 특히 인도의 많은 소규모 회사들은 공개 피드가 없는 시스템을 통해 채용합니다. 그러면 채용 여부는 "알 수 없음"이 되고, Claude는 careers 페이지와 뉴스로 돌아갑니다.
  • 사람도, 이메일도 없습니다. 공개 페이지에서만 회사와 역할을 찾습니다. LinkedIn 스크래핑도 없고, 로그인 뒤의 내용도 다루지 않습니다.
  • 아무것도 보내지 않습니다. 공개된 사실만으로 만든, 회사별 첫 질문 한 개와 함께 순위가 매겨진 목록, 근거를 제공합니다.

직접 써 보고, 망가뜨려 보세요

코드는 MIT 라이선스이며, 의존성이 없고, 테스트가 46개 있습니다: github.com/MachGTM/lead-finder .

더 많은 공개 구인 게시판, 특정 시장에 맞는 더 나은 발견 소스, 다른 산업을 위한 스코어카드 예시를 위한 풀 리퀘스트도 환영합니다.

그리고 리드 도구가 추측을 "사실"로 바꾸는 걸 본 적이 있다면, 어떻게 그걸 잡아냈는지 듣고 싶습니다.

저는 MachGTM 을 만들고 있습니다. 작성하는 모든 사실마다 출처를 보여주는 AI SDR입니다. Lead Finder는 그 첫 번째 무료 오픈소스 단계입니다.

출처

  • 원문: https://dev.to/vaibhav_verma_2f309030365/i-built-a-lead-finder-that-refuses-to-guess-2im4 (2026-10-17 · Vaibhav Verma)

자료 변경 기록을 불러오는 중입니다.

다음 자료를 불러오는 중입니다.

후기

아직 후기가 없습니다

직접 적용한 결과와 주의할 점을 공유하는 공간입니다.

로그인하고 후기 쓰기

참고 자료 · 도구와 릴리스 노트

댓글