월간 보고서 집필 자동화, 첫날 두 번 깨지고 세 번째에 나왔다
숫자 모으는 건 진작 자동이었다. 근데 그 숫자로 글 쓰는 일은 매달 내가 붙어 있어야 했다. 그 마지막 칸을 넘긴 기록.
월간 보고서 자동화를 어디까지 밀 수 있나, 그게 이번 얘기다. 매달 1일 아침에 지표를 긁어오고 표 만들고 그림 그리는 것까지는 이미 기계가 했다. 그런데 본문은 아니었다. 매달 내가 앉아서 "이제 써라" 하고 시켜야 글이 나왔고, 나온 초안에 코멘트를 달아야 읽을 만해졌다. 지난달엔 코멘트를 아홉 개 달았다. 그 아홉 개가 사실상 품질이었던 거지.
그래서 그 자리를 기계로 바꿔봤다. 결과부터 말하면 첫 자동 발동에서 두 번 깨졌고, 세 번째 창에서 나왔다.
📑 목차
- 1. 숫자는 자동인데 글은 왜 수동이었나
- 2. 내 코멘트가 하던 일을 기계한테 시킨다는 것
- 3. 두 개를 대조하다가 세 개로 늘렸다
- 4. 리허설에서 걸린 건 코드가 아니라 주문서였다
- 5. 첫 자동 발동, 두 번 깨진 자리가 서로 달랐다
- 6. 그래도 사람을 다시 안 붙였다
1. 숫자는 자동인데 글은 왜 수동이었나
내가 굴리는 자금흐름 관측소는 매달 지표를 모아서 보고서를 낸다. 수집이랑 계산, 그림 그리기, 알림 보내기까지는 예전에 다 넘겼다. 그 얘기는 매크로 지표 자동 수집 편이랑 신호등 3색 편에 이미 다 풀어놨으니 여기선 안 다룬다.
문제는 그 위층이었다. 데이터가 준비돼도 본문 여덟 개 장은 저절로 안 써진다. 매달 1일이 되면 내가 세션을 열어서 "이 데이터로 이번 달 보고서 써라" 하고 시켜야 했다. 그거 자체는 몇 분이면 되는데, 진짜 시간은 그다음이었다. 나온 초안을 읽고 "이 표현 틀렸다", "이 값 왜 비었냐" 하고 되짚는 데 붙었다.
그러니까 파이프라인 전체에서 사람 손이 남아 있던 칸이 딱 하나, 글 쓰는 칸이었다. 자동화 열 칸 중 아홉 칸을 채우고 마지막 한 칸 때문에 매달 시간을 내는 상태.
▲ 사람이 세션을 열어 집필하고 코멘트 9건으로 보정하던 종전 방식과, 스케줄러가 세 시각에 자동 발동해 기계 검사 22항목과 최대 3회 재집필을 돌리는 바꾼 방식을 나란히 비교한 카드 (자체 제작 이미지)
2. 내 코멘트가 하던 일을 기계한테 시킨다는 것
착수하기 전에 하나 확인시켰다. 수동으로 쓸 때는 무슨 검사가 걸려 있었나?
없었다. 파일 저장할 때 걸리는 자동 검사가 몇 개 있긴 한데, 다 형식 쪽이다. 문서 맨 위에 요약 한 줄이 있나, 목차가 있나, 이전 버전 파일을 덮어쓰진 않았나. 본문 내용이 맞는지 보는 장치는 하나도 없었다. 그러니까 이 작업은 "자동화하면 사라지는 안전장치를 다시 만드는 일"이 아니라 없던 안전장치를 처음 만드는 일이었던 거다. 이거 확인하고 나니까 방향이 좀 명확해지더라.
그래서 붙인 게 두 겹이다.
먼저 기계적으로 셀 수 있는 것들. 달러 기호를 그대로 쓰면 문서가 깨지니까 잡고, 긴 줄표는 아예 금지고, 그림 링크가 실제로 있는 파일을 가리키는지 확인하고, 같은 이름인데 계열이 다른 지표(예를 들어 대상 시장이 다른 두 종류의 '외국인 순매수')를 섞어 썼는지 본다. 규칙으로 딱 떨어지는 것만 모아서 스물두 항목이 됐다.
그다음이 의미 쪽인데, 여긴 규칙으로 안 된다. 여기는 다른 모델한테 채점을 맡겼다. 쓰는 쪽이랑 채점하는 쪽을 다른 모델로 가른 건 검증 게이트 편에서 이미 한 번 데인 뒤에 정한 원칙이라 여기서도 그대로 적용했다. 만든 놈이 채점하면 안 본 걸 안 본 줄도 모른다.
그리고 검사에 걸리면 그 지적을 그대로 다시 넣어서 다시 쓰게 했다. 최대 세 번까지. 무한히 돌면 그것도 사고니까.
3. 두 개를 대조하다가 세 개로 늘렸다
처음 설계는 본문이랑 데이터 파일 두 개만 맞춰보는 거였다. 근데 지난달 보고서에서 겪은 일이 걸렸다.
그때 본문에 어떤 항목이 "미제공"이라고 적혀 나왔다. 데이터 파일에 값이 없었으니까 틀린 말은 아닌 것처럼 보였는데, 같은 문서에 붙어 있던 자금흐름 그림에는 그 값이 이미 찍혀 있었다. 한 문서 안에서 앞에선 없다고 하고 뒤에선 숫자를 보여주고 있던 거다. 데이터 파일만 보고 있으면 이 어긋남은 절대 안 잡힌다. 두 산출물이 서로를 참조하지 않고 따로 만들어지니까.
그래서 대조 면을 하나 늘렸다. 본문, 데이터 파일, 그리고 시각 자료까지 셋을 맞춰본다. 이 판단은 내가 내렸고 승인도 내가 했다. 실제로 이 3면 대조가 초안 하나에서 같은 유형의 오기를 잡아냈다.
▲ 본문과 데이터만 맞춰보던 2면 대조와, 시각자료까지 더해 지난달 유형의 결함을 잡아낸 3면 대조 구조를 원과 연결선으로 비교한 다이어그램 (자체 제작 이미지)
4. 리허설에서 걸린 건 코드가 아니라 주문서였다
실전에 걸기 전에 격리된 자리에서 한 번 돌려봤다. 운영 폴더 말고 임시 폴더에서, 진짜처럼.
여기서 설계 결함이 하나 나왔다. 검사는 시각 자료까지 보고 판정하는데, 정작 글 쓰는 쪽한테는 그 시각 자료를 안 줬다. 볼 수 없는 걸 근거로 퇴짜를 놓고 있으니 다시 쓰라고 해도 같은 지적이 그대로 남는다. 두 번을 돌려도 똑같은 자리에서 걸렸다.
이게 좀 뼈아팠다. 코드가 틀린 게 아니라 주문이 틀린 거였거든. 채점 기준에 있는 걸 답안 작성자한테는 안 준 셈이니까. 시각 자료 내용을 프롬프트에 같이 실어주고 나서 두 번째 시도에서 파이프가 끝까지 갔다. 2,372초, 그러니까 40분쯤 걸려서 3만 자 넘는 초안이 나왔고 재집필은 세 번 돌았다.
이런 건 설계 문서를 아무리 봐도 안 보이더라..
5. 첫 자동 발동, 두 번 깨진 자리가 서로 달랐다
스케줄은 세 시각으로 잡아뒀다. 아침 일찍 한 번, 오전 중반에 한 번, 점심 전에 한 번. 한 창에서 실패해도 다음 창에서 다시 붙으라는 뜻이고, 이미 그달 보고서가 있으면 그냥 건너뛴다. 그래서 세 번 발동해도 결과물은 한 달에 하나다.
그리고 첫 자동 발동 날 실제로 이렇게 됐다.
첫 창에서 크래시. 원인이 좀 얄궂었는데, 프로그램을 시작 지점에서 실행하는 방식일 때만 깨지는 위치 문제였다. 손으로 부를 때는 멀쩡하게 돌던 게, 스케줄러가 부르는 방식으로 들어가니까 아직 정의되지 않은 이름을 찾다가 죽었다. 테스트를 아무리 돌려도 호출 방식이 다르면 안 나오는 종류다.
두 번째 창에서 또 크래시. 이번엔 원인이 완전히 달랐다. 그 시간대에 쓸 수 있는 사용량 한도에 걸렸다. 코드 문제가 아니라 바깥 조건 문제였던 거지.
세 번째 창에서 완주. 게이트 돌고 재집필 돌고 저장까지 갔다. 두 번 깨졌는데 깨진 자리가 서로 아무 관계도 없었다는 게 이 날의 요점이다. 하나는 실행 방식, 하나는 사용량. 재시도 창을 세 개 잡아둔 게 우연히 값을 한 셈인데, 사실 이건 우연이라기보단 자동화가 원래 그렇게 죽는다는 걸 점검하는 자동화 편 쓰면서 한 번 배워서 미리 깔아둔 거다.
▲ 첫 자동 발동 날 1창은 실행 방식 문제로 크래시, 2창은 사용량 한도로 크래시, 3창은 2,372초 만에 3만 자 초안을 재집필 3회로 완주한 결과를 정리한 터미널 화면 (자체 제작 이미지)
첫 창 크래시의 원인은 그날 다른 걸 조사하다가 우연히 발견했다. 발견하고 나서 고쳤고, 고친 다음 다시 돌려서 세 번째 창까지 실제로 흘러가는 걸 확인했다. 회귀 테스트는 전부 통과했고.
6. 그래도 사람을 다시 안 붙였다
두 번 깨졌으면 "역시 사람이 봐야지" 하고 되돌리는 게 자연스러운 반응인데, 안 그러기로 했다. 이유는 두 개다.
깨진 게 집필 품질이 아니었다. 배선이 죽은 거지 글이 이상하게 나온 게 아니었다. 배선은 고치면 다시 안 죽지만, 매달 사람이 붙는 구조는 고쳐도 매달 사람이 붙는다. 그리고 세 번째 창에서 나온 실제 결과물이 지난달 내가 코멘트로 잡아줬어야 할 것들을 스스로 걸러낸 상태로 나왔다. 그거면 방향은 맞다고 봤다.
물론 다 잘된 건 아니다. 남은 것들도 적어둔다.
검사 규칙 중에 "값이 없다"는 서술을 판별하는 게 하나 있는데, 이게 너무 넓게 걸린다. 안 걸려야 할 문장까지 잡는 쪽이라 진짜 결함을 놓치는 방향은 아니지만, 어쨌든 판정이 부정확한 건 맞다. 이걸 세 번 고쳐봤는데 고칠 때마다 새로운 예외가 열려서 결국 손을 뗐다. 내부 도구는 이런 수정을 두 번까지만 하기로 정해둬서, 상한 채우고 강행 안 하고 멈췄다. 해결안 두 가지를 적어두고 내 결정을 기다리는 중이다.
그리고 결함이 남아 있어도 파일은 저장하게 했다. 이건 내가 정한 거다. 대신 조용히 저장하진 않고, 무슨 결함이 남았는지 표로 뽑아서 파일이랑 알림 양쪽으로 같이 낸다. 안 나온 것보다 결함 표시된 초안이 낫다는 판단이었는데, 이게 맞는지는 몇 달 굴려봐야 알겠다.
마지막으로, 기계가 내놓는 건 초안까지다. "검사 전부 통과"는 규칙을 지켰다는 뜻이지 이게 최종본이라는 뜻이 아니다. 최종 딱지 붙이는 건 여전히 내 몫으로 남겨뒀고, 이 선은 앞으로도 안 옮길 생각이다.
3줄 요약 - 지표 수집은 진작 자동이었는데 보고서 본문만 매달 사람이 붙어 있었고, 그 칸을 넘겼다. - 첫 자동 발동에서 두 번 깨졌는데 원인이 서로 무관했다(실행 방식, 사용량 한도). 세 번째 창에서 40분 걸려 완주. - 배선이 죽은 거지 글이 이상한 게 아니어서 사람을 다시 안 붙였다. 검사 규칙 하나는 아직 못 고쳤다.
지난달까진 1일 아침마다 뭘 해야 했는데, 이번 달엔 열어보니 이미 있더라. 그 감각이 좀 이상했다. 다음 달에도 세 창 중 어디선가 조용히 나와 있으면 그때 진짜라고 말하겠다.
이 글은 정보 제공 목적이고, 작성 시점(2026년 9월) 기준 내 환경에서 겪은 일이다. 도구의 사용량 한도·요금·동작은 공식 페이지에서 바뀔 수 있으니 결정 전에 원문을 확인하는 게 좋다. 보고서에 담긴 시장 수치나 전망은 이 글에 옮기지 않았고, 특정 도구나 투자 판단을 권유하지 않는다.
참고한 공식 자료 - 클로드코드 개요·기본 사용: code.claude.com/docs - 설치·설정: code.claude.com/docs/setup