영수증 21장, AI 자동화의 실제 성공률
막힌 건 도구가 아니라 제가 참고한 지난 회차 문서였습니다
회사에 청구할 식대 영수증 캡처 21장을 문서 한 개로 묶는 일이었습니다. 그게 전부였습니다. 그런데 반나절이 날아갔고, 그 반나절은 도구가 부실해서 생긴 게 아니었습니다. 작업 방향을 정할 때 제가 열어본 참고 자료가 하필 몇 달 전 것이었고, 거기서 나온 판단이 그대로 지침 문장에 박혀 굳어 있었던 게 원인이었습니다. 나중에 제대로 된 절차로 다시 해보니 5분이면 끝나는 일이었습니다. 5분입니다. 그런데 그날은 이 작업 하나로 하루치 도구 호출 한도를 다 태웠고, 그 사이에 만들어둔 결과물마저 마지막에 통째로 폐기했습니다.
원인은 세 가지입니다. 순서가 중요합니다.
- 이미지를 읽는 도구가 응답하지 않았는데도 저는 그 사실을 전혀 알아채지 못했고, 화면에는 계속 잘 되고 있다는 말이 뜨는 사이에 같은 호출이 수십 번 반복되는 걸 그대로 두고 봤습니다.
- 막히자 방향을 틀어 “지난 회차 결과물을 그대로 재현하자”로 갔는데, 하필 열어본 지난 회차가 최신이 아니라 몇 달 전 것이었습니다.
- 그래서 “이 작업엔 영수증 판독이 아예 필요 없다”는 결론을 냈습니다. 그 결론 자체가 틀렸습니다.
가장 뼈아픈 건 세 번째입니다. 이건 도구 문제가 아닙니다. AI에게 작업 지침을 미리 저장해 두는 기능(스킬)을 써서 시킨 일이었는데, 정작 그 지침 안에는 몇 달 전에 굳어버린 낡은 판단이 한 문장으로 멀쩡히 남아 있었습니다. 지침이 없어서 실패한 게 아니라, 틀린 지침이 있어서 실패했습니다. 이게 이번에 건진 전부입니다.

시작은 폴더 하나를 던져주는 것이었습니다
바탕화면에 후반기 영수증 캡처를 모아둔 폴더가 하나 있었습니다. 저는 그 경로만 던져주고 “회사에 청구할 영수증 모음을 만들어줘”라고 시켰습니다. 매달 하는 일이고, 그래서 미리 만들어둔 지침도 있으니 경로만 주면 될 거라고 생각했습니다. 그 생각이 틀렸습니다.
폴더 안에는 21개 파일이 있었습니다. 내역은 이렇습니다.
- 카드사 이용내역 상세 화면을 캡처한 이미지 1장
- 메신저에서 저장된 캡처 4장
- 배달앱 카드영수증 캡처 16장
숫자만 보면 별것 아닙니다. 스물한 장이면 손으로 붙여도 한 시간이면 될 분량인데, 여기서부터 꼬이기 시작했습니다.
첫 번째 막힘: 이미지가 도구로 넘어오지 않았습니다
AI가 이미지를 읽으려고 판독 도구를 호출했습니다. 돌아온 건 이미지가 아니라 `[screenshot removed to save context]`라는 문자열 한 줄이었습니다. 컨텍스트를 아끼려고 스크린샷이 제거됐다는 뜻입니다. 다시 말해 도구는 분명히 호출됐지만 정작 판단해야 할 이미지 데이터는 모델 쪽으로 한 장도 넘어가지 않은 상태였습니다. 껍데기만 오간 셈입니다.
문제는 그다음이었습니다. AI는 이걸 그냥 일시적인 오류로 보고 재시도했고, 또 실패하자 원인은 따지지 않은 채 다시 재시도했고, 그 판단이 수십 번 그대로 반복됐습니다. 로그를 나중에 훑어보니 “이제 정상적으로 읽힙니다, 나머지를 계속 읽겠습니다”라는 말이 수십 번 똑같이 반복돼 있었습니다. 한 장도 못 읽은 상태였습니다. 그러면서 매번 다음 장으로 넘어가겠다고만 하고 있었습니다.
결국 도구 호출 한도에 걸려 강제로 멈췄습니다. 수십 번의 재시도 끝에 그 시점까지 실제로 판독에 성공한 건, 스물한 장 중에 고작 세 장이었습니다. 나머지 18장은 손도 못 댔습니다.
여기서 하나 배웠습니다. AI가 “이제 잘 됩니다”라고 말하는 걸 그대로 진행 상황 보고로 믿으면 안 된다는 점입니다. 지금까지 실제로 확보된 데이터가 몇 건인지를 숫자로 물어봐야 비로소 진짜 진척이 나옵니다. 말이 아니라 숫자입니다. 이후로는 중간중간 “지금까지 실제로 몇 건 확보했는지”를 숫자로만 답하라는 요구를 반드시 끼워 넣습니다.
두 번째 막힘: 병렬로 나눠 돌렸는데 결과가 돌아오지 않았습니다
한도 초과로 한 번 끊긴 뒤, 남은 18장을 하위 작업자 4개에 나눠 동시에 판독시키는 방식으로 다시 붙어봤습니다. 분배 직후에 확인했을 때는 네 개 모두 이미지를 정상적으로 받았다고 나왔고, 그 말만 믿고 저는 다음 단계로 넘어갔습니다. 저는 그동안 문서 생성 스크립트를 미리 준비해 두는 쪽으로 시간을 썼습니다.
결과는 실패였습니다. 36분 44초 뒤에 돌아온 응답이 이겁니다.
> Delegation owner exited before recording a terminal result; outcome unknown.
분배를 지시한 쪽이 결과를 기록하기도 전에 종료돼버려서, 네 갈래가 무엇을 했는지 아무도 알 수 없게 됐다는 뜻입니다. 됐는지 안 됐는지조차 모릅니다. 36분을 기다린 대가가 “알 수 없음”이었습니다.
여러 작업을 동시에 돌리는 방식 자체는 유용합니다. 다만 각 조각이 중간 결과를 파일로 먼저 떨어뜨리게 해두지 않으면, 마지막에 한 번 어긋났을 때 앞의 작업이 통째로 날아간다는 걸 이때 알았습니다. 지금은 분배 작업을 시킬 때 결과를 반드시 파일에 먼저 쓰게 합니다.
방향 전환: 지난 회차 문서를 열어봤습니다
여기서 제가 “왜 안 되지, 예전엔 잘 됐는데. 기존 자료 샘플도 있는데”라고 물었습니다. 이 한 마디로 흐름이 바뀌었습니다.
AI가 지난 회차 문서를 찾아서 열어봤더니 구조가 완전히 달랐습니다. 표도 없고 텍스트도 없었습니다. 영수증 이미지를 한 줄에 2장씩, 폭 7.4cm로 나열한 게 전부였습니다. 집계는 별도의 엑셀 지출결의서가 맡는 구조라, 문서 쪽에는 숫자가 단 하나도 없었습니다.
이 형식이면 영수증을 읽을 필요가 없습니다. 붙이면 끝입니다. 그 한 가지를 확인하는 데 반나절이 걸렸습니다. 반나절을 태운 판독 작업이 애초에 하지 않아도 됐던 일이라는 결론이 그렇게 나왔습니다.
그래서 A4 세로에 좌우 여백 2.5cm, 상단 3.0cm, 이미지 폭 7.4cm, 한 줄 2장 규격으로 20장을 10줄에 배치한 문서를 만들었습니다. 카드사 이용내역 캡처는 영수증이 아니라 내역표라 제외했습니다. 몇 분 만에 끝났습니다.
그런데 그 참고 자료도 틀린 거였습니다
문서를 받아보고 나서야, 저는 열흘쯤 전에 다른 도구로 만들어둔 최신 회차 파일이 하나 더 있다는 걸 기억해냈습니다. VS Code에 붙여 쓰는 코딩 AI로 만든 것이었습니다. 그 경로를 알려주고 참고해 보라고 했습니다.
열어보니 제가 방금 받은 것보다 훨씬 나은 문서였습니다. 비교가 안 됐습니다.
| 항목 | 이번에 만든 것 | 최신 회차 문서 |
|---|---|---|
| 구성 | 이미지 나열만 | 상단 합계 + 이미지 + 내역 목록 |
| 이미지 배치 | 문단에 나란히 | 2열 표, 가운데 정렬, 페이지당 2장 |
| 합계 | 없음 | 총액, 식대 건수와 금액, 식대 아닌 건 별도 |
| 내역 | 없음 | 날짜, 적요, 금액을 탭으로 구분해 엑셀에 그대로 붙여넣을 수 있는 형태 |
| 항목 구분 | 없음 | 식대가 아닌 결제 건에 별도 표기 |
| 백업 | 없음 | 원본 백업 파일 자동 생성 |
여기서 앞의 결론이 뒤집혔습니다. 완전히 반대였습니다. 판독이 필요 없는 게 아니라, 판독을 해야만 채울 수 있는 양식으로 이미 바뀌어 있었던 겁니다. 몇 달 전 문서 하나만 보고 “판독은 필요 없다”고 판단했는데, 최근 회차부터는 상단 합계와 엑셀 붙여넣기용 내역이 들어가는 형식으로 이미 갈아타 있었습니다. 그 목록을 채우려면 결국 영수증을 읽어야 합니다. 판독이 필요 없다는 결론 자체가 오답이었습니다. 시작부터 틀린 겁니다.
게다가 그 최신 문서에는 이번 폴더의 20장이 이미 전부 반영돼 있었습니다. 이미 끝나 있었습니다. 반나절을 들여 하려던 일을, 열흘 전의 제가 다른 도구로 이미 해치워 놓은 상태였던 것입니다.

진짜 원인: 지침은 있었는데 내용이 낡아 있었습니다
저는 이 작업용 지침을 진작 만들어뒀으니 경로만 주면 끝날 거라고 생각했습니다. 실제로는 그 지침 안에 “이미지만 붙이면 됨, 판독 불필요”라고 또렷하게 적혀 있었습니다. 몇 달 전 문서를 기준으로 쓴 문장이었습니다.
AI는 지침을 제대로 불러왔습니다. 그 지침이 틀렸을 뿐입니다. 다시 말해 지침을 안 불러서 실패한 게 아니라, 몇 달 전에 맞았던 문장을 아주 충실하게 따르는 바람에 실패했습니다.
이 지점이 실무에서 꽤 무섭습니다. 사람이 하던 방식대로면 “지난달 파일 뭐였지” 하면서 폴더를 최신순으로 정렬하고 맨 위를 엽니다. 지침을 문서로 박아두면 사정이 달라집니다. 그 문서가 갱신되지 않는 한, AI는 몇 달 전의 판단을 매번 최신인 것처럼 꺼내 와서 조금의 의심도 없이 실행합니다. 그러면 자동화로 얻은 속도가 고스란히 오답을 반복하는 속도로 바뀝니다.
저장소가 두 군데로 갈라져 있었습니다
원인을 캐다가 하나 더 나왔습니다. 제가 쓰는 두 AI 도구는 지침 저장 위치를 공유하지 않았습니다.
VS Code 쪽 코딩 AI는 사용자 홈 아래 `.claude\skills\`를 보고, Hermes는 `AppData\Local\hermes\skills\`를 봅니다. 서로 안 보입니다. 같은 컴퓨터, 같은 계정 안에서 VS Code 쪽에 21개를 만들어 뒀는데도 Hermes는 그중 단 하나도 쓸 수 없었습니다.
확인해 보니 그 21개 안에도 영수증 관련 지침은 없었습니다. 최신 회차 문서는 지침 없이 그때 즉석으로 만든 것이었고, 거기서 나온 생성 스크립트마저 그 작업 폴더 한 군데에만 남아 있었습니다. 잘 만들어놓고도 재사용 자산으로 등록하지 않은 채 그대로 묻어둔 것입니다.
고친 것
종결하면서 정리한 내용은 이렇습니다.
- 지침 첫 줄을 “영수증을 읽기 전에 결과물 폴더를 최신순으로 정렬해 가장 최근 것을 연다”로 바꿨습니다. 몇 달 전 문서를 최신으로 착각하고 판단하는 사고를 막는 게 목적입니다.
- 이미 만들어둔 스크립트가 모여 있는 폴더를 작업 시작 전에 먼저 확인하는 절차를 넣었습니다.
- 표준 도구를 최신 회차에서 쓰인 생성 스크립트로 지정했습니다. 추출, 생성, 신규 세 갈래로 나뉘고, 각 단계가 중간 데이터를 파일로 주고받는 구조입니다.
- “판독 불필요”를 “판독 필요”로 정정했습니다. 옛 양식은 폐기 대상으로 명시했습니다.
- 지침 저장소가 도구별로 갈라져 있어서 한쪽에서 만든 지침이 다른 쪽에서는 안 보인다는 사실을 기록해 뒀습니다.
- 중간에 만든 문서와 중복 스크립트는 삭제했습니다. 남겨두면 다음 회차에 또 헷갈립니다.
부수적으로, 이 과정에서 얻은 메모를 장기 기억에 저장하려다 용량이 차서(2,088자 중 2,200자 한도) 저장에 실패했습니다. 다행히 핵심은 지침 문서 쪽에 이미 들어가 있어서 다음 회차 작업에는 지장이 없었습니다. 다만 기억 슬롯도 관리 대상이라는 걸 그때 알았습니다. 거기에도 정원이 있었습니다.

다음 회차에 다르게 할 것
같은 일을 다시 한다면 순서는 이렇습니다.
- 결과물 폴더를 최신순으로 열어 가장 마지막 회차 문서의 구조부터 눈으로 확인합니다.
- 그 구조를 채우는 데 영수증 판독이 실제로 필요한지를 그때 판단합니다.
- 판독이 필요하면, 도구가 실제로 이미지를 받았는지를 첫 한 장으로 먼저 확인하고 나서 나머지를 돌립니다. 두세 번 실패하면 멈추고 경로를 바꿉니다.
- 여러 갈래로 나눠 돌릴 때는 각 갈래가 중간 결과를 파일에 먼저 쓰도록 못을 박아둡니다.
AI에게 반복 업무를 맡길 때 실제로 관리해야 하는 건 프롬프트가 아니었습니다. 지침의 유효기간이라는 게 이번 결론입니다. 업무 양식은 조용히 바뀝니다. 바뀐 걸 알려주는 사람은 없습니다. 지침에 “무엇을 하라”만 적어두고 “무엇을 먼저 확인하라”를 빼놓으면, 낡은 판단이 사람보다 빠르고 정확하게, 그리고 아무 저항 없이 반복됩니다.