거절 메일 쓰는 법 AI, 정중하되 분명하게
다른 부서의 추가 작업 요청을 거절하는 답장을 AI 로 쓰되 거절이 흐려지지 않게 합니다. 초안·오해 찾기·수정 3단계와, 최종본을 확인하는 체크 2가지입니다.
「다음 주까지 영문판도 부탁드립니다」 같은 요청에 이번에는 못 받는다고 답해야 합니다. AI 에게 맡기면 문장은 매끄럽게 나옵니다. 문제는 다듬을수록 「안 된다」가 「검토해 보겠다」로 읽히거나, 시키지 않은 약속이 끼어드는 것입니다.
[1] 입력은 두 파일입니다. request.txt 는 받은 요청, facts.txt 는 거절 사유와 대안입니다. 사유·대안·「다른 약속 없음」을 먼저 직접 적어 두는 것이 이 방법의 바탕입니다.
제목: 고객용 매뉴얼 영문판 요청 안녕하세요, 기획팀 B입니다.해외 고객사와 미팅이 잡혀서, 다음 주까지 고객용 매뉴얼 영문판도 부탁드립니다. 국문판 기준으로 같은 구성이면 됩니다.가능한 일정 회신 부탁드립니다.- 거절 사유 1: 이번 달 국문판 개정과 정기 업데이트 대응에 팀 인원이 모두 배정되어 있다.- 거절 사유 2: 영문 번역과 감수는 우리 팀이 맡는 업무 범위가 아니고, 감수할 인력도 없다.- 줄 수 있는 대안 1개: 번역이 가능한 외부 업체 목록을 공유한다(메일에 첨부).- 그 밖의 약속은 하지 않는다. 날짜·일정·추가 지원은 쓰지 않는다.[2] 먼저 짧게 시켜 봅니다. 「아래 요청 메일에 정중하게 거절하는 답장을 써 줘」 뒤에 두 파일을 붙여 claude -p --model claude-sonnet-5-5 --max-turns 1 --tools "" --setting-sources "" --strict-mcp-config < p0.txt 로 돌렸습니다. 둘째 문단입니다. 첫 문단은 「미팅이 잡히셨다니 준비하실 부분이 많으시겠습니다」 라는 인사였습니다.
다만 이번 요청은 저희 팀에서 도와드리기 어려울 것 같습니다. 이번 달 국문판 개정과 정기 업데이트 대응에 팀 인원이 모두 배정되어 있어 추가 작업을 진행할 여력이 없습니다. …거절이 둘째 문단에야 나오고, 「어려울 것 같습니다」 는 단정을 피하는 말투라 받는 사람이 「사정이 되면 되나」 하고 되물을 여지를 남깁니다. 목적과 피할 것을 모른 채 쓴 결과입니다. 지시만 주지 말고 그 지시가 왜 필요한지 함께 적으라는 것이 Anthropic 의 맥락 추가 안내 요지입니다.
[3] 1단계, 초안입니다. 목적을 먼저 밝히고 금지를 규칙으로 적습니다. (일부 줄인 틀입니다.) 이 틀 뒤에 <request> · <facts> 태그로 두 파일을 붙입니다.
다른 부서 담당자 B 가 보낸 추가 작업 요청에 대한 답장 초안을 씁니다. 나는 이번 요청을 받을 수 없고, 관계는 유지하고 싶습니다. 받는 사람이 이 메일만 읽고도 「안 된다」를 분명히 알아야 합니다. 규칙:- 거절 문장은 첫 두 문단 안에 직접 씁니다. 「어렵습니다」처럼 끝까지 읽지 않아도 뜻이 전해지는 표현을 씁니다.- 사유와 대안은 <facts> 에 적힌 것만 씁니다. 날짜·기간·추가 지원·재검토 약속은 쓰지 않습니다.- 「검토해 보겠습니다」「가능한 범위에서」처럼 거절을 흐리는 말은 쓰지 않습니다.- 존댓말, 6~9문장. 메일 본문만 출력합니다.제목: [회신] 고객용 매뉴얼 영문판 요청 건 안녕하세요, 기획팀 B님. 요청해 주신 고객용 매뉴얼 영문판은 저희 팀에서 진행하기 어렵습니다. 다음 주까지 맡아 드릴 수 없는 점 양해 부탁드립니다. 이번 달에는 국문판 개정과 정기 업데이트 대응에 팀 인원이 모두 배정되어 있어 추가 작업을 받을 여력이 없습니다. 또한 ……대신 번역이 가능한 외부 업체 목록을 이 메일에 첨부해 드립니다. …[4] 2단계, 오해 찾기입니다. 고치게 하지 않고 「B 입장에서 읽고 문제 문장만 골라라」 하나만 시킵니다. 새 호출에 초안과 <facts> 를 붙이고, 기준은 가(거절이 보류로 읽힘) · 나(입력에 없는 약속) · 다(비난처럼 들림) 세 가지, 없으면 「없음」 한 단어입니다. 초안 → 기준에 비춘 검토 → 수정을 호출 셋으로 나누는 것은 Anthropic 프롬프트 연쇄 안내의 자기 교정입니다.
다음 주까지 맡아 드릴 수 없는 점 양해 부탁드립니다.- (가), (나): 불가 사유가 "다음 주까지"라는 기한으로 한정되어, 기한이 늦으면 가능하다는 보류로 읽힙니다. 다음 주라는 날짜도 facts에 없습니다. 이번 달에는 국문판 개정과 정기 업데이트 대응에 팀 인원이 모두 배정되어 있어 추가 작업을 받을 여력이 없습니다.- (가), (나): "이번 달에는"이 다음 달에는 가능하다는 뜻으로 읽혀, 재검토나 이후 일정을 암시하는 약속처럼 들립니다.문제 문장 둘이 걸렸습니다. 초안이 요청 메일의 「다음 주까지」 를 끌어 쓴 것, 그리고 사유 칸에 있던 「이번 달」 입니다. 둘 다 거절을 시간에 묶어 「나중에는」 으로 읽히게 합니다.
[5] 3단계, 수정입니다. 초안 + 지적 + <facts> 를 주고 「지적된 문장만 고치고 나머지는 한 글자도 바꾸지 마라」고 시킵니다. 멀쩡한 문장이 바뀌면 2단계에서 본 것이 무효가 되기 때문입니다.
요청해 주신 고객용 매뉴얼 영문판은 저희 팀에서 진행하기 어렵습니다. 맡아 드릴 수 없는 점 양해 부탁드립니다. 국문판 개정과 정기 업데이트 대응에 팀 인원이 모두 배정되어 있어 추가 작업을 받을 여력이 없습니다. 또한 …초안과 줄 단위로 비교하면 바뀐 곳은 지적된 두 문장뿐입니다. 「다음 주까지」 와 「이번 달에는」 이 빠졌습니다.
[6] 최종본에서 확인할 것은 둘입니다.
- 거절 문장이 인사말 뒤 첫 두 문단 안에 있는가
- 입력에 없던 약속(숫자 · 「추후」「다음에」「최대한」 같은 말)이 있는가
둘째는 눈이 놓치기 쉬워 줄을 뽑는 스크립트를 씁니다. 후보를 찾을 뿐이니 걸린 줄은 사람이 읽고 정합니다.
import re, systext = open(sys.argv[1], encoding="utf-8").read().strip()refuse, vague = re.compile(sys.argv[2]), sys.argv[3]lines = text.splitlines()if re.match(r"\W*(제목|Subject)\s*:", lines[0], re.I): lines = lines[1:]paras = [p for p in re.split(r"\n\s*\n", "\n".join(lines).strip()) if p.strip()]if len(paras[0].splitlines()) == 1: paras = paras[1:] # 한 줄 인사말은 세지 않음print("1) refusal in first 2 paragraphs:", "OK" if refuse.search(" ".join(paras[:2])) else "NO")for n, l in enumerate(lines, 1): for m in re.finditer(r"\d+|" + vague, l): print(f"2) line {n}: {m.group(0)!r} | {l.strip()[:50]}")$ K='어렵습니다|어려울|없습니다|불가|수 없'$ V='검토|것 같|추후|다음에|이번에|이번 달|다음 주|가능한 범위|최대한|조만간|협의'$ python3 -I check_mail.py draft.txt "$K" "$V"1) refusal in first 2 paragraphs: OK2) line 4: '다음 주' | 요청해 주신 고객용 매뉴얼 영문판은 저희 팀에서 진행하기 어렵습니다. 다음 주까지 맡아 드2) line 6: '이번 달' | 이번 달에는 국문판 개정과 정기 업데이트 대응에 팀 인원이 모두 배정되어 있어 추가 작업을$ python3 -I check_mail.py final.txt "$K" "$V"1) refusal in first 2 paragraphs: OK초안의 「다음 주」 「이번 달」 이 걸렸고 최종본은 걸린 줄이 없습니다. 단계 없이 쓴 p0 결과는 같은 문단의 「어려울 것 같습니다」 와 「이번 달 국문판 개정」 이 각각 걸려 두 곳입니다. 낱말 목록의 「이번 달」 「다음 주」 는 이번 초안에서 문제가 된 말을 보고 더한 것입니다. 처음 목록(「이번에」 까지)으로는 이 초안이 걸리지 않았습니다.
계약·환불·손해배상처럼 거절 문구가 법적 책임과 이어지는 메일은 AI 문장을 그대로 보내지 말고 담당 부서에서 확인합니다.