이 글은 이메일로 굴러가던 물류 운영을, 데이터로 바꿨다 — 메일함 AI 인제스천 파이프라인 전 과정 시리즈의 일부입니다.
AI로 메일을 분류하는 워크플로우를 만들 때, 처음엔 분류 기준(프롬프트)을 워크플로우 안 코드 노드에 그대로 박아넣었다. 돌아가긴 했다. 문제는 그 다음이었다. 규칙을 조금만 손보려 해도 매번 워크플로우를 열고, 코드를 고치고, 다시 배포해야 했다.
도메인 규칙이라는 게 초반엔 자주 바뀐다. “이 경우는 이 카테고리로”, “이런 답장은 예외로” — 이런 조정이 하루에도 몇 번씩 생긴다. 그때마다 배포를 반복하는 건 지치는 일이었다. 이 글은 그 프롬프트를 코드 밖으로 빼낸 이야기다.
결정적 계기 — 편집기가 코드를 깨먹었다
사실 방아쇠를 당긴 건 더 실무적인 짜증이었다. 긴 프롬프트를 워크플로우의 코드 노드 편집기에 붙여넣으면, 편집기가 중간이나 마지막 줄을 조용히 깨먹는 일이 반복됐다. 붙여넣고 저장했는데 실행이 이상하게 돌아, 보면 코드 일부가 잘려 있었다. 긴 텍스트를 편집기에 넣는 것 자체가 불안정했다.
“긴 텍스트를 코드 노드에 붙이는 것”이 문제라면, 애초에 긴 텍스트를 코드 노드에 두지 않으면 된다. 이 생각이 해결의 출발점이었다.

프롬프트를 외부 문서로 빼냈다
구조를 바꿨다. 분류 기준 전체를 외부 문서(공유 문서) 한 장으로 옮기고, 워크플로우는 실행할 때마다 그 문서를 읽어와 AI의 시스템 프롬프트로 사용하게 했다.
효과가 컸다.
- 문서 편집 = 곧 규칙 수정. 규칙을 바꾸려면 문서를 고치면 끝이다. 워크플로우를 열 필요도, 재배포할 필요도 없다. 다음 실행이 바뀐 문서를 그대로 읽는다.
- 편집기 손상 문제 자체가 사라졌다. 긴 텍스트는 이제 문서 편집기에서 다룬다. 코드 노드에는 “문서를 읽어 프롬프트로 쓴다”는 짧은 로직만 남는다.
- 비개발자도 고칠 수 있다. 규칙이 문서라 도메인을 아는 사람이 직접 문장을 다듬을 수 있다. 코드를 몰라도 된다.
한 걸음 더 — 계층을 나눴다
여기까지 오니 문서가 하나둘 늘었다. 그래서 성격에 따라 계층을 나눴다.
- 분류 문서: 메일이 들어오면 “무슨 종류인지” 판단하는 기준. 입력은 메일, 출력은 카테고리.
- 추출 문서: 문서(PDF)에서 “어떤 필드를 뽑을지”의 기준. 입력은 문서, 출력은 구조화된 데이터.
둘은 하는 일이 달라서(분류 vs 추출) 문서도 분리했다. 특히 추출 문서는 출력 스키마와 1:1로 대응시켰다 — 스키마에 있는 필드는 문서에 설명이 있고, 문서에 있는 항목은 스키마에 자리가 있다. 이렇게 미러링해두면 한쪽만 바뀌어 어긋나는 일을 줄일 수 있다.
배운 것
- 자주 바뀌는 로직은 코드가 아니라 데이터로 다뤄라. 도메인 규칙처럼 계속 조정되는 것을 코드에 박으면 배포가 병목이 된다. 밖으로 빼면 배포 없이 반영되고, 버전 관리와 협업이 쉬워진다.
- 프롬프트는 코드보다 산문에 가깝다. 산문은 산문을 다루는 도구(문서 편집기)에서 다뤄야 안 깨진다. 코드 편집기에 긴 자연어를 욱여넣는 건 도구를 잘못 고른 것이다.
- 불편이 설계를 가르쳐준다. “편집기가 자꾸 깨먹는다”는 사소한 짜증이, 사실은 “이건 여기 있을 게 아니다”라는 신호였다.
한계와 주의
- 실행마다 외부 문서를 읽으니 아주 약간의 지연과 외부 의존이 생긴다. 자주 바뀌지 않는 안정기에는 캐싱으로 완화할 수 있다.
- 문서가 사실상 설정의 원본(source of truth)이 되므로, 접근 권한 관리가 중요해진다. 아무나 고칠 수 있으면 그건 그것대로 사고의 원인이 된다.
자주 묻는 질문
Q. 프롬프트를 왜 코드에 두면 안 되나?
안 되는 건 아니지만, 자주 바뀌는 것을 코드에 두면 수정할 때마다 배포가 필요해 병목이 된다. 도메인 규칙처럼 조정이 잦은 로직은 밖으로 빼면 배포 없이 즉시 반영된다.
Q. 실행마다 문서를 읽으면 느리지 않나?
읽는 비용은 크지 않지만 지연과 외부 의존이 생기는 건 맞다. 규칙이 안정된 뒤에는 캐싱으로 매번 읽지 않게 완화할 수 있다. 초반의 잦은 수정에는 즉시 반영이 주는 이득이 더 크다.
Q. 분류 문서와 추출 문서를 왜 나누나?
하는 일이 다르기 때문이다. 분류는 “무슨 종류인가”, 추출은 “어떤 값을 뽑는가”로 입력·출력이 다르다. 한 문서에 섞으면 서로 다른 관심사가 엉켜 유지보수가 어려워진다.