사회복지사 업무 자동화 도구 만들기 4편
동료가 말한 일정이 제 사업으로 저장됐습니다. 장부에 제 사업 다섯 개만 들어 있었기 때문입니다. 그래서 직원 다섯 명의 사업계획서에서 사업 18개와 세부활동 100개, 예산 항목 220개를 뽑아 장부에 넣었습니다. AI 티 나는 표현을 걷어내는 규칙도 만들었는데, 남이 만든 목록을 그대로 쓰지 않고 제 문서 276개를 세어서 열아홉 개만 골랐습니다.
시리즈 「업무 자동화 툴 만들기」 · 8편 중 4번째

AI로 생성한 그림입니다
동료가 채팅 칸에 일정을 하나 넣었습니다. 봇은 그 일정을 제 사업으로 저장했습니다.
3편에서 직원 네 명에게 문을 열었다고 적었습니다. 그때는 아무 일도 없었습니다. 사람이 실제로 일정을 넣기 시작하니 하루 만에 이게 나왔습니다.
원인은 단순합니다. 장부에 들어 있는 사업이 제 것 다섯 개뿐이었습니다. 동료가 말한 활동 이름과 얼추 비슷한 것을 찾다가, 그 다섯 개 중 하나로 갔습니다.
이번 편은 그 사고를 고치면서 하루 동안 한 일입니다. 축은 하나입니다. 혼자 쓰던 도구를 여럿이 쓰는 도구로 넓혔습니다.
장부에 제 사업만 있었습니다
혼자 쓸 때는 이게 문제가 아니었습니다. 제가 말하는 일정은 늘 제 사업이니까요. 사람이 늘자마자 바로 틀렸습니다.
직원 다섯 명의 2026년 사업계획서 한글 파일에서 내용을 뽑았습니다. 사업 18개, 세부활동 100개, 예산 항목 220개가 나왔습니다. 원래 있던 제 것과 합쳐 장부에는 사업 23개와 세부활동 123줄이 들어갔습니다.
여기에 칸을 하나 더 붙였습니다. 사업마다 담당자 이름을 적는 칸입니다. 이제 봇은 활동 이름이 겹칠 때 말한 사람을 기준으로 고릅니다. 누가 말했는지는 3편에서 이미 계정으로 가리게 해 뒀으니, 그 정보를 여기서 쓰기만 하면 됐습니다.

사업계획서 자체도 사업별로 쪼개 위키에 넣었습니다. 계획서 18개와 담당자별 자료지도 5개가 늘어, 문서가 275개에서 293개가 됐습니다.
유휴 PC에서 실제로 돌려 확인했습니다. 사업 23개, 세부활동 123줄, 예산 220줄이 그대로 들어갔습니다.
예산 항목을 따로 표로 만들었습니다
사업과 세부활동만 있어도 일정은 잡힙니다. 예산 220줄은 왜 넣었을까요.
두 가지 때문입니다. 지출을 넣을 때 근거가 되는 줄과 대조하려는 것이 하나입니다. 나머지 하나는 질문에 답하기 위해서입니다. “이 예산 왜 이 금액이야?” 라고 물으면 봇이 계획서에 적힌 산출 근거를 그대로 보여 줍니다.
지금까지 이 질문은 사람이 계획서 파일을 열어서 찾아야 했습니다. 찾는 데 걸리는 시간보다, 어느 파일에 있는지 기억해 내는 시간이 더 길었습니다.
AI 티 나는 표현을 걷어냈습니다
봇이 뽑아 주는 문서 초안이 어딘가 AI 문장 같았습니다. 틀린 말은 아닌데 제가 쓰는 말이 아니었습니다.
im-not-ai 라는 공개된 규칙 모음을 참고했습니다. 한국어에서 AI가 자주 쓰는 표현을 분류해 둔 자료입니다. 다만 플러그인은 설치하지 않고 규칙 내용만 가져왔습니다.
여기서 판단을 하나 했습니다. 남이 만든 목록을 그대로 쓰지 않았습니다.
대신 제 위키 문서 276개를 전부 세었습니다. 그 목록에 있는 표현이 제 문서에 실제로 몇 번 나오는지 확인한 것입니다. 결과가 이렇습니다.
| 표현 | 제 문서에 나온 횟수 | 판정 |
|---|---|---|
| ~에 대한 | 165회 | 제외 |
| ~를 통해 | 162회 | 제외 |
| 도모함 | 128회 | 제외 |
| ~할 수 있음 | 120회 | 제외 |
| 또한 | 67회 | 제외 |
| 사료됨 | 36회 | 제외 |
| 이를 통해 | 31회 | 제외 |
전부 그 목록이 “AI 티”라고 지목한 표현입니다. 그런데 제가 몇 년째 쓰고 있었습니다. 이걸 금지하면 봇은 제 문체에서 멀어집니다.
그래서 기준을 뒤집었습니다. 문서 열 개 이하에만 나오는 표현만 채택했습니다. 제가 거의 안 쓰는 말이라면, 초안에 그 말이 있다는 건 AI가 끼워 넣었다는 뜻입니다. 그렇게 열아홉 개가 남았습니다.
여기에 일곱 개를 더 뺐습니다. 공문서는 개조식으로 씁니다. 명사로 끝내고, 번호를 매기고, 격식을 갖춥니다. 그 목록에는 “번호 매김을 줄여라”, “명사 종결을 풀어라” 같은 규칙이 있었는데, 공문서에 그대로 적용하면 결재가 안 올라갑니다.
손댄 파일은 세 개입니다. 문체가이드에 “AI 티 나는 표현” 절을 새로 넣었고, 서술식 글에 쓰는 가이드에도 같은 내용을 넣었고, 문서 만드는 절차에 마지막 단계를 하나 붙였습니다. 초안을 사람에게 보여주기 직전에 그 목록으로 한 번 훑는 단계입니다.
곁가지가 하나 있습니다. 처음에는 이걸 별도 규칙 파일로 만들었습니다. 그러고 나서 되돌려 기존 파일에 합쳤습니다. 봇이 읽어야 할 파일이 하나 늘어나는 것이 규칙 하나 늘어나는 것보다 비싸기 때문입니다.
이 블로그에도 같은 날 같은 규칙을 옮겨 두었습니다. 이 글이 그 규칙으로 쓴 첫 글입니다.
결의서를 썼는지 시스템이 기억하게 했습니다
돈을 쓰면 장부에 남습니다. 그런데 그 지출에 대한 결의서를 썼는지는 어디에도 없었습니다. 제 기억에만 있었습니다.
장부에 칸 두 개를 붙였습니다. 작성했는지 여부와 작성한 날짜입니다. 이미 쌓여 있던 지출 57건은 전부 작성 완료로 채웠습니다.
이제 이렇게 돕니다.
- 지출을 넣으면 자동으로 “미작성”으로 저장됩니다
- “결의서 작성했어” 라고 말하면 미작성 목록을 번호로 보여 줍니다
- 번호를 고르면 완료로 바뀝니다
- 지출일로부터 사흘이 지난 미작성 건은 봇이 먼저 알립니다
- “결의서 밀린 거 있어?” 라고 물으면 남은 것만 보여 줍니다

기능 자체는 작습니다. 다만 이건 사람이 기억하던 일을 시스템이 기억하게 바꾼 첫 사례입니다. 앞으로 이런 자리를 더 찾을 생각입니다.
20건을 받기로 하고 8건으로 끝냈습니다
3편 마지막에 적었던 문체 수집입니다. 사람마다 문서 쓰는 말투가 다르니, 봇이 그 사람 말투로 초안을 뽑게 하려는 작업입니다.
기준을 정했습니다. 한 사람당 20건입니다. 기안 계획서 다섯, 기안 결과보고서 다섯, 회기 계획서 다섯, 회기 결과보고서 다섯입니다.
계획서와 결과보고서를 따로 센 이유가 있습니다. 두 문서는 문체가 다릅니다. 계획서는 앞으로 할 일을 적고 결과보고서는 지나간 일을 적으니, 시제도 어미도 다릅니다. 한쪽만 모으면 다른 쪽에서 어색해집니다.
부담되면 종류당 세 건까지 낮춰도 된다고 했습니다. 세 건 밑으로는 안 됩니다. 그 아래로는 그 사람 말투가 아니라 그 문서 한 건의 버릇을 배웁니다.
실제로는 한 사람에게서 8건을 받았습니다. 종류당 두 건입니다. 제가 정한 최소 기준에 못 미칩니다.
그걸로 끝내기로 했습니다. 더 달라고 하면 안 모입니다. 기준을 세우는 것과 현실에서 지키는 것은 다른 일이라는 걸 여기서 다시 배웠습니다. 8건으로 나온 결과가 어색하면 그때 다시 부탁하겠습니다.
봇을 껐다 켜다 하루를 썼습니다
오늘 가장 크게 데인 자리입니다.
봇을 새로 올릴 때마다 껐다 켜야 합니다. 저는 윈도우 작업 스케줄러에서 봇을 죽이고 다시 띄우게 해 뒀습니다. 그런데 봇이 안 죽었습니다.
밖에서 죽이는 방식을 아예 버렸습니다. 대신 봇이 스스로 인계하게 바꿨습니다. 새 봇을 띄우는 일을 봇 자신의 실행 파일이 하고, 그 파일이 다 넘긴 다음에 스스로 물러납니다.
규칙으로 못 박아 문서에 적었습니다. 봇을 껐다 켜는 일은 실행 파일이 스스로 한다, 밖에서 죽이려 들지 말 것.
이날 하나 더 알아냈습니다. 봇이 남기는 기록을 파일에 이어 붙이는 방식으로 받으면, 그 통로가 파일을 계속 붙잡고 있습니다. 붙잡힌 파일은 다른 데서 손을 못 댑니다. 이것도 봇이 안 죽던 이유 중 하나였습니다.
고친 다음 실제로 올려서 확인했습니다. 봇 기록 채널에 “AI봇 켜짐”이 새로 뜨는 것을 보고 끝냈습니다.
아무 말 없이 무시하는 것이 제일 무섭습니다
자잘하게 걸린 것 중에 하나만 따로 적겠습니다.
봇이 개인 칸의 말을 들으려면 사람만 등록해서는 안 됩니다. 칸도 함께 등록해야 합니다. 이걸 빠뜨리면 봇은 오류를 내지 않습니다. 그냥 아무 말도 안 합니다.
말한 사람은 봇이 고장 났는지, 자기가 잘못 말했는지, 원래 그런 건지 알 방법이 없습니다. 오류 메시지가 뜨는 편이 훨씬 낫습니다. 조용한 실패가 제일 찾기 어렵습니다.
나머지는 짧게 적습니다.
- 사업명을 띄어 말하면 실적을 못 찾던 문제를 고쳤습니다
- 답변이 음슴체로 나오던 것을 고쳤습니다
- 봇 기록 알림이 두 번 가던 것을 한 번으로 줄였습니다
저장소를 나누고, 올리는 길은 하나로 줄였습니다
봇을 따로 떼어 별도 저장소로 옮겼습니다. 작업은 계속 같은 폴더에서 하되, 원래 저장소는 그 폴더를 더 이상 따라다니지 않습니다.
그리고 올리는 방법을 하나로 통일했습니다. 실행 파일 하나를 부르면 유휴 PC와 저장소 양쪽에 한 번에 올라갑니다.
여기에 이유가 있습니다. 올리는 방법이 여러 갈래로 남아 있으면 다음에 반드시 헤맵니다. 세 달 뒤에 어느 쪽이 맞는 길이었는지 기억나지 않습니다. 길을 하나로 줄이는 것 자체가 기능을 하나 만드는 것만큼 값어치가 있습니다.
위키를 사람별로 나누지 않기로 했습니다
3편에서 참고 자료는 나누지 않는다고 적었습니다. 오늘 전 직원 사업계획서를 넣으면서 그 결정을 다시 마주쳤습니다.
담당자별 폴더로 쪼갤 수도 있었습니다. 그러지 않고 사업 기준으로 뒀습니다.
중요한 건 이유를 문서에 적어 둔 것입니다. 안 한 결정도 기록해 두어야 합니다. 그러지 않으면 석 달 뒤에 같은 고민을 처음부터 다시 합니다. 저는 이걸 두 번 겪고 나서야 적기 시작했습니다.
이럴 땐 이 방식이 안 맞습니다
장부에 전 직원 자료를 넣는다는 건, 한 곳이 뚫리면 전부 뚫린다는 뜻입니다. 제 것만 있을 때와 위험의 크기가 다릅니다. 그 판단을 먼저 하시고 넣으셔야 합니다.
사업계획서를 한글 파일에서 뽑아 넣는 일은 자동으로 해도 확인은 사람이 해야 합니다. 저도 220줄을 눈으로 다 훑지는 못했습니다. 예산 금액이 틀린 채로 들어가 있을 수 있고, 그건 아직 모릅니다.
문체를 따라 하게 만드는 기능은 그 사람 문서를 봇이 읽는다는 뜻입니다. 동의 없이 넣지 마시는 게 맞습니다.
다음 단계
3편에서 시범 운영 결과를 적겠다고 했는데 이번에도 못 적었습니다. 이번 편에서 나온 사고를 고치는 데 하루가 갔습니다.
지금 남은 것은 이렇습니다. 문체 8건으로 뽑은 초안이 실제로 그 사람 것처럼 보이는지 확인해야 합니다. 예산 220줄이 계획서와 맞는지도 대조해야 합니다. 그리고 직원들이 실제로 며칠 써 봐야 다음 오작동이 나옵니다.
이번에도 오작동은 만들면서 나온 것이 아니라 사람이 쓰면서 나왔습니다. 다음 편에는 그 이야기를 적게 될 것 같습니다.
자주 묻는 질문
사업 정보를 장부에 꼭 넣어야 하나요?
봇에게 일정이나 실적을 말로 넣게 할 생각이면 넣으셔야 합니다. 봇은 표에 있는 것 중에서만 고릅니다. 표에 제 사업만 있으면 동료 일정도 제 사업으로 갑니다. 이번 편의 사고가 정확히 그것입니다.
AI 티 나는 표현 목록을 그대로 가져다 쓰면 안 되나요?
써도 됩니다. 다만 자기 문서를 한 번 세어 보시길 권합니다. 저는 그 목록이 지목한 표현 일곱 개를 몇 년째 쓰고 있었습니다. 그걸 금지했으면 초안이 제 글에서 더 멀어졌을 겁니다. 목록은 출발점이지 정답이 아닙니다.
문체 자료를 20건이나 모아야 하나요?
저도 못 모았습니다. 8건으로 시작했고 결과를 보고 판단할 생각입니다. 다만 종류를 섞어 모으시는 것은 권합니다. 계획서만 다섯 건 모으면 결과보고서를 쓸 때 그 문체가 안 나옵니다.
직원이 늘면서 새로 생긴 문제가 이것뿐인가요?
아닐 겁니다. 오늘 나온 것이 이것입니다. 3편에서 문을 열고 이틀 만에 일정 오분류가 나왔으니, 앞으로도 사람이 쓰는 만큼 나올 것으로 봅니다. 만들면서 찾은 문제보다 사람이 찾아 준 문제가 훨씬 정확했습니다.
이 글은 AI로 초안을 쓰고 사람이 확인해 다듬었습니다.
시리즈 「업무 자동화 툴 만들기」 전체 보기
직접 써 보기
양식 없이, 네 칸만 채우면 사업계획서 초안이 나옵니다
이 블로그와 별도로 운영하는 공개 웹앱입니다. 가입하면 매달 다섯 번까지 무료.
새 글과 새 무료 프로그램이 나오면 메일로 알려드려요.
메일로 소식 받기 (새 창에서 열림)