견적 하나를 찾으려고 엑셀 파일을 열었다 닫는 일이 반복됐다. 파일명은 비슷했고, 같은 항목도 어떤 표에서는 ‘품목’, 다른 표에서는 ‘내역’으로 적혀 있었다. 어렵다기보다 자꾸 흐름을 끊는 일이었다.
처음에는 모든 파일을 하나로 합치면 끝날 줄 알았다. 하지만 합치는 순간 단위와 기준일, 비고의 차이가 사라졌다. 우리가 필요했던 것은 거대한 통합표가 아니라 검색 결과 옆에서 원본 파일·시트·행을 바로 확인할 수 있는 작은 화면이었다.
먼저 결론부터: 숫자보다 그 숫자가 있던 자리가 중요했다
첫 버전은 다섯 가지 기능으로 줄였다.
- 지정 폴더의
.xlsx파일을 읽습니다. - 항목명과 유사한 행을 찾습니다.
- 후보 금액·단위·날짜를 표로 보여줍니다.
- 각 결과에 원본 파일명·시트명·행 번호를 붙입니다.
- 최종 적용값은 자동 결정하지 않고 사람이 선택합니다.
마지막 조건이 특히 중요했다. 숫자가 그럴듯해 보여도 어디서 가져왔는지 찾을 수 없으면 실제 견적에는 쓰기 어려웠다.
문제는 파일이 많다는 것이 아니었다
이 글은 AI포워크 운영자와 Codex가 실제로 진행한 단가·견적 검색 작업을 바탕으로 썼다. 회사와 고객, 실제 항목과 금액은 공개하지 않는다. 대신 어떤 지점에서 자동화를 멈추고 사람의 판단을 남겼는지는 그대로 적었다.
첫 요청은 “여러 견적을 한 번에 보고 싶다”였다. 이야기를 풀어보니 파일 수보다 더 큰 문제가 있었다. 같은 뜻의 항목명이 조금씩 달랐고 머리글 위치와 단위도 제각각이었다. 최신 파일이라고 언제나 정답인 것도 아니었다. 그래서 자동 합계는 미뤘다. 대신 후보와 근거를 함께 보여주는 검색 도구부터 만들었다.
「AI가 뭉뚝한 게 아니라, 내가 뭉뚝해지고 있었다」에서 허보람은 인풋과 가이드라인이 정확할수록 AI의 효율이 커졌다고 썼다. 이 작업도 같았다. “엑셀을 알아서 정리해줘”라는 말로는 부족했다. 사람이 이미 쓰고 있던 열 이름과 단위, 선택 기준을 먼저 말로 꺼내야 했다.
코드를 만들기 전에 열 이름부터 맞췄다
파일마다 머리글이 다르면 같은 의미끼리 연결하는 규칙이 필요합니다.
| 표준 항목 | 파일에서 발견할 수 있는 이름 | 필수 여부 | 비어 있을 때 |
|---|---|---|---|
| 항목명 | 품목, 작업명, 내역, 서비스 | 필수 | 해당 행 제외 후 오류 목록 |
| 단가 | 단가, 공급가, 기준가 | 필수 | 빈값으로 표시, 임의 추정 금지 |
| 단위 | EA, 회, 식, 월 | 선택 | ‘미확인’ 표시 |
| 기준일 | 작성일, 적용일, 견적일 | 선택 | 파일 수정일로 대체하지 않음 |
| 비고 | 조건, 범위, 주의 | 선택 | 빈칸 유지 |
표준 항목을 먼저 정하면 새 파일이 들어왔을 때 코드를 다시 만들지 않고 매핑 규칙만 추가할 수 있습니다.
후보가 여러 개일 때 무엇을 먼저 보여줄까
후보 순서를 정할 때 금액만 비교하면 안 됩니다.
후보 신뢰도 = 이름 일치도(0~4) + 단위 일치(0~2) + 조건 일치(0~2) + 기준일 확인(0~2)
이 계산식은 운영용 비교 도구이며 통계 모델이 아닙니다. 8점 이상은 상단 후보, 5~7점은 검토 후보, 4점 이하는 참고 후보로 표시합니다. 점수가 높아도 자동 확정하지 않습니다.
| 상황 | 처리 | 이유 |
|---|---|---|
| 항목명 완전 일치, 단위 다름 | 둘 다 표시하고 경고 | 같은 이름이어도 범위가 다를 수 있음 |
| 이름 유사, 비고에 제외 조건 | 낮은 점수 | 조건이 결과를 바꿈 |
| 최신 파일, 기준일 없음 | 날짜 미확인 | 수정일은 업무 기준일이 아님 |
| 금액이 숫자가 아님 | 원문 유지 후 오류 표시 | ‘협의’ 같은 값일 수 있음 |
우리가 실제로 잡은 7단계 제작 순서
1. 원본을 복사하고 합성 파일을 만듭니다
실제 고객과 금액이 없는 엑셀 3개를 만듭니다. 표의 위치, 병합 셀, 빈 행, 단위 차이만 실제와 비슷하게 구성합니다.
2. 입력 범위를 폴더 하나로 제한합니다
컴퓨터 전체를 검색하게 하지 않습니다. 입력_견적 폴더만 읽고, 원본은 절대 수정하지 않게 합니다.
3. 파일별 머리글을 탐지합니다
첫 행이 머리글이라고 가정하지 않습니다. 항목명·단가 후보가 같은 행에 있는지 찾아 머리글 행을 기록합니다.
4. 표준 항목으로 변환합니다
각 파일의 열 이름을 매핑표에 맞춰 항목명, 단가, 단위, 기준일, 비고, 원본위치로 바꿉니다.
5. 검색은 완전 일치와 포함 검색을 나눕니다
완전 일치 결과를 먼저, 포함·유사 결과를 뒤에 둡니다. 유사어를 자동으로 같은 항목으로 합치지 않습니다.
6. 원본 위치를 결과에 붙입니다
파일명 / 시트명 / 행 번호를 표시하고 가능하면 클릭해 원본을 열게 합니다.
7. 다섯 가지 실패 파일을 시험합니다
빈 파일, 암호화 파일, 병합 셀, 머리글 변경, 숫자가 아닌 금액을 넣고 오류가 설명되는지 확인합니다.
Python으로 구현한다면 openpyxl은 .xlsx 계열 파일을 읽고 쓰는 라이브러리입니다. 다만 공식 문서는 악의적으로 조작된 XML 파일에 대한 기본 방어가 없을 수 있다고 경고하므로, 출처를 모르는 엑셀을 무조건 처리하지 않습니다.
그대로 복사하는 제작 프롬프트
여러 엑셀 파일에서 항목을 검색하는 개인용 도구를 만들고 싶습니다.
[입력]
- 사용자가 지정한 한 폴더의 .xlsx 파일만 읽기
- 원본 파일은 절대 수정하지 않기
- 실제 자료 대신 먼저 합성 파일 3개로 시험하기
[표준 항목]
- 항목명(필수): 품목, 작업명, 내역도 같은 의미 후보
- 단가(필수): 숫자가 아니면 원문과 오류를 함께 표시
- 단위, 기준일, 비고(선택)
- 원본 파일명, 시트명, 행 번호(필수 출력)
[검색 결과]
- 완전 일치 → 포함 검색 → 유사 후보 순서
- 후보마다 단가, 단위, 기준일, 비고, 원본 위치 표시
- 최종 단가를 자동 선택하지 않기
- 근거 없는 값을 추정하지 않기
먼저 요구사항의 빈칸, 최소 기능, 테스트 5개와 실패 시 멈추는 조건을 설명하세요.
아직 코드를 만들지 마세요.
이후 계획을 확인하고 한 번에 한 기능씩 제작합니다. 전체 작업 순서는 Codex로 업무 도구 만드는 7단계와 같습니다.
예를 들어 ‘콘텐츠 기획’을 검색했다면
합성 폴더에 A_기준표.xlsx, B_견적.xlsx, C_과거자료.xlsx가 있다고 가정합니다. 사용자가 “콘텐츠 기획”을 검색하면 세 후보가 나옵니다.
| 후보 | 단가 | 단위 | 기준일 | 원본 | 경고 |
|---|---|---|---|---|---|
| 콘텐츠 기획 | 100,000 | 건 | 2026-07-01 | A/기준/12행 | 없음 |
| 콘텐츠 기획 및 검수 | 180,000 | 건 | 2026-06-15 | B/상세/8행 | 범위 다름 |
| 기획 운영 | 협의 | 월 | 미확인 | C/Sheet1/22행 | 숫자 아님·단위 다름 |
도구가 첫 번째 값을 정답으로 확정하면 실패입니다. 세 후보를 보여주고 사용자가 범위와 단위를 확인하게 해야 합니다.
실제로 쓰기 전에 확인한 것들
- 검색 결과 수와 원본에서 직접 찾은 행 수가 같은가
- 금액의 쉼표·소수점·통화가 바뀌지 않았는가
- 수식 셀은 계산값과 수식 중 무엇을 읽는지 명시했는가
- 숨김 시트와 숨김 행을 포함할지 정했는가
- 중복 후보를 삭제하지 않고 묶어 보여주는가
- 원본 파일명·시트·행 번호로 되돌아갈 수 있는가
- 결과 다운로드 파일에 개인정보가 섞이지 않았는가
- 새 형식의 파일이 들어오면 조용히 누락하지 않고 경고하는가
보안과 실패 조건
- 실제 견적·계약 금액, 고객명, 연락처, 내부 마진은 외부 AI에 올리지 않습니다.
- 암호화 파일의 비밀번호를 프롬프트나 코드에 저장하지 않습니다.
- 도구는 검색 보조이며 계약·발주 금액을 자동 확정하지 않습니다.
- 매크로가 포함된 파일은 별도 검토합니다. 단순 읽기 과정에서도 원본 보존이 우선입니다.
- 출처를 모르는 파일, 지나치게 큰 파일, 손상된 파일은 별도 격리하고 중단합니다.
회사 자료를 사용하기 전 AI 데이터 보안 체크리스트를 적용하고, 표를 정리해야 한다면 AI로 CSV 데이터 정리하기의 규칙표를 참고합니다.
FAQ
엑셀 파일을 하나로 합치면 더 쉽지 않나요?
형식과 기준이 완전히 같다면 가능합니다. 하지만 단위·범위·기준일이 다르면 합치는 순간 차이가 사라질 수 있으므로 원본 위치를 유지한 통합 검색이 먼저입니다.
유사한 항목명을 AI가 자동으로 합쳐도 되나요?
후보 추천은 가능하지만 자동 병합은 피합니다. “디자인”, “디자인 및 제작”, “디자인 수정”은 범위가 다를 수 있습니다.
웹사이트로 만들어야 하나요?
한 사람만 쓴다면 컴퓨터에서 실행되는 간단한 화면으로 충분합니다. 여러 사람이 다른 컴퓨터에서 쓴다면 권한·배포·업데이트 책임을 추가로 설계합니다.
엑셀 수식도 검색할 수 있나요?
가능하지만 계산 결과와 수식 원문 중 무엇을 보여줄지 정해야 합니다. 수식 오류 자체는 AI로 엑셀 수식 찾고 검증하기를 참고하세요.
공식 출처
- openpyxl 공식 문서: Excel 파일 읽기·쓰기와 보안 주의
- OpenAI 공식 문서: 파일·산출물 만들기와 검토
- 운영자 공개 글: AI가 뭉뚝한 게 아니라, 내가 뭉뚝해지고 있었다