먹튀 검증을 서비스로 만든다고 하면 다들 비슷한 그림을 떠올린다. 신고를 받아서 확인하고, 나쁜 사업자를 가려내고, 결과를 공개하는 것. 실제로 해보면 훨씬 많은 층위가 있다. 비정형 데이터 수집, 추정적 판단, 법무 리스크, 모더레이션, 내부자 통제, 이해상충. 한두 달짜리 사이드 프로젝트로는 겉을 스치기도 어렵다. 여기서는 우리가 먹튀검증 프로젝트를 처음 기획하고, 팀을 꾸리고, 운영을 안정화하기까지의 과정에서 부딪힌 문제와 해법을 기록한다. 어느 하나의 정답이라기보다, 이런 선택이 이런 결과를 낳았다는 흔적에 가깝다.
출발점, 왜 이 일을 하게 되었나
처음 시작은 익숙한 분노였다. 주변 지인이 몇 백만 원을 날린 사건이 이어졌고, 커뮤니티에 올라오는 후기들은 엇갈렸다. 사기 피해자는 분명히 존재하지만, 개별 후기만으로는 진위를 가늠하기 어려웠다. 관리되지 않은 정보는 금세 소문으로 변하고, 소문은 또 다른 피해자를 만든다. 중간에서 정보를 정제하고, 근거를 붙이고, 검증 레이어를 하나 더 두면 피해를 줄일 수 있지 않을까. 이 생각을 붙들고 초기 3개월을 실험에 썼다. 툴을 고르는 데 시간을 쓰기보다, 신고를 받아서 검증하고, 결과를 글로 기록하는 루틴을 매일 돌렸다. 반복되는 불편과 시간이 많이 든 부분이 자연스럽게 기술 요구사항이 되었다.
시장과 리스크의 구조를 먼저 해부했다
먹튀는 보통 두 가지 축으로 움직인다. 하나는 짧은 수명과 도메인 순환, 다른 하나는 과도한 프로모션과 추천인 구조다. 도메인은 4주에서 12주 주기로 바뀌고, 텔레그램이나 디스코드 같은 폐쇄형 채널을 통해 홍보가 이어진다. 사업자 정보는 대부분 차명 또는 역외 법인. 결제는 가상계좌와 코인 지갑을 섞는다. 이 구조는 추적을 어렵게 만들지만, 동시에 흔적을 남긴다. 재사용되는 CDN 설정, 동일한 애널리틱스 태그, 유사한 UI 템플릿, 운영 시간대의 패턴, 코인 지갑의 입출금 타임라인. 검증은 이 작은 증거를 모아 확률을 높이는 작업이었다.
팀 빌딩, 어떤 사람이 필요했나
초기에 6명으로 출발했다. 데이터 엔지니어 2명, 리서처 2명, 커뮤니티 운영 1명, 법무 자문 1명. 개발자보다 리서처의 기여가 컸다. 실제로 냄새를 맡아야 하는 영역이 많았기 때문이다. 리서처는 공개 자료를 뒤지는 사람만이 아니다. 고객센터에 전화로 사실 확인을 요청하고, 텔레그램 방에 잠입해 대화의 온도를 읽고, 홍보 문구의 흔한 전형을 판별한다. 기술팀은 수집과 정제를 자동화하고, 사람의 판단이 필요한 단계에서 도구를 제공한다. 법무는 초기에 바쁘지 않다. 단, 한번 필요할 때는 아주 깊게 필요하다. 그래서 외부 로펌과는 건당 자문 계약을, 내부 자문과는 월 10시간의 리테이너 계약을 병행했다.
채용 기준도 약간 달랐다. 경력 연수보다 집요함과 로그를 남기는 습관을 더 봤다. 우리 일의 절반은 재현성에 있다. 누군가 3주 전에 내린 결론을 오늘 다른 사람이 같은 데이터로 재확인할 수 있어야 한다. 문서화와 출처 표기, 데이터셋 스냅샷을 자동으로 묶는 습관이 필수였다. 회의에서는 반대 의견을 장려했다. 사람의 확신이 클수록 오판이 늘었다. 오판의 절반은 과도한 확신에서 나왔다.
데이터 전략, 수집부터 보존까지
초기 가설은 명확했다. 충분히 다양한 신호를 모으면 거짓말이 줄어든다. 그래서 데이터 소스는 다층으로 깔았다. 공개 기업정보, 도메인 WHOIS, SSL 인증서 발급 이력, 웹 스크린샷, 자바스크립트 번들 지문, 광고 네트워크 추적 ID, 텔레그램 공개 메시지, 코인 지갑 온체인 이벤트, 사용자 신고, 테스트 결제의 성공률. 수집은 합법성을 벗어나지 않는 범위에서만 했다. 로봇 배제 표준을 존중하고, 로그인이나 결제 뒤에 있는 페이지는 우리 계정으로 접근했다.
정제는 더 까다로웠다. 도메인 히스토리와 SSL 이력이 깔끔하지 않다. 리셀러를 거치면 정보가 섞인다. 그래서 레코드를 그대로 믿지 않고 시계열로 엮었다. 예를 들어 동일한 구글 애널리틱스 측정 ID가 3개의 사이트에 8주 간격으로 반복 출현하면, 운영 주기가 보인다. 코인 지갑도 단일 주소만 보면 안 된다. 입금 트랜잭션의 클러스터를 잡고, 일별 평균 입금 건수와 변동 폭을 본다. 특정 주간에 할인 코드가 풀린 경우, 입금 패턴이 비정상적으로 스파이크를 그린다. 이때 고객센터 연결 대기시간이 늘어나면, 이후 환불 지연 확률이 높아졌다.
보존 정책은 원본과 가공본을 분리했다. 원본은 변경 불가 스토리지에, 가공본은 분석 테이블에. 규제와 분쟁 대비다. 스크린샷은 해상도와 용량이 크다. 하루 평균 5천 장, 월 150GB 정도가 쌓인다. 해상도는 1440p로 고정했고, 이미지 중복 제거를 위해 퍼셉추얼 해시를 사용했다. 덕분에 저장 비용을 월 40% 정도 줄였다.

기술 아키텍처, 필요한 만큼만 복잡하게
기술은 처음부터 화려하게 짤 필요가 없다. 우리는 3개월간 크롤러와 ETL을 서버리스로만 돌렸다. 트래픽이 늘면서 병목이 생기자, 크롤러는 컨테이너로 옮기고, 스케줄러를 붙였다. 요지는 간단하다. 수집, 큐잉, 정제, 저장, 검증 요청, 알림. 각 단계 사이에 실패를 수용하는 큐를 뒀다. 먹튀 사이트는 갑자기 닫히거나 IP를 차단한다. 실패를 전제로 운영해야 했다.
웹 수집은 헤드리스 브라우저 두 종을 병행했다. 단일 엔진은 특정 방어 코드에 막히는 경우가 잦았다. 스크립트는 3가지 사용자 에이전트를 랜덤 로테이션했고, 접속 지리적 분포를 바꿔 보였다. 자동화의 범위를 지나치게 넓히지 않았다. 사람의 눈으로 한 번이라도 봐야 하는 페이지가 꼭 있다. 이용약관, 환불 규정, 약관의 히스토리. 약관은 크롤링 시 diff를 자동으로 생성해 리서처에게 알림을 보냈다. 약관 문구의 작은 수정이 큰 의미를 지닌다. 예를 들어 환불을 예치금 전환으로 바꾸는 문장 하나가 터닝포인트가 된다.
검증 프로세스, 신고부터 평판 갱신까지
초기에는 신고를 받으면 바로 표를 만들고 점수를 매겼다. 오판이 늘었다. 이후 세 단계로 바꿨다. 접수, 사실 확인, 합의된 결론. 접수 단계에서는 자동화된 기준으로 빠르게 분류했다. 반복 신고가 짧은 시간에 몰리면, 조작 가능성을 먼저 의심했다. 사실 확인은 리서처가 전화와 메신저, 테스트 결제를 통해 수행한다. 합의된 결론은 데이터에서 지지하는 증거의 질에 따라 등급을 매긴다. 최종 글에는 무엇을 알았고, 무엇을 아직 모르는지, 불확실성의 범위를 명확히 적었다.

평판 모델은 선형 점수 대신 신뢰구간을 사용했다. 보고서에서는 점수 하나만 보이지만, 내부에서는 범위가 움직인다. 예를 들어 환불 지연 신고가 10건일 때와 100건일 때는 같은 비율이라도 신뢰도가 다르다. 표본 크기, 출처 다양성, 반복성, 반박 대응 여부를 가중치로 뒀다. 반박이 신속하고 구체적이면, 일시적으로 점수 하락 폭을 줄였다. 반박이 템플릿 문안이거나 사실 확인에 응하지 않으면, 반대로 가중치를 늘렸다.
법무와 윤리, 선을 넘지 않는 규율
먹튀검증은 사실상 평판을 다룬다. 평판은 명예와 연결된다. 말 한 줄이 영업에 미치는 영향이 크다. 그래서 절차가 방패가 된다. 사실 확인 요청을 두 차례 보내고, 회신 시간이 지난 뒤에만 게시한다. 표현은 단정형이 아니라 관찰형으로 쓴다. 우리가 목격한 사실, 확인한 문서, 확인하지 못한 영역. 개인 정보는 최소한으로 처리한다. 계정 닉네임이나 전화번호가 원문 신고에 포함돼 있어도, 공개 글에는 비식별화된 형태로만 남겼다.
법적 분쟁의 가능성도 열어둬야 한다. 우리가 맞다고 확신하는 사안에서도, 법원은 별개로 판단할 수 있다. 그래서 증거 사슬을 유지하고, 타임스탬프가 있는 로그를 남겼다. 게시 전 리뷰는 최소 두 명이 한다. 게시 후 반박이 들어오면, 수신 즉시 임시 배지를 붙인다. 반박 검토 중 표시다. 이 과정이 귀찮아 보여도, 커뮤니티는 이 절차에서 신뢰를 얻는다.
커뮤니티 운영, 신뢰는 작은 약속을 지키는 습관에서 나온다
신고 포인트 보상을 바로 열지 않았다. 신고의 질보다 양이 먼저 늘어난다. 대신 피드백 루프를 짧게 만들었다. 신고가 접수되면 24시간 내에 진행 상태를 알려줬다. 처리 결과가 채택되면, 게시글에 공로 표기를 남겼다. 포상은 분기 단위로, 누적 기여를 기준으로 했다. 금전 보상은 소액으로 제한했다. 돈이 커지면 계정 농장이 생긴다. 대신 고정의 자리와 신용을 줬다. 상위 기여자에게 내부 채널 접근 권한을 주고, 주간 회의에 초청했다. 소속감이 생기자 허위 신고는 빠르게 줄었다.
모더레이션은 핵심 역량이었다. 플랫폼이 열리면, 일부 사업자는 우리 시스템을 역이용하려 한다. 경쟁사를 먹튀로 만들기 위한 허위 신고, 진실 일부를 섞은 왜곡, 전달 경로가 모호한 캡처 파일. 모더레이터는 거절할 줄 알아야 한다. 거절은 상냥하되 단호하게. 거절의 기준이 축적되면, 커뮤니티의 품질 기준이 된다.
평판 모델의 디테일, 점수는 숫자 이상의 문장이다
평판 점수는 사용자에게는 단순해야 한다. 그러나 내부 산정 과정은 상황에 맞춰 변해야 한다. 예를 들어 신규 사이트는 정보가 없다. 정보가 없다는 사실 자체를 표기해야 한다. 무응답 기간이 길어질수록 리스크를 가산한다. 반대로 1년 이상 운영하며, 환불 관련 분쟁이 없고, 고객센터 연결 지연이 2분 이내로 유지되는 곳은 안전성이 높다. 다만 이 안전성은 카테고리별로 다르다. 보너스 프로모션이 많은 카테고리는 기본 리스크를 10에서 20 사이로 상향했다.
오탐과 미탐은 피할 수 없다. 문제는 빈도와 후속 대응이다. 내부적으로 오탐 발생률을 월간으로 집계했고, 2%를 넘으면 산정 로직을 재검토했다. 공격적인 결론을 내린 글은 2주 뒤 재평가했다. 시간이 지나면 새로운 증거가 들어오고, 일부는 해명된다. 수정과 정정은 약점이 아니라 신뢰 자산이었다.
실전 에피소드, 무엇이 우리를 바꿨나
한 번은 입금 이후 출금이 24시간마다 지연되는 사례가 반복됐다. 커뮤니티에서는 먹튀로 규정하자고 난리가 났다. 그러나 약관에는 이미 출금 지연 조건이 작게 명시돼 있었다. 리서처가 고객센터 통화 내용을 녹취하고, 스크린샷에 타임스탬프를 붙여 정리했다. 결론은 먹튀라기보다 고의적 지연을 통한 이탈 유도. 점수는 높게 매기되, 범주를 다르게 분류했다. 같은 주에 해당 사업자는 출금 대기열 페이지를 개편했다. 이후 지연 신고는 절반으로 줄었다. 성급한 낙인 대신 구체적 분류가 유효했던 순간이다.
다른 사례에서는 정반대였다. 고액 캐시백을 내세운 신규 사이트가 폭발적으로 유입을 받았다. 전형적인 도메인 순환 패턴이 보였고, CDN 설정과 애널리틱스 태그가 과거 사건과 유사했다. 내부에서는 거의 확신했다. 그런데 테스트 출금이 3회 연속 성공했다. 당황스러웠다. 여유 자금으로 초기 평판을 사는 전술이었다. 우리는 결론을 미뤘다. 대신 주간 모니터링을 강화하고 경고 배지를 붙였다. 넉 달 뒤, 갑자기 출금 불가 신고가 쏟아졌다. 조기 경고가 향후 피해자 유입을 어느 정도 줄였다는 메시지를 받았다. 확실하지 않을 때는 시간을 사는 쪽이 옳았다.
운영 자동화, 사고는 새벽 3시에 온다
알림은 과잉보다 먹튀검증 과소가 위험했다. 그러나 노이즈가 쌓이면 알림 무시가 일상화된다. 우리는 알림을 세 가지로만 묶었다. 급격한 신고량 변동, 약관 변경, 코인 지갑 대규모 이체 패턴. 각각에 임계치를 썼다. 신고량은 주간 이동평균 대비 3표준편차 이상, 약관은 금지 단어 추가나 환불 조항 변경, 지갑은 일 50건 이상 대규모 전송. 야간 온콜은 주 1회만 배치했고, 대체 휴무를 보장했다. 사람을 태우는 운영은 3개월이면 무너진다. SLA 대신 SLO를 썼다. 신고 초기 응답 95%를 12시간 이내로, 일반 검증 80%를 72시간 이내로. 현실적인 목표를 잡았고, 달성률을 위키 최상단에 공개했다.
성장과 수익화, 이해상충을 다루는 방법
트래픽이 늘면 광고 제안이 들어온다. 많은 제안이 이해상충을 동반한다. 검증 대상 카테고리의 광고 집행은 원칙적으로 받지 않았다. 회색 지대가 있다면 백서에 사례를 명시하고, 리뷰 위원 3인의 동의를 받아야 한다는 절차를 넣었다. 수익화는 세 갈래로 나눴다. 상세 리포트 유료 구독, B2B 리스크 API, 익명화된 트렌드 데이터. 무료 영역과 유료 영역을 나누는 기준은 간단했다. 피해 예방에 필수인 정보는 무료로, 운영 비용을 상쇄하는 분석 가공물은 유료로.
가격은 테스트하며 정했다. 리포트 구독은 월 1만 9천 원으로 시작했고, B2B API는 월 20만에서 200만 원 사이의 티어로 구성했다. 6개월 동안 해지를 분석해 보니, API 고객의 70%는 경계 이벤트 알림에 가치가 있었다. 그래서 알림 정확도를 높이는 데 리소스를 더 썼다. 반대로 리포트는 요일 고정 발행이 구독 유지에 큰 영향을 미쳤다. 일정의 신뢰가 컨텐츠의 신뢰를 키웠다.
보안, 내부로부터의 위험을 과소평가하지 않는다
검증 시스템은 민감한 제보와 로그를 다룬다. 접근 제어가 허술하면 외부 공격보다 내부 사고가 더 치명적이다. 우리는 초기에 두 가지를 강제했다. 모든 관리자 계정에 하드웨어 키, 모든 데이터 접근 요청에 티켓 발급. 편의성은 떨어진다. 그러나 데이터가 새어 나가면 플랫폼은 오래가지 못한다. 로그는 1년 보관, 민감 필드는 90일 만에 비식별화. 제보자는 별도 암호화 키로 관리했다. 직원이 악의가 없어도, 개인 기기를 통해 데이터가 유출될 수 있다. 그래서 BYOD를 막고, 관리형 기기에서만 내부 시스템에 접근하도록 했다. 간혹 불편하다는 불만이 있었지만, 모두가 동의하는 한 줄로 정리했다. 우리가 지키지 못하면, 남들도 우리를 믿지 않는다.
실패에서 배운 것, 무리한 자동화와 성급한 확신
두 가지 큰 실패가 있었다. 첫 번째는 텔레그램 데이터 수집 자동화였다. 공개 채널에서 메시지를 긁어 규칙 기반으로 분류했다. 초기에는 잘 작동했다. 이후 사업자들이 문구를 바꾸고, 이미지로 텍스트를 대체했다. 탐지율이 40% 가까이 떨어졌다. 문제를 늦게 감지했고, 3주간 알림이 무의미했다. 이미지 OCR을 붙이고, 전처리를 강화해 복구했지만, 핵심은 다른 곳에 있었다. 자동화는 바뀌지 않는 것에만 강하다. 먹튀 검증이라는 도메인은 적응하는 상대를 전제로 한다. 자동화만 믿지 말 것.
두 번째는 성급한 확신이었다. 내부 토론에서 강한 언어가 나왔다. 조심성은 옳고, 강경함은 용기라고 오해하기 쉽다. 우리가 강경한 문구를 쓴 보고서는 소송 위협을 받았고, 추가 증거를 찾는 데 시간을 허비했다. 이후 표현 가이드를 정비했다. 구체적, 검증 가능, 재현 가능한 표현만 사용. 감정어 금지. 가이드 하나로 문제의 70%는 사라졌다.
초기 구축 체크리스트
- 법무 절차서: 사실 확인 요청, 반박 수용, 수정 공지의 단계와 SLA를 문서화한다. 데이터 보존 정책: 원본 불변성, 스냅샷 시점, 감사 로그를 정의한다. 평판 모델 초안: 신뢰구간, 가중치, 반박 반영 규칙을 수치로 박아둔다. 모더레이션 규칙: 허위 신고 판별 기준과 제재 수위를 명확히 적는다. 사고 대응 플랜: 알림 임계치, 야간 온콜, 외부 커뮤니케이션 템플릿을 준비한다.
핵심 운영 지표, 무엇을 매일 볼 것인가
- 초기 응답 시간: 신고 접수 후 첫 피드백까지의 중앙값을 12시간 이내로 유지한다. 검증 리드타임: 접수부터 게시까지의 평균 시간을 72시간 목표로 잡는다. 오탐률과 정정률: 월간 게시글 중 정정이 필요한 비율을 2% 이하로 만든다. 재발 경고 적중률: 경고 배지가 붙은 대상의 30일 내 부정 이벤트 발생 비율을 추적한다. 커뮤니티 신뢰 점수: 기여자 NPS 또는 유사 지표로 분기별 추세를 본다.
운영의 바닥력, 작은 습관이 프로젝트를 지킨다
하루가 바쁘면 원칙이 흔들린다. 그래서 바닥력을 습관으로 만들었다. 모든 조사 노트에는 날짜와 사람, 출처 링크를 남긴다. 모든 평판 변경에는 변경 이유와 원문을 첨부한다. 알림은 한 번 울리면 반드시 사람이 본다. 안 보면 알림을 줄이거나 임계치를 조정한다. 도메인 한 개의 생애주기를 기록해 본다. 등록, 광고, 운영, 문제, 대응, 폐쇄, 재등장. 이 사이클을 열 개만 모으면, 다음 열 개를 더 잘 본다.
먹튀검증은 추상적 가치의 싸움이 아니다. 잃어버린 돈의 숫자와, 잠 못 이루는 밤의 시간, 가족이나 동료에게 미안한 마음과 연결된다. 우리는 기술과 절차, 문장으로 이 마음을 조금이라도 덜어 주려 했다. 팀을 고르고, 데이터를 모으고, 자동화를 만들고, 법과 윤리를 지키며 운영하는 일은 느리지만 꾸준한 길이다. 확실한 것은 한 가지. 신뢰는 축적의 게임이고, 축적은 매일 같은 약속을 지키는 데서 시작한다.