원문 캡처 · github.com
원문 캡처 · github.com

Deal Rescue Agent는 정체된 Salesforce 영업 기회 정보를 모아 구조화된 구제 계획과 이메일 초안을 만들고, 게시 전 날짜·금액·연락처·인용을 실제로 가져온 자료와 대조한다. 검증에 실패한 결과는 최대 두 번 다시 생성하며, 끝내 통과하지 못하면 아무것도 게시하지 않는다.

이 프로젝트는 CRM 앞단에서 사실 근거 확인을 코드로 강제하고, 모델에는 판단만 맡긴다는 접근을 내세운다. 모델은 거래 점수 자체를 계산하지 않는다. 점수는 침묵 기간, 종료일 변경, 단계 후퇴, 활동 감소 등을 반영하는 결정론적 규칙으로 산출하며, Claude는 점수를 최대 ±15 조정할 수 있지만 조정이 0이 아니면 근거 신호를 인용해야 한다. 모델에 제공되는 날짜·금액·단계명·연락처 ID는 제한된 근거 집합으로 전달되고, 출력에서도 다시 검증된다.

시연에서는 실제 실행이 41초 만에 게시되는 장면과 검증 게이트가 거부한 실행을 보여준다. 데모 영상은 YouTube에서 볼 수 있다. 게시 과정은 Salesforce에 승인 표시가 붙은 이메일 초안을 저장하는 데 그치며, 이메일을 자동 발송하지 않는다. 사람의 승인을 거치면 Salesforce가 자체 기능으로 발송한다.

Python 3.11 이상에서는 외부 키나 Salesforce 조직 없이 픽스처를 이용한 가짜 모드로 전체 파이프라인을 실행할 수 있다. 설치와 실행 명령은 다음과 같다.

pip install -e ".[graph,api,dev]"
pytest # 241 tests: honesty rules first
python -m deal_rescue.cli rescue meridian
uvicorn deal_rescue.api:app --port 8765 # then open http://localhost:8765

실시간 대시보드는 각 단계의 출력과 점수 계산, 회의록 인용, Claude의 초안과 조정 근거를 보여준다. 게시된 실행마다 거래 정보와 근거, 위험 및 진행 상황, 구제 계획을 담은 요약 페이지도 남긴다.

실제 연동을 설정하려면 /setup에서 Salesforce External Client App 소비자 키, 읽기 전용 Google Drive용 OAuth 클라이언트, 웹 조사에 쓰는 Tavily 키, Anthropic 키를 입력한다. 각 키는 .env에 쓰기 전용으로 저장되고 도구별로 독립해 활성화된다. 외부 정보 수집은 결과가 비어도 되지만 Salesforce 조직 데이터는 필수다.

프로젝트는 검증 게이트가 틀린 금액이나 하루 어긋난 일정, 조작된 표 등을 거부하도록 테스트한다고 설명한다. 재시도 횟수도 제한되며, 실행 기록과 평가 결과는 SQLite에 저장된다. 제작자는 평가 도구가 검증 게이트를 채점기로 재사용하고, 게이트가 확인하지 못하는 ‘퇴사한 담당자에게 이메일을 보내지 않기’ 같은 기대 조건도 추가한다고 밝혔다.

알려진 한계도 있다. 퇴사한 수신자 확인은 뉴스 문구에서 전체 이름을 찾는 방식이어서 별명은 놓칠 수 있다. 프로젝트 설명에 따르면 이 경우 잘못된 거부가 아니라 누락으로 이어질 수 있으며, 수신자 확인은 이름이 아닌 연락처 ID로 수행한다.

저장소와 구현 문서는 Deal Rescue Agent 저장소에서 확인할 수 있다. 도구별 구성과 역할은 도구 안내, 설치·실행 및 실제 연동 순서는 실행 안내서에 정리돼 있다.