sgkstudio.
엔지니어링

홈페이지 제작 견적서, AI 검토가 붙인 기능을 걷어낸 기준

홈페이지 제작 견적서의 범위는 AI 검토가 필요하다고 본 기능이 아니라 고객이 실제로 말한 요구로만 닫아야 합니다. 노무법인 고객의 견적을 쓰면서 적대 검토가 낸 지적 15건을 전부 반영하려 했지만, 고객의 통화·채팅·첫 견적과 한 줄씩 대조해 보니 알림톡·지사별 알림·2단계 인증·웹 접근성은 어디에도 없었습니다. 가격은 고객 요청대로 390만 원에서 300만 원으로 낮추고, 범위는 첫 견적과 통화 요구로 잠갔습니다.

2026-10-10가격: 첫 견적 B안 390만 원 → 고객 요청 300만 원(90만 원·23% 할인), 부가세 별도 총 330만 원대금: 계약금 20% 66만 원(확인 7일) · 잔금 80% 264만 원 · 무상 유지보수 1년반증된 가설: 적대 검토 지적 15건 전부 반영: 알림톡·지사별 알림·2단계 인증·접근성은 고객 요구 아님반증된 가설: A안 290만 원·7쪽 되돌림(13쪽 시안을 이미 봄), 390만 원 유지(경쟁 15곳)진짜 원인: 범위 출처가 고객 발화 밖에 열려 있었다 · 작업 완료 처리가 묶인 승인 요청을 함께 닫았다(041번)고친 방법: 포함·미포함 목록, 화면 공유 30분 → 단계별 안내서(PR #933), 견적서 PDF 2쪽사전 예측: 계약 65% · 가격 재이의 25% · 무응답 15%

증상: 승인 직전 견적서가 계속 바뀌고, 승인 요청은 저절로 취소됐다

홈페이지 제작 견적서는 AI가 “좋아 보인다”고 판단한 기능이 아니라 고객이 실제로 말한 요구만으로 범위를 잡아야 합니다. 이 결론에 닿기까지 견적서 한 장이 여러 번 다시 쓰였습니다. 노무법인 고객의 홈페이지 견적이었고, 2026년 10월 7일 하루 동안 견적서 수정 PR이 #929부터 #933까지 이어졌습니다.

눈에 띈 증상은 두 가지였습니다. 첫째, 견적서 본문이 고칠 때마다 커졌습니다. 고객이 말하지 않은 알림 기능과 보안 묶음이 들어왔고, 계정 개설 단계에는 “화면 공유 30분”이라는 실시간 일정이 끼어 있었습니다. 둘째, 대표가 눌러야 고객에게 나가는 발송 승인 요청이 같은 견적서 하나에 여러 장 생겼습니다. 038번 요청이 041번으로 대체됐고, 041번은 아무도 취소하지 않았는데 저절로 취소됐습니다.

견적 금액도 움직이고 있었습니다. 같은 날 15:11 통화에서 고객 쪽 부대표가 B안 390만 원을 300만 원에 해 달라고 요청했습니다. 90만 원, 23% 할인입니다. 대표 3명이 논의한 뒤 정하겠다는 조건이 붙어 있었습니다. 가격이 내려가는데 범위는 늘어나는, 방향이 거꾸로 된 견적서가 만들어지고 있었습니다.

통계 카드 세 개. 첫 견적 B안 390만 원, 고객 요청가 300만 원(90만 원·23% 할인), 최종 총액 330만 원(부가세 포함).
견적 금액의 이동

처음엔 무엇을 의심했나: 견적서가 덜 검토돼서 다시 손대게 된다

견적서를 다시 쓰는 동안 적대 검토 패널을 돌렸습니다. 적대 검토 패널은 견적서를 일부러 공격하는 역할을 맡은 AI 검토 단계로, 빠진 기능·법적 위험·고객이 나중에 따질 만한 빈틈을 찾아냅니다. 이 패널이 낸 지적은 15건이었습니다.

처음 세운 가설은 단순했습니다. 지적이 15건이나 나왔다면 견적서에 빈틈이 그만큼 있다는 뜻이고, 15건을 전부 반영하면 견적서가 단단해진다. 할인 요청을 받은 상황에서 “더 많이 해 드립니다”를 보여 주면 가격 방어에도 도움이 될 것처럼 보였습니다.

이 가설대로라면 고칠 곳은 검토 단계였습니다. 검토를 더 촘촘하게 돌리고, 지적을 빠짐없이 견적서에 옮기면 같은 견적서를 두 번 세 번 고치는 일이 줄어들어야 했습니다. 실제로 견적서에는 카카오 알림톡, 지사별 알림, 2단계 인증 같은 관리자 보안 묶음, 웹 접근성 항목이 들어갔습니다.

어떻게 확인했나: 고객이 한 말과 견적서를 한 줄씩 맞대 봤다

가설을 확인하는 수단은 고객이 남긴 기록이었습니다. 쓸 수 있는 원천은 세 개였습니다. 고객이 이미 받아 본 첫 견적 B안의 항목 목록, 10월 7일 15:11 통화에서 고객이 직접 요구한 내용, 그리고 같은 날 10:12 채팅 기록입니다.

방법은 대조였습니다. 견적서의 항목 하나하나에 “이 항목을 고객이 어디서 요구했나”를 붙이고, 출처를 대지 못하는 항목을 따로 모았습니다. 첫 견적 B안에는 13쪽 구성, 상담 문자, 메일 알림, 성공사례 이관, 검색 등록이 있었습니다. 통화에서 고객이 더한 요구는 관리 화면 확장, 지사 2곳, 대표 3인 소개였습니다.

이 두 목록 밖에 있는 항목이 검토 패널과 에이전트가 붙인 것들입니다. 대조는 견적서 PDF 2쪽 분량이라 오래 걸리지 않았습니다. 시간이 든 쪽은 대조가 아니라, 대조를 하기 전에 이미 견적서를 여러 번 고쳐 놓은 일이었습니다.

어떻게 확인했나: 고객이 한 말과 견적서를 한 줄씩 맞대 봤다
항목 출처들어간 항목
첫 견적 B안13쪽 · 상담 문자 · 메일 알림 · 성공사례 이관 · 검색 등록
10월 7일 통화 요구관리 화면 확장 · 지사 2곳 · 대표 3인 소개
출처 없음(검토 패널·에이전트)알림톡 · 지사별 알림 · 2단계 인증 · 웹 접근성 · 화면 공유 30분

검토 지적 15건은 왜 답이 아니었나

대조 결과 가설은 틀렸습니다. 견적서가 계속 바뀐 이유는 검토가 덜 돼서가 아니라, 검토가 고객이 요구하지 않은 일을 견적서에 계속 밀어 넣어서였습니다. 알림톡, 지사별 알림, 2단계 인증, 웹 접근성은 통화에도, 채팅에도, 첫 견적에도 없었습니다.

검토 패널의 지적이 틀린 말은 아니었습니다. 보안을 강화하면 좋고, 접근성을 챙기면 좋습니다. 문제는 “좋다”와 “고객이 돈을 내고 사겠다고 한 것”이 다른 질문이라는 점입니다. 23% 할인을 요청한 고객에게 요구하지 않은 기능을 얹으면, 견적서는 가격 방어가 아니라 마진을 더 깎는 문서가 됩니다.

법률 감수를 넣자는 안도 같은 자리에서 빠졌습니다. 홈페이지 문구의 법률 검토는 그럴듯한 추가 항목이지만, 이번 의뢰인은 노무사 법인이었습니다. 법률 전문가에게 법률 감수를 팔겠다는 항목은 빈틈을 메우는 것이 아니라 신뢰를 깎습니다.

“화면 공유 30분”도 같은 계열이었습니다. 계정 개설을 도와준다는 취지였지만, 저희 회사는 상담과 인도를 이메일 같은 비동기 방식으로만 진행합니다. 대표가 시키지 않은 실시간 일정이 견적서에 들어간 것 자체가 결함이었습니다.

가격 쪽 가설도 두 개가 반증됐다

범위만 흔들린 것이 아니었습니다. 할인 요청에 대응하는 가설도 두 개를 세웠고, 둘 다 기각했습니다.

첫째 가설은 “300만 원이라면 범위를 줄인 A안으로 되돌리면 된다”였습니다. A안은 290만 원, 7쪽 구성이었습니다. 숫자만 보면 깔끔한 해법입니다. 하지만 고객은 13쪽 시안을 이미 본 뒤에 B안을 요청했습니다. 본 것을 빼앗는 견적은 할인을 거절하는 것보다 나쁩니다.

둘째 가설은 “390만 원을 그대로 유지한다”였습니다. 이 고객은 15곳의 경쟁 견적을 받은 상태였고, 예산 의사도 분명했습니다. 가격을 버티면 범위 논쟁 없이 계약 자체를 잃을 가능성이 컸습니다. 그래서 가격은 고객 요청대로 300만 원에 맞추고, 대신 범위를 고객이 말한 것으로 정확히 잠그는 쪽을 골랐습니다.

표. 반증한 가설 네 개와 기각 사유. 검토 지적 15건 전부 반영(고객 요구 아님), 법률 감수 포함(의뢰인이 노무사 법인), A안 290만 원·7쪽으로 되돌림(13쪽 시안을 이미 봄), 390만 원 유지(경쟁 15곳·예산 의사 명확).
반증한 가설 네 개

진짜 원인은 무엇이었나: 범위의 출처가 고객 밖에 열려 있었다

원인은 견적서를 쓰는 방식에 있었습니다. 견적서에 들어갈 항목을 정하는 기준이 “고객이 말한 것”으로 닫혀 있지 않고, “에이전트나 검토 단계가 필요하다고 판단한 것”에도 열려 있었습니다. 기준이 열려 있으면 검토를 돌릴 때마다 항목이 늘어나고, 늘어난 항목을 다시 빼느라 견적서를 또 고칩니다. PR이 #929부터 #933까지 이어진 이유가 여기 있었습니다.

승인 요청이 저절로 취소된 증상은 원인이 따로 있었습니다. 발송 승인 요청은 작업 항목 하나에 묶여 있고, 그 작업 항목을 완료로 처리하면 묶인 승인 요청도 자동으로 닫히게 짜여 있습니다. 041번 요청이 묶인 작업이 완료 처리되면서 041번도 함께 취소됐습니다. 견적서는 아직 나가지 않았는데, “작업 완료”와 “발송 완료”가 같은 신호로 묶여 있었던 셈입니다.

두 원인은 뿌리가 비슷합니다. 하나는 범위를 정하는 출처가 너무 넓었고, 다른 하나는 승인 요청을 닫는 신호가 너무 넓었습니다. 어느 쪽이든 사람이 결정하지 않은 일이 시스템의 기본값 때문에 일어났습니다.

흐름도. 발송 승인 요청 038번이 041번으로 대체되고, 041번은 묶인 작업 항목이 완료 처리되면서 자동 취소된다. 이후 063번 작업 항목에 다시 연결했고 최종 발송 승인 요청은 045번이다.
승인 요청이 저절로 닫힌 경로

고친 방법: 포함과 미포함을 목록으로 박았다

범위는 “첫 견적 B안 + 통화에서 요구한 것” 두 출처로만 닫았습니다. 대표의 지시도 같았습니다. “일 키우지 않는 쪽으로 해. 전화상으로 요구한 것까지만 받아.” 두 출처 밖에서 더한 항목은 개인정보처리방침의 국외 이전·위탁 항목 하나뿐입니다.

견적서에는 미포함 목록도 같은 무게로 적었습니다. AI 응대, 회원, 예약, 결제, 유료 사진, 법률 감수, 문자 실비입니다. 포함 목록만 있으면 고객은 빠진 것을 “당연히 들어 있겠지”로 읽습니다. 미포함을 적어 두면 나중에 생길 추가 요구가 견적서 안에서 이미 답을 갖습니다.

금액 조건도 문장으로 고정했습니다. 300만 원에 부가세 별도, 총 330만 원입니다. 대표는 “부가세 별도는 반드시 적도록”이라고 못 박았습니다. 계약금은 20%인 66만 원으로 확인 기간 7일, 잔금은 80%인 264만 원으로 잔금 확인과 함께 오픈·인계합니다. 무상 유지보수는 1년입니다. 일정은 “3주”로 고정하던 문구를 지우고 착수일 기준으로 협의하도록 바꿨습니다.

막대그래프. 총액 330만 원 중 계약금 20% 66만 원, 잔금 80% 264만 원.
대금 구조

“화면 공유 30분”은 PR #933에서 단계별 안내서로 바꿨습니다. 고객이 계정을 직접 만들 때 따라 할 순서를 문서로 건네는 비동기 방식입니다. 최종 견적서는 PDF 2쪽이었습니다. 승인 요청은 묶여 있던 작업이 닫혀 취소된 뒤 063번 작업 항목에 다시 연결했고, 최종 발송 승인 요청은 045번으로 올렸습니다.

같은 실수를 막는 장치는 무엇인가

검토 패널이 낸 항목 중 고객 요구가 아닌 것(알림톡, 지사별 알림, 2단계 인증 묶음, 접근성)은 기각 목록 파일(docs/REJECTED.md)에 올렸습니다. 이 파일은 에이전트가 새로 일을 시작할 때마다 첫 화면에 자동으로 들어갑니다. 여기 오른 항목은 재개 조건이 충족되기 전까지 제안·조사·착수를 하지 않습니다.

이 파일이 따로 있는 이유가 있습니다. 에이전트가 남기는 기록은 열린 일, 내린 결정, 행동 습관 세 가지뿐이고, 전부 “하기로 한 것”입니다. 대표가 “하지 마라”고 죽인 안은 어디에도 남지 않습니다. 그래서 새로 시작한 에이전트는 기각된 제안을 신선한 아이디어로 다시 들고 옵니다. 2026년 8월 8일에는 한 번의 작업 안에서 그런 일이 2회 있었습니다. 이 구조는 AI 에이전트가 기각된 아이디어를 다시 꺼내는 문제에서 자세히 다뤘습니다.

“화면 공유 30분” 같은 실시간 일정은 이번이 처음이 아니었습니다. 2026년 7월 16일에는 상담 페이지에 “15분 화상 상담 예약” 버튼이 라이브까지 나갔다가 PR #60으로 지웠습니다. 같은 페이지에 “모든 상담은 이메일 기반 비대면”이라고 적혀 있는 채였습니다. 2026년 8월 19일에도 비슷한 일이 있었습니다. 기각 목록은 이 축을 “대표가 직접 미팅하겠다고 말할 때만 재개”로 막아 두었고, 이번 견적서 건도 같은 축에 묶였습니다.

견적서 자체에도 장치를 넣었습니다. “확정 뒤 추가는 재협의” 조항입니다. 20% 넘게 할인한 견적이라 마진이 얇고, 범위 밖 요구가 들어오면 이 조항이 유일한 방어선입니다. 포함·미포함 목록이 이 조항의 판정 기준 역할을 합니다.

아직 남은 위험과 미리 적어 둔 예측

고치지 못한 것도 있습니다. 작업 항목을 완료 처리하면 묶인 승인 요청이 같이 닫히는 동작은 이번에 재연결로 대응했을 뿐, 동작 자체를 바꾼 기록은 없습니다. 같은 구조에서 다른 견적서가 똑같이 닫힐 수 있습니다.

계약금 비율도 약점이 남아 있습니다. 10:12 채팅에서 저희가 “10~20% 중 선택”이라고 답했기 때문에, 고객이 10%를 주장하면 그 답이 근거가 됩니다. 착수 뒤 고객이 이탈하더라도 시안과 완성본이 이미 있어 추가 원가는 작다고 판단했습니다.

결과는 보내기 전에 숫자로 적어 두었습니다. 계약 65%, 대표자 논의 뒤 가격 재이의 25%, 무응답 15%입니다. 재이의나 무응답이 나오면 가격이 아니라 범위를 조정해 보완합니다. 예측과 결과가 어긋나는 지점이 다음 견적서를 바꿀 근거가 됩니다.

막대그래프. 발송 전 사전 예측. 계약 65%, 가격 재이의 25%, 무응답 15%.
보내기 전에 적은 예측

정리하면, 홈페이지 제작 견적서에서 검토를 더 돌리는 것은 해법이 아니었습니다. 항목마다 “고객이 어디서 이걸 요구했나”를 붙이고, 답하지 못하는 항목을 빼는 것이 해법이었습니다. 견적 범위를 어떻게 잡아야 할지 고민 중이라면 상담으로 남겨 주세요.

같은 방식으로 우리 업무를 재보고 싶다면

이 글에 쓴 계측·판정·자동화는 저희가 실제로 매일 돌리는 방식 그대로입니다. 어떤 작업을 자동화할 수 있고 어디를 사람이 잡아야 하는지, 현재 업무 흐름을 놓고 같이 짚어 드립니다.

새 글이 올라오면 알려 드립니다

이런 계측 기록을 새로 쓰면 메일로 한 통 보냅니다. 광고나 판촉은 보내지 않습니다.