블로그로 돌아가기
Engineering

Paperclip 자율 회사에서 Veille API 사용하기

Josselin Liebe
Josselin Liebe

Paperclip은 자율 AI 회사를 운영하기 위한 오픈소스 플랫폼입니다. 목표를 정의하고, 에이전트(Claude, Codex, OpenClaw 또는 HTTP 호환 봇)를 고용하여 조직도로 구성한 다음 작업을 맡깁니다. 하트비트가 일정에 따라 에이전트를 깨웁니다. 티켓은 모든 결정을 추적합니다. 예산은 각 에이전트가 사용할 수 있는 금액을 제한합니다.

에이전트가 사용자 데이터(가입, 리드, 결제, 아웃리치)를 처리할 때는 받은 데이터를 검증해야 합니다. 미검증 이메일을 처리하는 AI 기반 리드 자격 검증 워크플로우는 노이즈를 생성합니다. 확인되지 않은 IBAN을 수락하는 결제 에이전트는 거래 실패를 만들어냅니다. 일회용 이메일 주소를 무시하는 가입 자동화는 유령 계정으로 전환 지표를 부풀립니다.

이 글은 자율 비즈니스의 각 단계에서 데이터 품질 검사를 추가하기 위해 Veille API를 Paperclip 에이전트에 연결하는 방법을 보여줍니다.

Paperclip 회사에서 Veille의 역할

Veille는 네 가지 검증 엔드포인트를 제공합니다:

엔드포인트 검증 내용
GET /v1/intelligence/email 일회용 감지, 위험 점수, SMTP 확인
GET /v1/intelligence/domain 도메인 연령, DNS, 위협 신호
GET /v1/intelligence/ip VPN/프록시/Tor, 위협 점수, 지리적 위치
GET /v1/vat/iban IBAN 유효성, BIC, 은행 이름, SEPA 회원 여부

각 엔드포인트는 단일 쿼리 매개변수를 수락하고 구조화된 JSON 응답을 반환합니다. HTTP GET 요청을 할 수 있는 모든 Paperclip 에이전트(내장 HTTP 에이전트 유형 포함)는 이를 직접 호출할 수 있습니다.

가장 자연스러운 패턴은 원시 입력(폼 제출, CRM 가져오기, 웹훅 이벤트)과 해당 데이터에 따라 행동하는 에이전트(아웃리치, 결제, 프로비저닝) 사이에 위치하는 전담 데이터 품질 에이전트입니다. 조직도의 필터 레이어로 생각하시면 됩니다.

사용 사례 1 - 리드 자격 검증

시나리오: CMO 에이전트가 아웃바운드 캠페인을 운영합니다. 리드는 폼, 가져온 CSV 파일 또는 서드파티 통합을 통해 유입됩니다. 아웃리치 에이전트에 리드를 전달하기 전에 데이터 품질 검사로 전환 가능성이 없는 주소를 제거합니다.

조직도 위치: CRM 가져오기 단계와 아웃리치 에이전트 사이.

Veille 호출:

  • GET /v1/intelligence/email?query={{email}} - disposablerisk_score 확인
  • GET /v1/intelligence/domain?query={{domain}} - 최근 등록된 도메인의 domain_age_days 확인

결정 로직:

IF email.disposable == true        → discard lead
IF email.risk_score >= 75          → discard lead
IF domain.domain_age_days < 30     → flag for manual review
ELSE                               → pass to outreach agent

하트비트 설정: 새 리드가 도착할 때마다 또는 일정에 따라(아웃리치 배치 실행 전 매 4시간 또는 매일 밤) 데이터 품질 에이전트에서 하트비트로 검사를 실행합니다.

티켓 흐름:

[CRM Import Agent]
  creates ticket → "New leads batch: 240 records"
        ↓
[Data Quality Agent]
  validates each email via Veille API
  creates ticket → "Batch cleaned: 198 passed, 42 discarded"
        ↓
[Outreach Agent]
  processes 198 verified leads

단일 Paperclip 티켓에 모든 Veille API 호출과 그 결과가 기록됩니다. 감사 로그에는 어떤 리드가 왜 삭제되었는지 정확히 표시됩니다 - disposable: true, risk_score: 91, 또는 domain_age_days: 3.

사용 사례 2 - 가입 사기 탐지

시나리오: 플랫폼에서 무료 체험을 제공합니다. 가입 자동화 에이전트가 새 계정을 프로비저닝합니다. 검증 단계 없이는 일회용 이메일과 VPN IP가 무제한 가짜 계정을 만들고, 체험 리소스를 소모하며, 활성화 지표를 왜곡할 수 있습니다.

조직도 위치: 웹훅 수신기와 프로비저닝 에이전트 사이.

Veille 호출:

  • GET /v1/intelligence/email?query={{email}} - disposable, risk_score, smtp_valid 확인
  • GET /v1/intelligence/ip?query={{ip}} - is_vpn, is_proxy, threat_score 확인

복합 점수 로직:

composite = (
    email["risk_score"] * 0.60
    + ip["threat_score"] * 0.40
)

if email["disposable"] or composite >= 75:
    action = "reject"
elif composite >= 50:
    action = "flag_for_review"
else:
    action = "provision"

이 로직은 프로비저닝 티켓이 생성되기 전에 데이터 품질 에이전트 내에서 실행됩니다. 에이전트는 추적 가능성을 위해 전체 API 응답을 첨부한 티켓 댓글로 결과를 게시합니다.

이 탐지 패턴에 대한 전체 안내는 OpenClaw에서 일회용 이메일 차단하기를 참조하세요 - 동일한 Veille 엔드포인트는 Paperclip 내의 OpenClaw를 포함한 모든 HTTP 가능 에이전트에서 작동합니다.

사용 사례 3 - 금융 검증

시나리오: 결제 또는 지급 에이전트가 B2B 온보딩 중에 IBAN 및 VAT 번호를 처리합니다. 잘못된 IBAN은 이체 실패를 일으킵니다. 비활성 VAT 번호는 세금 규정 준수 문제를 만듭니다.

조직도 위치: 결제 에이전트가 결제 데이터를 작성하기 전에 Veille를 직접 호출합니다.

Veille 호출:

  • GET /v1/vat/iban?query={{iban}} - valid, in_sepa_zone, bank_name 확인
  • GET /v1/vat?query={{vat_number}} - valid, company_name, country_code 확인

결정 로직:

IF iban.valid == false               → reject payment setup, notify COO
IF iban.in_sepa_zone == false        → flag: non-SEPA transfer requires manual approval
IF vat.valid == false                → charge local VAT rate, do not apply reverse charge
IF vat.country_code != customer.country → flag for compliance review
ELSE                                 → proceed with onboarding

티켓 예시:

#1087 - Onboard new customer: Acme GmbH
Billing Agent - In Progress

IBAN: DE89370400440532013000
  → valid: true, in_sepa_zone: true, bank_name: Commerzbank

VAT: DE123456789
  → valid: true, company_name: Acme GmbH, country_code: DE

Result: onboarding approved, reverse charge applied.

모든 검증 결과는 티켓 스레드와 변경 불가능한 감사 로그의 일부입니다. 규정 준수 검토에서 온보딩 시점에 VAT 번호가 활성화되어 있었다는 증거가 필요한 경우, 데이터가 존재합니다.

HTTP 에이전트 설정

Paperclip은 하트비트를 받을 수 있는 모든 에이전트를 지원합니다. Veille API 호출의 경우, 가장 간단한 설정은 Bash 또는 HTTP 에이전트를 사용합니다.

데이터 품질 에이전트를 위한 SKILLS.md:

# Data Quality Agent

## Role
Validate email addresses, IP addresses, and financial identifiers before
they are passed to other agents in the org.

## Veille API
Base URL: https://api.veille.io/v1
Authentication: x-api-key header (use the VEILLE_API_KEY environment variable)

## Endpoints available
- Email validation: GET /v1/intelligence/email?query={email}
- Domain validation: GET /v1/intelligence/domain?query={domain}
- IP validation: GET /v1/intelligence/ip?query={ip}
- IBAN validation: GET /v1/vat/iban?query={iban}
- VAT validation: GET /v1/vat?query={vat_number}

## Decision thresholds
- email.disposable == true → discard
- email.risk_score >= 75 → discard
- email.risk_score 50–74 → flag for review
- ip.is_vpn or ip.is_proxy → flag for review
- ip.threat_score >= 75 → discard
- iban.valid == false → reject
- vat.valid == false → do not apply reverse charge

## Output
Post results as a ticket comment with the full API response.
Create a summary line: "Validated: {result} - {reason}".

Bash 에이전트 호출 예시:

#!/bin/bash
# Run by the Data Quality Agent on heartbeat

EMAIL=$1
API_KEY=$VEILLE_API_KEY

response=$(curl -s \
  "https://api.veille.io/v1/intelligence/email?query=${EMAIL}" \
  -H "x-api-key: ${API_KEY}")

disposable=$(echo "$response" | jq -r '.disposable')
risk_score=$(echo "$response" | jq -r '.risk_score')

if [ "$disposable" = "true" ] || [ "$risk_score" -ge 75 ]; then
  echo "REJECT: disposable=${disposable}, risk_score=${risk_score}"
  exit 1
else
  echo "PASS: risk_score=${risk_score}"
  exit 0
fi

종료 코드는 Paperclip에 워크플로우를 계속할지(0) 아니면 중단하고 검토 티켓을 생성할지(1) 알립니다.

조직도 패턴

여러 워크플로우에서 Veille 검증을 사용하는 Paperclip 회사는 다음과 같은 모습일 수 있습니다:

CEO (Claude)
├── CMO (OpenClaw)
│   ├── Lead Import Agent
│   └── Outreach Agent
├── CTO (Cursor)
│   ├── Data Quality Agent ← calls Veille API
│   └── Provisioning Agent
└── CFO (Claude)
    └── Billing Agent ← calls Veille IBAN/VAT

데이터 품질 에이전트는 여러 팀에 서비스를 제공합니다: CMO의 아웃리치 파이프라인을 위한 리드를 검증하고 CTO의 프로비저닝 흐름을 위한 가입을 검증합니다. 하나의 에이전트, 하나의 예산 라인, 중앙화된 검증 로직.

비용 가시성

Paperclip은 에이전트별 비용을 추적합니다. Veille API 호출은 요청당 예측 가능한 비용이 있으므로, 예상 볼륨에 따라 데이터 품질 에이전트의 월별 예산을 추정할 수 있습니다.

예를 들어, 플랫폼이 월 10,000건의 가입을 처리하고 가입당 두 개의 Veille 엔드포인트(이메일 + IP)를 호출한다면, 예산에 책정해야 할 API 요청 수를 정확히 알 수 있습니다. Paperclip에서 에이전트의 월별 지출 한도를 적절히 설정하세요. 에이전트가 한도에 도달하면 자동으로 중단됩니다 - 초과 없음.

관련 글