FDE Build Project · 회계 · 법인카드

법인카드 해외 거래,
규칙엔진이 자동 분류합니다

신스타프리젠츠의 법인카드 해외(영문) 거래를 결정론적 규칙엔진으로 자동 분류하고, 애매한 "보류" 건만 카드역할·과거 이력·구글드라이브 품의서 매칭 근거와 함께 담당자에게 추천합니다. 카드번호는 서버에 저장하지 않습니다.

🏢 신스타프리젠츠 👥 경영지원 · 회계 담당자 🧪 dev 배포 · 재현 검증 완료
87.4%영문 거래 자동 분류율 (실데이터)
100%자동 분류 정답 일치율 (오분류 0)
0자리서버에 저장되는 카드번호 (뒤 4자리만)
3동작올리기 → 애매한 것만 확정 → 내려받기
The Challenge

해외 거래 분류의 세 가지 벽

영문 가맹점명 거래는 정산 담당자에게 특히 손이 많이 가는 작업이었습니다.

1

영문 거래를 한 건씩 수작업 판단

가맹점명이 영문이라 담당자가 용도·계정과목을 하나씩 판별해야 했고, 같은 가맹점도 거래마다 용도가 갈렸습니다(같은 아마존이라도 부품=재료비 vs 출장구매=출장비).

2

판단 근거가 흩어져 재현이 어려움

과거 어떤 용도로, 누가, 어떤 품의로 처리했는지 근거가 분산돼 일관성·재현성 확보와 감사 추적이 어려웠습니다.

3

카드번호(PAN) 유출 우려

카드 상세내역 파일에는 전체 카드번호가 포함되어, 자동화 도구에 업로드할 때 유출·보안(PCI 스코프) 우려가 있었습니다.

The Solution

원본 엑셀을 올리면, 라벨링 엑셀이 나옵니다

담당자는 카드내역 원본을 그대로 올리고, 명확한 건은 자동 정리되며 애매한 건만 근거와 함께 확정하면 됩니다.

STEP 1

업로드

카드내역 엑셀(.xls/.xlsx) 원본을 /labeling/에 그대로 업로드.

STEP 2

인제스트 · 보안

카드번호를 뒤 4자리로 절단하고 영문 거래만 추출.

STEP 3

규칙엔진 분류

결정론적 규칙으로 자동 분류, 애매한 건만 "보류"로 분리.

STEP 4

보류 추천

품의·카드역할·이력 근거와 함께 용도 추천.

STEP 5

다운로드

확정 후 라벨링 엑셀(카드번호 마스킹) 내려받기.

엔진

결정론적 규칙엔진

LLM 대신 우선순위 규칙으로 분류해, 재현 가능하고 감사 추적이 되며 호출 비용이 들지 않습니다.

  • 우선순위 R0→R5→R2→R3→R1→R4→미해당
  • R0 환불/공란·R5 보류 가맹점(eBay·Ali·DigiKey 등) → 보류
  • R2 구독/SaaS·R3 교통·숙박·R4 USD 식음료 → 자동 분류
  • 출력에 적용 규칙·사유를 함께 기록(감사용)
보안 · 핵심

카드번호를 저장하지 않는 설계

업로드 즉시 카드번호를 뒤 4자리로 절단하고 전체 PAN 컬럼을 버립니다. "저장하지 않는 것이 가장 안전"이라는 원칙입니다.

  • DB·세션·로그·출력 어디에도 16자리 PAN 미영속
  • 출력 엑셀은 **** **** **** 0863 형태 마스킹
  • 원본 파일은 메모리 파싱 후 즉시 삭제
  • 구글드라이브 접근은 읽기 전용(drive.readonly)
추천

보류 건 근거 기반 추천

애매한 거래에는 우선순위(품의 금액일치 > 카드역할 > 품의 브랜드 > 브랜드 이력 > 휴리스틱)에 따라 추천과 근거 배지를 답니다.

  • 품의 금액일치 건만 자동 확정(드롭다운 프리필)
  • 그 외는 추천 태그·근거만 달고 담당자가 선택
  • 과거 이력(날짜·담당자·메모)을 함께 제공해 판단 가속
연동

구글드라이브 품의서 매칭

드라이브의 품의서 PDF를 스냅샷·파싱해, 해외커머스 거래를 브랜드·금액·날짜로 매칭하고 원본 품의서 링크까지 연결합니다.

  • PDF 파싱은 Claude로, 스캔본은 Vision 폴백
  • USD=현지금액 / KRW=청구금액, 날짜창 ±45일 비교
  • 금액일치=신뢰도 강(자동확정), 브랜드만=중
  • 매칭 근거를 원본 품의서(드라이브 PDF) 링크로 표시
“손으로 하나하나 분류하던 작업을 세 동작으로.”

명확한 건은 자동으로 정리되고, 담당자는 애매한 보류 건만 근거를 보며 확정합니다.

The Impact

2026-05 실데이터 재현 검증

실제 카드내역으로 재현한 결과, 대부분의 영문 거래가 오분류 없이 자동 처리됐습니다.

BEFORE
  • 영문 거래를 한 건씩 수작업으로 용도·계정과목 판단
  • 같은 가맹점도 거래마다 다른 용도를 매번 재판단
  • 판단 근거가 흩어져 감사 추적이 어려움
  • 원본 파일의 전체 카드번호 유출 우려
AFTER
  • 영문 거래의 87.4%가 자동 분류(정답 일치율 100%)
  • 담당자는 나머지 보류 건만 근거와 함께 확정
  • 적용 규칙·사유가 출력에 남아 감사 추적 가능
  • 카드번호는 뒤 4자리만 보관 — 유출 위험 최소화
Accuracy
87.4%

실데이터 재현에서 영문 거래 119건 중 104건이 자동 분류됐고, 자동 분류 건의 정답 일치율은 100%(오분류 0)였습니다. 담당자는 보류 15건만 처리했습니다.

Security

규제 스코프를 원천 최소화

전체 카드번호를 시스템 어디에도 남기지 않고 뒤 4자리만 보관합니다. 출력물은 마스킹, 드라이브는 읽기 전용으로 접근해 유출 위험과 PCI 스코프를 최소화했습니다.

Tech Stack

검증된 스택 위에

분류는 결정론적 규칙엔진으로, 품의서 파싱만 LLM으로. 재현성과 비용을 함께 잡았습니다.

Django 결정론적 규칙엔진 Claude (품의서 PDF·Vision 파싱) standarda-core Google Drive API (읽기 전용) xlrd · openpyxl Vanilla HTML/CSS/JS LangSmith 트레이싱