견적서를 PDF로 만들고 고객에게 메일까지 보내는 도구를 AI로 만들었다고 해볼게요. 시연은 잘 끝났는데, 납품 다음 주에 “어제 견적서가 안 갔어요”라는 연락이 옵니다. 무료로 고쳐야 할까요? 메일 서비스가 막힌 건지, 프로그램이 잘못된 건지부터 확인해야 합니다.
첫 외주라면 ‘납품 후에도 봐드립니다’ 대신, 무엇을 고쳐주고 누가 멈추며 어디까지 비용을 부담하는지를 먼저 합의하세요. 이 글은 작은 업무 자동화 도구를 처음 납품하는 제작자가 고객과 유지보수 범위를 정하는 안내입니다. 계약별 법적 책임을 판정하거나, 아래 문구만으로 손해배상 책임이 없어지는 것은 아닙니다.
같은 “안 돼요”라도 세 가지로 나눠야 합니다
먼저 계약 때 약속한 입력과 결과를 남겨두세요. ‘견적서 자동화’라는 이름만으로는 부족합니다. 예를 들어 “승인된 품목표와 수량으로 금액을 계산하고, 담당자가 확인한 뒤 PDF를 저장·발송한다”처럼요. 금액 반올림, 부가세, 누락 품목을 만났을 때의 처리까지 정해져야 오류인지 변경 요청인지 구분할 수 있습니다.
약속한 기능의 오류: 같은 양식과 정상 입력인데 수량이 빠지거나 합계가 틀리는 경우입니다. 무상 수정에 포함할 범위, 적용 기간, 접수 방법을 적습니다. ‘AI가 생성한 코드라서 원인을 모른다’는 말은 대응 계획을 대신하지 못합니다.
새로운 요구나 데이터 변경: 처음에는 국내 원화 견적만 받기로 했는데 외화 견적·새 세율·다른 PDF 양식을 추가하는 경우입니다. 기존 오류 수정과 분리해 작업 범위와 추가 견적을 승인받습니다. 품목표의 단가만 바꾸는 일도 고객이 직접 하는지, 제작자가 유상으로 하는지 정해야 합니다.
외부 서비스·이용 조건의 변화: API 인증 만료, 사용 한도 도달, 메일 서비스 장애, 연동 규격 변경은 원인과 대응이 다릅니다. 제작자가 원인 확인까지 하는지, 서비스 제공자에게 문의하는지, 연동 수정은 별도 비용인지 나눠 합의하세요. 외부 장애라고 해서 자동으로 제작자 책임이 없어지는 것도, 고객 책임이 되는 것도 아닙니다.
답변 시간과 복구 시간을 같은 말로 약속하지 마세요
‘빠르게 처리’는 고객과 제작자가 다르게 이해하기 쉽습니다. 지원하는 요일·시간, 연락 채널, 처음 답변할 기한을 정하세요. 그다음 원인 파악 후 예상 복구 시각을 안내하는 방식을 합의합니다. 1인 제작자가 밤에도 항상 대응할 수 없다면 24시간 지원이라고 쓰면 안 됩니다.
자동 발송 도구라면 고치는 속도보다 먼저 필요한 결정도 있습니다. 잘못된 금액이나 중복 발송 우려가 생겼을 때 누가 자동 실행을 중지할 수 있는가입니다. 고객에게 ‘오류가 나면 다시 실행하세요’라고만 넘기면, 이미 발송된 메일까지 반복될 수 있습니다.
접수할 때는 발생 시각, 작업 번호, 기대한 결과와 실제 결과를 받습니다. 로그와 화면은 필요한 부분만 공유하고 고객정보·API 키는 가립니다. 담당자는 발송 이력과 완료 지점을 확인한 뒤 미처리 건만 재개하도록 안내해야 합니다. 중간 처리 상태를 확인할 방법이 없다면, 자동 재시작을 약속하기 전에 그 기능부터 보완할 필요가 있습니다.
n8n 같은 도구에는 실패한 실행을 확인하고 오류 워크플로로 알림을 보내는 기능이 있습니다. 다만 알림을 만드는 것과 그 알림을 보고 대응할 사람을 정하는 것은 별개예요. 실패로 처리되지 않은 잘못된 금액까지 오류 알림이 알아서 발견한다고 생각해서도 안 됩니다.
제작비·관리비·사용료를 분리해서 보여주세요
견적서에 개발비 한 줄만 있으면, 고객은 이후 비용도 모두 포함됐다고 받아들일 수 있습니다. 아래 세 항목을 나눠 포함·제외 범위를 설명하는 편이 낫습니다.
- 제작비: 합의한 기능을 만들고 인수 조건을 맞추는 비용.
- 유지보수비: 문의 대응, 오류 조사·수정, 정기 확인 등 계약한 관리 업무의 비용.
- 외부 서비스 실비: AI API, 서버, 자동화 서비스, 메일 발송 등에 드는 요금. 결제 명의와 초과 사용 승인자를 별도로 지정.
개인 ChatGPT 구독료가 있다고 외부 프로그램의 API 비용까지 포함되는 것은 아닙니다. API를 쓴다면 누가 사용량을 보고, 예산 초과 때 누구에게 알리며, 어느 조건에서 작업을 중지할지 적어두세요. OpenAI도 사용량 확인과 지출 알림·한도 관리를 별도로 안내합니다. 알림만 받을지 실제 호출을 막을지도 구분해야 합니다.
비용을 얼마로 정할지는 입력량, 실행 횟수, 장애 대응 범위에 따라 달라집니다. 다른 업체의 월 요금을 그대로 업계 평균으로 설명하기보다, 우리 계약에 포함된 일과 실비가 증가하는 조건을 고객이 알게 하는 게 먼저입니다.
파일 전달이 아니라, 고객이 운영을 이어갈 수 있어야 인수입니다
소스 파일을 넘겨도 서버·자동화 계정·메일 연결이 제작자 개인 계정에만 묶여 있으면 담당자를 바꾸기 어렵습니다. 고객 계정으로 운영할지, 제작자가 서비스 형태로 제공할지 계약에서 정하고, 계정·데이터·소스의 권리와 이전 가능 범위를 구분하세요. 모든 외주가 소스 양도 계약인 것은 아닙니다.
고객이 직접 운영을 인수하는 조건이라면 실행 위치, 사용 중인 서비스, 필요한 권한, 정지·재개 방법, 백업 위치, 정상 처리 이력을 찾는 방법을 함께 전달합니다. 비밀번호나 API 키를 안내문에 그대로 붙이지 않고 권한 부여·안전한 비밀정보 전달 절차를 사용하세요. OpenAI 공식 운영 지침도 키를 코드나 공개 저장소에 노출하지 말고 안전한 저장소로 관리하도록 안내합니다.
인수 확인은 고객의 계정과 합의한 입력으로 해보는 게 좋습니다. 가상 고객 자료로 견적서를 만든 뒤 금액·저장 위치·발송 대상이 맞는지 확인하고, 빠진 품목이나 연결 실패 때 알림이 누구에게 가는지도 봅니다. 실제 고객에게 시험 메일을 보내기보다 별도 시험 주소를 쓰세요. 제작자 PC에서 한 번 성공한 화면만으로 고객 환경의 운영 인수가 끝난 것은 아닙니다.
계약 전에 이 문장부터 함께 채워보세요
다음은 법률 계약서가 아니라 고객과 범위를 맞추기 위한 협의 문장 예시입니다. 빈칸이 합의되지 않으면 ‘유지보수 포함’이라는 표현을 먼저 쓰지 않는 편이 낫습니다.
이 도구는 [입력 자료]로 [승인·저장·발송 범위]를 처리합니다. 합의한 기능의 오류는 [기간·범위] 안에서 [조건]으로 수정합니다. 새 기능·양식·외부 연동 변경은 [견적·승인 방식]으로 진행합니다.
문의는 [지원 시간·채널]에 받고 [첫 답변 기한] 안에 접수 사실을 알립니다. 복구 일정은 원인 확인 후 안내합니다. 발송 오류가 의심되면 [담당자]가 [중지 방법]으로 멈추고, 처리 이력 확인 후 [승인자]의 확인을 받아 재개합니다.
외부 서비스 결제와 사용량 확인은 [담당자]가 맡고, [예산 조건]을 넘길 때는 [승인·중지 방식]을 따릅니다. 계약 종료 시 [계정 권한·소스·데이터·백업·운영 문서]를 [범위·기한·비용 조건]으로 인계하고 제작자에게 남은 데이터는 [보관·삭제 조건]으로 처리합니다.
이 문장을 채우다가 직접 원인을 조사하거나 복구할 수 없는 부분이 나온다면, 그 업무를 맡을 유지보수 담당자를 확보하거나 납품 범위를 줄이세요. 처음부터 무인 발송까지 약속하기보다, 담당자가 결과를 확인한 뒤 보내는 도구로 시작하는 선택도 가능합니다. 첫 납품의 끝은 ‘완성했습니다’가 아니라, 문제가 생긴 다음 날에도 고객이 누구에게 무엇을 요청해야 할지 아는 상태입니다.