입금 계좌 로테이션과 AI 입금자명 자동 매칭 도입
목차
한 계좌만 쓰던 시절의 한계
파트너가 늘어나면서 단일 입금 계좌 구조가 슬슬 깨지기 시작함. 일 거래량이 일정 수준을 넘어가니 은행 쪽에서 거래 패턴을 의심하기도 하고, 한도에 막혀서 오후 늦게 입금이 튕기는 사고도 종종 났음. 파트너 입장에서는 한 번 튕긴 경험이 재충전 의욕을 꺾어버려서, 단순한 운영 이슈로 끝나지 않고 매출 직격타로 돌아왔음.
그래서 이번 스프린트에 파트너별 복수 계좌 로테이션을 도입했음. 동시에 입금자명 매칭에 AI를 끼워 넣었음. 두 기능이 별개처럼 보이지만 실은 한 묶음이라, 같이 풀어야 깔끔하게 떨어졌음.
로테이션 전략 정하기
후보 전략을 깔아두고 비교했음.
| 전략 | 장점 | 단점 |
|---|---|---|
| 라운드로빈 | 구현 단순 | 계좌별 한도 편차 무시 |
| 잔여 한도 가중치 | 한도 고갈 늦춤 | 상태 동기화 비용 |
| 파트너 고정 매핑 | 입금자 추적 쉬움 | 한도 분산 효과 적음 |
결국 잔여 한도 가중치 + 시간대별 폴백으로 갔음. 같은 계좌가 연속 선택되지 않도록 최근 N분 사용 이력을 빼는 쿨다운도 넣었음. 운영자가 특정 계좌를 임시 비활성화할 수 있는 토글도 같이 만들었음. 은행 점검 시간대 버틸 수 있어야 하니까.
- 선택 로직은 한 곳으로 모으고, 컨트롤러는 결과만 받아쓰게 분리함
- 계좌 풀 변경은 캐시 무효화 이벤트로 즉시 반영되게 함
- 로테이션 결정 근거를 로그로 남겨서, 사후에 왜 이 계좌가 뽑혔는지 추적 가능하게 함
입금자명 매칭, 사람 손에서 떼어내기
기존에는 입금자명이 주문자명과 다를 때(가족 명의, 회사 명의, 별명, 오타) 운영자가 눈으로 보고 매칭했음. 하루 수천 건 쌓이면 누가 봐도 지속 가능한 구조가 아님.
입력: 김민수 / 입금자: 김민쑤
입력: ㈜더블유에이 / 입금자: 더블유에이
입력: 이정훈(부) / 입금자: 이정훈
규칙 기반으로는 이런 변형을 다 못 잡음. 그래서 LLM에게 후보 주문 N개와 입금 메시지 1건을 던져서 가장 그럴듯한 매칭 + 확신도를 받아오게 했음. 확신도 임계치 위는 자동 매칭, 아래는 운영자 큐로 보냈음.
설계할 때 중요했던 포인트:
- 결정론적 규칙을 먼저 통과시키고, 남은 모호한 건만 LLM으로 보냄. 비용도 줄고 응답 시간도 줄음
- 프롬프트에 입금 시각·금액 일치 여부를 같이 넣어줘야 환각이 줄어듬
- 매칭 결과는 항상 사람이 되돌릴 수 있게 보존. AI가 틀렸을 때 원복 비용이 곧 신뢰도임
배포 후 며칠
자동 매칭률이 운영 큐 도착 기준으로 70%대 후반까지 올라왔음. 처음 며칠은 임계치를 보수적으로 잡고 운영자 피드백으로 천천히 올렸음. 로테이션 쪽은 한도 막힘이 거의 사라졌고, 특정 계좌에 이상 거래로 의심되는 패턴이 잡혔을 때 그 계좌만 잠시 빼고 돌릴 수 있어서 운영팀 만족도가 올라감.
남은 숙제는 LLM 비용 곡선을 어디서 꺾을지, 그리고 매칭 실패 케이스를 학습 데이터로 다시 환류시키는 파이프라인 정도. 다음
댓글 0
첫 댓글 달아줘.