본문 바로가기
책상 노트 책상 노트
실무자가 실제로 굴려본 업무도구·업무 자동화 기록

영수증 21장, AI 자동화의 실제 성공률

읽는 시간 약 12분

막힌 건 도구가 아니라 제가 참고한 지난 회차 문서였습니다

회사에 청구할 식대 영수증 캡처 21장을 문서 한 개로 묶는 일이었습니다. 그게 전부였습니다. 그런데 반나절이 날아갔고, 그 반나절은 도구가 부실해서 생긴 게 아니었습니다. 작업 방향을 정할 때 제가 열어본 참고 자료가 하필 몇 달 전 것이었고, 거기서 나온 판단이 그대로 지침 문장에 박혀 굳어 있었던 게 원인이었습니다. 나중에 제대로 된 절차로 다시 해보니 5분이면 끝나는 일이었습니다. 5분입니다. 그런데 그날은 이 작업 하나로 하루치 도구 호출 한도를 다 태웠고, 그 사이에 만들어둔 결과물마저 마지막에 통째로 폐기했습니다.

원인은 세 가지입니다. 순서가 중요합니다.

  • 이미지를 읽는 도구가 응답하지 않았는데도 저는 그 사실을 전혀 알아채지 못했고, 화면에는 계속 잘 되고 있다는 말이 뜨는 사이에 같은 호출이 수십 번 반복되는 걸 그대로 두고 봤습니다.
  • 막히자 방향을 틀어 “지난 회차 결과물을 그대로 재현하자”로 갔는데, 하필 열어본 지난 회차가 최신이 아니라 몇 달 전 것이었습니다.
  • 그래서 “이 작업엔 영수증 판독이 아예 필요 없다”는 결론을 냈습니다. 그 결론 자체가 틀렸습니다.

가장 뼈아픈 건 세 번째입니다. 이건 도구 문제가 아닙니다. AI에게 작업 지침을 미리 저장해 두는 기능(스킬)을 써서 시킨 일이었는데, 정작 그 지침 안에는 몇 달 전에 굳어버린 낡은 판단이 한 문장으로 멀쩡히 남아 있었습니다. 지침이 없어서 실패한 게 아니라, 틀린 지침이 있어서 실패했습니다. 이게 이번에 건진 전부입니다.

영수증 21장에 반나절이 들어갔습니다
제대로 된 절차였다면 5분이면 끝날 일이었습니다.

시작은 폴더 하나를 던져주는 것이었습니다

바탕화면에 후반기 영수증 캡처를 모아둔 폴더가 하나 있었습니다. 저는 그 경로만 던져주고 “회사에 청구할 영수증 모음을 만들어줘”라고 시켰습니다. 매달 하는 일이고, 그래서 미리 만들어둔 지침도 있으니 경로만 주면 될 거라고 생각했습니다. 그 생각이 틀렸습니다.

폴더 안에는 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장이 이미 전부 반영돼 있었습니다. 이미 끝나 있었습니다. 반나절을 들여 하려던 일을, 열흘 전의 제가 다른 도구로 이미 해치워 놓은 상태였던 것입니다.

막힌 자리가 매번 달랐습니다
영수증 21장을 묶는 일에서 막힐 때마다 방향을 바꿨습니다.

진짜 원인: 지침은 있었는데 내용이 낡아 있었습니다

저는 이 작업용 지침을 진작 만들어뒀으니 경로만 주면 끝날 거라고 생각했습니다. 실제로는 그 지침 안에 “이미지만 붙이면 됨, 판독 불필요”라고 또렷하게 적혀 있었습니다. 몇 달 전 문서를 기준으로 쓴 문장이었습니다.

AI는 지침을 제대로 불러왔습니다. 그 지침이 틀렸을 뿐입니다. 다시 말해 지침을 안 불러서 실패한 게 아니라, 몇 달 전에 맞았던 문장을 아주 충실하게 따르는 바람에 실패했습니다.

이 지점이 실무에서 꽤 무섭습니다. 사람이 하던 방식대로면 “지난달 파일 뭐였지” 하면서 폴더를 최신순으로 정렬하고 맨 위를 엽니다. 지침을 문서로 박아두면 사정이 달라집니다. 그 문서가 갱신되지 않는 한, AI는 몇 달 전의 판단을 매번 최신인 것처럼 꺼내 와서 조금의 의심도 없이 실행합니다. 그러면 자동화로 얻은 속도가 고스란히 오답을 반복하는 속도로 바뀝니다.

저장소가 두 군데로 갈라져 있었습니다

원인을 캐다가 하나 더 나왔습니다. 제가 쓰는 두 AI 도구는 지침 저장 위치를 공유하지 않았습니다.

VS Code 쪽 코딩 AI는 사용자 홈 아래 `.claude\skills\`를 보고, Hermes는 `AppData\Local\hermes\skills\`를 봅니다. 서로 안 보입니다. 같은 컴퓨터, 같은 계정 안에서 VS Code 쪽에 21개를 만들어 뒀는데도 Hermes는 그중 단 하나도 쓸 수 없었습니다.

확인해 보니 그 21개 안에도 영수증 관련 지침은 없었습니다. 최신 회차 문서는 지침 없이 그때 즉석으로 만든 것이었고, 거기서 나온 생성 스크립트마저 그 작업 폴더 한 군데에만 남아 있었습니다. 잘 만들어놓고도 재사용 자산으로 등록하지 않은 채 그대로 묻어둔 것입니다.

고친 것

종결하면서 정리한 내용은 이렇습니다.

  • 지침 첫 줄을 “영수증을 읽기 전에 결과물 폴더를 최신순으로 정렬해 가장 최근 것을 연다”로 바꿨습니다. 몇 달 전 문서를 최신으로 착각하고 판단하는 사고를 막는 게 목적입니다.
  • 이미 만들어둔 스크립트가 모여 있는 폴더를 작업 시작 전에 먼저 확인하는 절차를 넣었습니다.
  • 표준 도구를 최신 회차에서 쓰인 생성 스크립트로 지정했습니다. 추출, 생성, 신규 세 갈래로 나뉘고, 각 단계가 중간 데이터를 파일로 주고받는 구조입니다.
  • “판독 불필요”를 “판독 필요”로 정정했습니다. 옛 양식은 폐기 대상으로 명시했습니다.
  • 지침 저장소가 도구별로 갈라져 있어서 한쪽에서 만든 지침이 다른 쪽에서는 안 보인다는 사실을 기록해 뒀습니다.
  • 중간에 만든 문서와 중복 스크립트는 삭제했습니다. 남겨두면 다음 회차에 또 헷갈립니다.

부수적으로, 이 과정에서 얻은 메모를 장기 기억에 저장하려다 용량이 차서(2,088자 중 2,200자 한도) 저장에 실패했습니다. 다행히 핵심은 지침 문서 쪽에 이미 들어가 있어서 다음 회차 작업에는 지장이 없었습니다. 다만 기억 슬롯도 관리 대상이라는 걸 그때 알았습니다. 거기에도 정원이 있었습니다.

지침 첫 줄을 바꿨습니다
지침이 없어서 실패한 게 아니라, 낡은 지침을 충실히 따라서 실패했습니다.

다음 회차에 다르게 할 것

같은 일을 다시 한다면 순서는 이렇습니다.

  1. 결과물 폴더를 최신순으로 열어 가장 마지막 회차 문서의 구조부터 눈으로 확인합니다.
  2. 그 구조를 채우는 데 영수증 판독이 실제로 필요한지를 그때 판단합니다.
  3. 판독이 필요하면, 도구가 실제로 이미지를 받았는지를 첫 한 장으로 먼저 확인하고 나서 나머지를 돌립니다. 두세 번 실패하면 멈추고 경로를 바꿉니다.
  4. 여러 갈래로 나눠 돌릴 때는 각 갈래가 중간 결과를 파일에 먼저 쓰도록 못을 박아둡니다.

AI에게 반복 업무를 맡길 때 실제로 관리해야 하는 건 프롬프트가 아니었습니다. 지침의 유효기간이라는 게 이번 결론입니다. 업무 양식은 조용히 바뀝니다. 바뀐 걸 알려주는 사람은 없습니다. 지침에 “무엇을 하라”만 적어두고 “무엇을 먼저 확인하라”를 빼놓으면, 낡은 판단이 사람보다 빠르고 정확하게, 그리고 아무 저항 없이 반복됩니다.

책상 노트 운영자
함께 보면 좋은 글
error: Content is protected !!