sgkstudio.
엔지니어링

리드 스코어링 오탐, '팔로우' 글자가 판매자 필터였다

리드 스코어링 규칙에서 진짜 구매 문의를 떨어뜨린 범인은 '팔로우' 버튼 글자였지만, 그 글자만 떼자 판매자 글까지 전부 통과했다. 원문으로 채점하면 8점인 문의가 수집본에서는 4점을 받아 문턱 5점 아래로 떨어졌고, 버튼 글자를 떼자 후보 35건이 모두 6~8점으로 올라갔다. 진짜 원인은 구매 표현을 문장의 성격과 떼어 센 규칙 세 곳이었고, 고친 뒤 한 번도 열어 보지 않은 표본 44건에서 정밀도가 0.37에서 0.68로 올랐다.

2026-09-16'팔로우' 글자만 뗀 재채점 — 후보 35건 전부 6~8점, 기존 판매자·칼럼 감점 적중 0건, 정밀도 0.19로 기각손대지 않은 표본 44건 — 정밀도 0.37(14/38) → 0.68(13/19), 재현율 1.00 → 0.93(13/14), 14일 실데이터 리드 2건 → 10건비로그인 검색의 검색어 포함률 59~63% → 10%, 로그인 옵션 10/10 · 감시기 첫 회차 29% 오판 → 10분 창·첫 단어 기준으로 정상 79~85% / 붕괴 13~19%

진짜 구매 문의는 왜 4점을 받았나

리드 스코어링에서 진짜 구매 문의가 문턱 아래로 떨어진 원인은 처음 짚은 곳에 있지 않았다. 여기서 리드 스코어링은 수집한 글마다 '견적'이나 '맡길 곳' 같은 구매 표현에 점수를 더하고, 칼럼이나 홍보 글에 흔한 표현에는 점수를 빼서 살 사람이 쓴 글만 골라내는 방식이다. 우리 시스템은 5점 이상인 글을 리드 후보로 올린다.

증상은 한 건에서 드러났다. 한 스레드 계정이 올린 구매 문의를 원문 그대로 채점하면 8점이 나왔는데, 수집 시스템에 쌓인 판본으로 채점하면 4점이었다. 같은 글이 저장 형태 하나 차이로 문턱 5점을 넘지 못하고 후보에서 빠졌다.

두 판본을 나란히 놓으니 차이는 앞머리에 있었다. 수집본은 화면을 그대로 긁어 오기 때문에 본문 앞에 작성자 핸들, '팔로우' 버튼 글자, 토픽 태그, 게시 시각, 반응 수가 붙는다. 그중 '팔로우'라는 글자가 정보성 글 감점 규칙에 걸려 4점이 깎이고 있었다.

처음 의심한 것 — 버튼 글자 하나만 떼면 끝난다

처음 세운 가설은 단순했다. 감점을 받은 범인이 '팔로우' 글자이니 채점 전에 그 글자만 지우면 원래 점수가 돌아온다고 봤다. 규칙 자체는 멀쩡하고, 입력에 섞인 잡음 하나가 문제라는 진단이었다.

이 가설이 그럴듯했던 이유도 있다. 원문 8점과 수집본 4점의 차이가 감점 폭 4점과 정확히 맞아떨어졌다. 한 건의 산수가 딱 맞으니 다른 원인을 찾아볼 동기가 약했다.

그래도 한 건의 산수만 믿고 규칙을 바꾸지는 않았다. 버튼 글자를 떼는 변경은 스레드에서 긁은 모든 글의 점수를 움직인다. 다른 글에서 무슨 일이 생기는지 먼저 봐야 했다.

가설은 무엇으로 확인했나

확인 수단은 두 가지였다. 첫째는 재채점이다. 기존 규칙으로 올라와 있던 리드 후보 35건을 '팔로우' 글자만 뗀 본문으로 다시 채점해, 점수 분포가 어떻게 움직이는지 봤다.

둘째는 정답지다. 사람이 한 건씩 읽고 진짜 구매 문의인지 표시한 글 159건을 만들었다. 후보 35건에 따로 뽑은 표본 세 묶음을 더했다. 규칙은 후보와 표본 1·2를 보면서 다듬고, 표본 3(44건)은 끝까지 열어 보지 않고 평가용으로 남겨 뒀다.

표본 3을 떼어 둔 이유가 있다. 표현 규칙은 눈앞의 예문에 맞춰 조금씩 늘어나기 쉬워서, 규칙을 만든 글로 규칙을 채점하면 점수가 부푼다. 한 번도 보지 않은 글에서 버텨야 실제 성능이라고 부를 수 있다.

'팔로우'만 떼면 왜 판매자 글까지 통과했나

재채점 결과는 가설을 정면으로 반박했다. 버튼 글자를 떼자 후보 35건이 전부 6~8점으로 올라갔다. 걸러야 할 판매자 글과 칼럼까지 모두 문턱을 넘었고, 기존의 판매자 감점과 칼럼 감점은 35건 가운데 한 건도 잡아내지 못했다.

뒤집어 읽으면 이런 뜻이다. '팔로우' 감점은 분명 버그였지만, 버그가 살아 있는 동안 그 감점이 우연히 판매자 필터 노릇을 했다. 판매자 글도 스레드에서 긁으면 앞머리에 '팔로우'가 붙으니, 모든 글이 똑같이 4점씩 깎이면서 점수가 애매한 글이 한꺼번에 떨어져 나갔다. 그 틈에 진짜 문의도 같이 떨어졌을 뿐이다.

'팔로우'만 떼는 안을 정답지로 재 보니 정밀도가 0.19였다. 알림 대부분이 구매 문의가 아니라는 뜻이고, 그대로 두면 경쟁 제작사가 올린 홍보 글에 영업 답글을 다는 사고로 이어진다. 이 안은 기각했다.

점수 문턱을 5점에서 7점으로 올리는 안도 따져 봤다. 하지만 이 점수는 구매 표현이 몇 개 들어 있는지를 세는 스위치에 가깝다. 문턱을 올리면 발주 내용을 한 줄로만 적은 글이 가장 먼저 탈락한다. 입력 잡음과 규칙 결함을 문턱 조정으로 덮을 수는 없었다.

진짜 원인은 무엇이었나 — 구매 표현을 문맥 없이 셌다

판매자 감점이 한 건도 걸리지 않은 이유를 찾으려고 규칙을 한 줄씩 대조했다. 원인은 세 곳이었다. 셋 다 어떤 단어가 있는지만 보고, 그 단어가 어떤 문장 안에 있는지는 보지 않았다.

  • 명사형 신호가 누구의 글에나 나온다. '견적', '제작 업체', '외주 맡' 같은 말은 발주자 글뿐 아니라 칼럼과 제작사 글에도 똑같이 나온다. 단어가 있다는 사실만으로는 사는 쪽인지 파는 쪽인지 가를 수 없다.
  • 질문 어미를 문장과 떼어서 셌다. '있을까?', '찾습니다'를 어미만 보고 구매 신호로 셌고, 그래서 'skill 같은게 있을까?'나 '과정을 찾습니다'처럼 구매와 무관한 문장이 점수를 받았다.
  • 화면 요소가 점수를 받았다. '홈페이지 제작업체' 같은 토픽 태그는 작성자가 쓴 문장이 아니라 화면에 붙는 분류 표시인데, 구매 점수를 받고 있었다. '팔로우'가 감점을 받은 사정과 뿌리가 같다.

정리하면 '팔로우' 글자는 원인이 아니라 증상 가운데 하나였다. 채점기는 작성자 문장과 화면 장식을 가르지 못했고, 작성자 문장 안에서도 문맥을 보지 않았다. 버튼 글자만 떼면 두 번째 결함이 그대로 드러날 수밖에 없었다.

검색 결과는 언제부터 검색어와 무관해졌나

규칙을 조사하던 중에 더 큰 결함이 나왔다. 새 글을 15분마다 훑는 리드 감시 작업은 로그인 없이 스레드 검색을 쓰는데, 이 비로그인 검색이 2026년 9월 12일 무렵부터 검색어와 상관없는 최신 글 피드를 돌려주고 있었다. 채점 규칙이 아무리 정확해도 들어오는 글이 엉뚱하면 리드는 나오지 않는다.

감시 토픽으로 모은 글 가운데 검색어가 실제로 들어 있는 비율을 날짜별로 셌다. 8월 20일부터 9월 5일까지는 59~63%였는데, 9월 10일 45%, 9월 12일 15%, 9월 13일 10%로 내려갔다. 9월 14일 8시 이후에는 시간당 100건 중 5건만 검색어를 담았다. 같은 명령에 로그인 옵션만 붙이면 10건 중 10건이 검색어를 담았다.

비로그인 검색 결과 중 검색어가 든 글의 비율을 날짜별로 그린 막대그래프. 8월 20일~9월 5일 59~63%, 9월 10일 45%, 9월 12일 15%, 9월 13일 10%, 9월 14일 8시 이후 시간당 5/100. 같은 명령에 로그인 옵션을 붙이면 10/10.
수집 건수는 늘었는데, 검색어가 든 글은 59~63%에서 10%로 내려갔다

이 붕괴를 어떤 감시기도 잡지 못한 이유가 더 뼈아팠다. 수집 건수는 오히려 늘어서 하루 1,523건, 1,997건이 쌓였다. 건수가 줄면 울리는 감시기는 있었지만, 건수는 멀쩡한데 내용이 엉뚱해지는 상황을 재는 장치는 없었다.

같은 시스템의 6시간 주기 수집은 로그인 세션으로 검색하므로 멀쩡했다(77/107). 로그인 검색은 2026년 7월 10일에 이미 전체 키워드의 표준으로 정해 뒀는데, 15분 감시 작업 하나만 옛 방식에 남아 있었다. 이 경로가 로그인 없이 돌아서 생긴 문제는 처음이 아니다. 수집한 글에서 원글 주소가 빠진 세 가지 원인에서 다룬 결함도 같은 경로에서 났다.

판정 규칙과 검색을 어떻게 고쳤나

고친 방향은 하나다. 채점기가 보는 본문을 작성자가 쓴 문장으로 좁히고, 구매 표현은 그 표현이 놓인 문장의 성격까지 보고 센다.

  • 채점 전에 화면 요소를 뗀다. 스레드 글은 작성자 핸들, 토픽 태그, 게시 시각, 반응 수를 지운 본문으로만 채점한다. 앞머리를 정확히 떼려면 작성자 핸들을 알아야 해서, 채점 함수가 본문과 채널에 더해 작성자까지 입력으로 받게 바꿨다.
  • 명사형 구매 신호는 묻거나 부탁하는 문장 안에서만, 따옴표 밖에서만 센다. 중간 강도 신호는 사람을 가리키는 말 바로 뒤에 올 때만 센다.
  • 지난 일, 포기, 이미 받은 의뢰는 뺀다. '맡겼는데', '맡기려다가', '맡기다가', '맡기셨', '의뢰를 받' 같은 표현이 여기에 든다.
  • 세 부류는 무조건 0점이다. 판매자로 판정한 글, 독자에게 '찾고 계신가요?'나 '겪은 적 있으신가요?'처럼 수요자를 부르는 글, '나는 웹개발자야'처럼 스스로 공급자라고 밝힌 글이다. 판정 게이트의 판매자 판정과 기준을 맞췄다.
  • 구매가 아닌 글은 따로 분류한다. 업체끼리의 협업 제안과 강사 구인은 협업 요청으로, '뭐 배우면'이나 '맡겨보신 분' 같은 글은 관계 분류로 보낸다.
  • 판정 게이트도 점수를 낸 본문과 같은 본문을 본다. 발주자가 원하는 기능을 가리키는 '상담신청서' 같은 단어는 판매 문법으로 보지 않는다.
  • 15분 감시 작업의 검색에 로그인 옵션을 붙였다.
고친 뒤의 판정 흐름도. 수집한 글에서 핸들·토픽 태그·시각·반응 수를 뗀 뒤, 판매자·수요자를 부르는 글·공급자 자기소개는 0점으로 제외한다. 나머지는 묻거나 부탁하는 문장 안, 따옴표 밖의 구매 신호만 채점하고, 5점 이상이면 같은 본문으로 판정 게이트를 거쳐 사람에게 알린다.
화면 요소 제거가 맨 앞, 0점 규칙이 채점보다 앞에 온다

고친 뒤 판정 성능은 얼마나 달라졌나

끝까지 열어 보지 않은 표본 3(44건)으로 판정기 전체를 쟀다. 판정 게이트까지 거친 최종 판정으로 정밀도는 0.37(38건 중 14건)에서 0.68(19건 중 13건)로 올랐다. 재현율은 1.00에서 0.93(14건 중 13건)으로 조금 내려갔다.

평가용 표본 44건 기준 판정 성능 표. 기존 규칙은 정밀도 0.37(14/38), 재현율 1.00. 화면 요소 제거와 문맥 규칙, 판정 게이트를 적용한 뒤에는 정밀도 0.68(13/19), 재현율 0.93(13/14).
재현율을 한 건 내주고 정밀도를 0.37에서 0.68로 올렸다

놓친 한 건은 견적을 받아 놓고 고민 중인 발주자였다. 이미 받은 의뢰를 빼는 규칙이 이 글까지 걸렀다. 알림 대부분이 헛걸음이던 상태에서 절반 넘게 맞는 상태로 옮기는 대가로, 이 한 건은 감수하기로 했다.

실데이터로도 확인했다. 최근 14일치 수집 글에서 리드로 분류된 글이 2건에서 10건으로 늘었다. 한 건씩 읽어 보니 9건이 진짜 구매 문의였고, 1건은 병원 사진작가 구인 글이었다.

회귀 테스트는 29건을 새로 넣었고, 수집기 전체 테스트 366건이 통과했다. 이번 변경과 무관한 기존 실패 1건은 그대로 남아 있다.

같은 검색 붕괴를 다시 놓치지 않으려면 무엇을 재야 하나

검색 붕괴가 조용히 지나간 이유는 건수만 재고 내용은 재지 않았기 때문이다. 그래서 감시 회차마다 모은 글 중 검색어가 든 비율을 기록하고, 이 비율이 30% 밑으로 내려가면 운영 대시보드에 빨간불을 켜게 했다.

하한 30%를 날짜별 숫자에 대 보면 두 구간 사이에 놓인다. 정상일 때 59~63%였고, 붕괴가 본격화한 9월 12일부터는 15% 이하였다. 건수 감시기와 달리 이 지표는 검색이 엉뚱한 글을 많이 돌려줄수록 크게 떨어지므로, 이번 같은 붕괴를 정면으로 잡는다.

감시기가 첫 회차에 빨간불을 켠 이유는 무엇인가

새 감시기는 배포 직후 첫 회차(11시 30분)에 29%를 찍고 빨간불을 켰다. 로그인 검색으로 바꿨는데도 붕괴가 이어진다는 신호처럼 보였다. 하지만 틀린 쪽은 검색이 아니라 감시기였다.

회차별로 갈라 다시 셌다. 그 회차의 로그인 검색은 검색어 첫 단어 기준으로 37건 중 30건(81%)이 검색어를 담았고, 직전 비로그인 회차는 25건 중 0건이었다. 감시기 설계에 결함이 두 개 있었다.

  • 집계 창이 20분이라 15분 간격 회차 두 개가 섞였다. 비로그인 회차의 0건이 로그인 회차의 정상 수치를 끌어내렸다.
  • 검색어 단어가 전부 들어 있어야 관련 글로 셌다. '홈페이지 제작 업체'로 검색해 받은 '홈페이지 제작 대행' 글은 분명 관련 글인데도 무관으로 셌다.

집계 창을 회차 간격 15분보다 짧은 10분으로 줄이고, 기준을 검색어 첫 단어로 바꿨다. 과거 기록에 다시 대 보니 정상인 날은 79~85%, 붕괴한 날은 13~19%로 하한 30%를 사이에 두고 깔끔하게 갈렸다. 두 결함에는 회귀 테스트 3건을 붙였다.

감시기 집계 방식별 결과 표. 20분 창과 단어 전부 포함 기준은 29%로 빨간불(오판). 회차별 첫 단어 기준으로는 로그인 검색 회차 30/37(81%), 직전 비로그인 회차 0/25. 10분 창과 첫 단어 기준으로 고친 뒤 정상인 날 79~85%, 붕괴한 날 13~19%로 하한 30%를 사이에 두고 갈린다.
빨간불의 원인은 검색이 아니라 집계 창과 판정 기준이었다

새 지표를 켠 첫날의 빨간불은 시스템보다 지표 설계부터 의심해야 한다. 이번에도 회차별로 갈라 보기 전까지는 멀쩡한 로그인 검색이 범인처럼 보였다.

새 서비스 검색어는 왜 바로 판정하지 않았나

같은 계기로 새로 판매할 서비스의 검색어 32개도 로그인 검색으로 실측했다. 검색 한 번에 7~12건이 돌아왔고, 검색어가 든 비율은 단어 하나짜리 검색어만 높았다. '광고대행사'는 7건 중 7건, '세무조사'는 9건 중 9건이었다. '광고 대행 추천'이나 '노무사 추천' 같은 문장형 검색어는 8건 중 0~1건에 그쳤다.

최근 7일 안에 올라온 구매 글은 0건이었다. 그렇다고 이 검색어들을 버리지는 않았다. 스냅샷 한 장으로는 수요가 없다고 말할 수 없어서, 10개를 6시간 주기 수집에 넣고 2026년 9월 28일에 결과를 보고 가지를 치기로 했다.

아직 남은 한계

  • 남은 오탐은 두 부류다. 사진작가나 인쇄소처럼 우리 서비스가 아닌 공급자를 찾는 글, 그리고 제작사가 쓴 일기 속 '견적 의뢰가 왔다' 같은 문장이다.
  • 오타가 섞인 문의 2건('추천헤줘', '소개해주실뷴')을 놓친다.
  • 정답지 159건이 전부 홈페이지 수요라, 새 서비스 검색어에서 판정이 얼마나 정확한지는 아직 잴 표본이 없다.

이번 일에서 남는 교훈은 두 가지다. 감점 하나를 지웠더니 판정이 무너졌다면, 그 감점이 그동안 무엇을 대신 막고 있었는지부터 봐야 한다. 그리고 수집 건수가 멀쩡하다는 사실은 수집 내용이 멀쩡하다는 증거가 아니다.

규칙 기반 판정기나 수집 파이프라인을 운영하면서 비슷한 증상을 겪고 있다면 상담에서 사례를 나눌 수 있다.

같은 방식으로 우리 업무를 재보고 싶다면

이 글에 쓴 계측·판정·자동화는 저희가 실제로 매일 돌리는 방식 그대로입니다. 어떤 작업을 자동화할 수 있고 어디를 사람이 잡아야 하는지, 현재 업무 흐름을 놓고 같이 짚어 드립니다.

새 글이 올라오면 알려 드립니다

이런 계측 기록을 새로 쓰면 메일로 한 통 보냅니다. 광고나 판촉은 보내지 않습니다.