엘리스 세일즈 조직은 그동안 세일즈포스(Salesforce)를 CRM 툴로 사용하다 2026년 5월, 사내 CRM을 직접 만들기 시작했습니다. 고객과 영업을 관리하는 이 시스템의 이름은 세일즈옵스(Sales Ops)입니다.
단순히 세일즈포스가 불편해서 직접 만든 것은 아니었습니다. 리드와 기회 관리 같은 기본 기능은 세일즈포스로도 잘 쓰고 있었습니다. 문제는 다른 곳에 있었습니다. 엘리스의 영업 데이터가 여러 시스템에 흩어져 있다 보니 문의 한 건이 리드와 기회를 거쳐 계약과 정산까지 가는 과정을 하나로 이어 보기 어려웠습니다. 기록을 남기는 방식도 담당자나 팀마다 제각각이라 무엇이 어떻게 진행 중인지 파악하는데도 많은 시간을 써야했습니다.
세일즈옵스는 엘리스의 영업 흐름을 기록하고 관리하는 CRM입니다. 다만 모든 기능을 새로 만들지는 않았습니다. 계약이나 정산처럼 이미 다른 사내 시스템이 잘 처리하던 일은 그대로 두고, 세일즈옵스가 그 사이를 이어 주는 방식을 선택했습니다. 첫 버전 배포 후 약 두 달 동안 50여 차례 수정 과정을 공유합니다.
CRM을 새로 만든다는 것
엘리스의 데이터는 여러 시스템에 흩어져 있었습니다. 영업 데이터는 세일즈포스에, 계약과 견적은 사내 정산 플랫폼 엘리스 허브에, 과업 내용은 협업 도구 지라(Jira)에, 고객 문의는 상담 채널과 이메일에, 수주 이후 운영 정보는 개인 문서와 대화에 남아 있었습니다. 이처럼 데이터가 분산되어 있었기에 한 건의 거래를 문의부터 수주와 정산, 운영까지 한 맥락으로 이어 보기가 어려웠고, 기록을 넣고 업데이트하는 일도 구성원 개인의 습관에 의존하게 되는 경향이 강했습니다.
그래서 엘리스가 실제로 쓰는 흐름만 구현하고 허브와 지라, 회사 계정, CS용 챗봇을 연결하는 툴의 필요성을 느꼈습니다. 특히 AI가 데이터를 직접 읽고 쓰는 시대이다보니 사람이 보는 화면뿐 아니라 AI가 접속할 수 있는 깔끔한 연결 창구까지 갖춘 시스템이 필요했습니다.
물론 직접 만드는 것에도 그만큼의 리소스와 책임이 따른다는 것을 감안해야 했습니다. AI 코딩 도구 덕분에 개발 속도는 크게 줄일 수 있었지만, 시스템을 직접 소유한다는 건 그 이상의 책임을 뜻합니다. 로그인과 권한 관리, 누가 무엇을 했는지 남기는 기록, 기존 데이터 이전, 안정적인 배포, 이후 유지보수까지 전부 우리 몫입니다. 이 비용까지 계산에 넣고 결정했습니다.
여러 툴을 고민했지만 결국엔 직접 만든 이유
다른 툴을 도입하는 것도 함께 검토했습니다. 허브스팟으로 변경을 고민하기도 했었는데요, 화면이 쉽고 영업 흐름이 직관적이라는 장점이 있었습니다. 지라 역시도 이미 전사에서 쓰고 있어 실행 관리에 강했습니다. Zoho와 Pipedrive, monday 같은 도구도 가격이 합리적이고 단순하다는 장점이 있었습니다.
하지만 우리에게 필요한 건 CRM 화면 하나가 아니었습니다. 문의에서 리드와 기회, 허브 계약과 견적, 정산, 그리고 수주 이후 프로그램 운영까지 이어지고 동시에 팀과 권한, 기록, 데이터 점검, AI 요약, 지라 실행 과업까지 연결되는 하나의 운영 흐름이 필요했습니다. 허브스팟은 시작은 쉬워도 수주 이후 프로그램 실무가 약했고, 지라는 실행에는 강해도 고객 및 의사결정자 정보 같은 CRM 데이터를 담고 퍼널을 자동화하기에 구현의 한계가 명확했습니다.
결정을 하는데 가장 중요했던 것은 기능의 개수가 아니라 업무의 경계를 어떻게 줄일 수 있는가였습니다. 다른 도구를 우리 방식에 끼워 맞추려 계속 우회하는 비용이 전용 솔루션을 구축하는 비용보다 클 것이라고 판단했습니다.
세일즈옵스 설계 원칙: 데이터 소유권을 분명히 하기
세일즈옵스의 첫 번째 설계 원칙은 소유권을 분명히 나누는 것이었습니다. 사실 가장 어려운 일도 테이블을 어떻게 그리느냐가 아니라, "어느 시스템이 어떤 데이터의 원본을 책임지느냐"를 정하는 것이었습니다. (같은 데이터가 두 곳에 있으면 반드시 어긋나기 때문에 각 정보의 '진짜 원본'을 한 곳으로 정하는 게 중요했습니다.)
- 세일즈옵스 소유 데이터: 계정, 연락처, 문의, 리드, 기회, 캠페인, 활동 기록과 후속 상태
- 엘리스 허브 소유 데이터: 조직, 계약, 견적, 세금계산서와 같은 재무 관련 문서
- 지라 기록 데이터: 실행 중인 과업 및 운영 후속 작업
세일즈옵스는 다른 시스템에 있는 데이터를 복사해 오지 않습니다. 예를 들어 계약 정보는 원래 허브에 있는데, 이걸 세일즈옵스에도 복사해 두면 문제가 생깁니다. 나중에 허브에서 계약 금액이 바뀌어도 세일즈옵스에는 옛날 값이 그대로 남아 두 시스템의 숫자가 어긋나기 때문입니다. 그래서 값을 복사하는 대신 '허브의 몇 번 계약'이라는 연결 정보만 저장해 둡니다. 그리고 필요할 때 허브에서 최신 값을 그때그때 불러옵니다. 이렇게 하면 원본은 늘 한 곳에만 있고, 어느 화면에서 보든 항상 최신 정보가 보입니다.
데이터 재설계 과정을 통해 경험한 시행착오
기존 세일즈포스의 데이터와 업무 흐름은 마이그레이션 과정에서 하나씩 대조하며 파악했습니다. 세일즈포스의 데이터 목록을 불러와 세일즈옵스의 데이터와 나란히 놓고 비교한 뒤, 필요한 항목만 골라 가져오는 도구를 직접 만들었습니다. 기회뿐 아니라 연락처와 제품, 노트, 통화, 이메일, 첨부 파일까지 묶어서 확인했고, 이름이 같은 기회도 자동으로 합치지 않고 담당자가 직접 반영할 항목을 선택할 수 있게 구현했습니다.
이 과정에서 데이터 구조와 실제 업무가 다르게 움직이는 사례를 파악할 수 있었습니다.
- 세일즈포스에서는 같은 이메일이 두 종류의 기록으로 잡혀 있어, 그대로 가져오면 이메일 활동이 중복됐습니다.
- 진짜 고객 대신 담당자 미상 같은 임시 값이 연결된 건이 있어 실제 연락처를 넣을 때 기존 연결을 바꿔줘야 했습니다.
- 서비스 기간 정보가 없는 기회는 처음엔 생성일과 마감일을 임시로 쓰다가, 이후 계약 기간이라는 하나의 의미로 통일했습니다.
- 매출 숫자는 세일즈포스 금액이나 계약 총액을 그대로 쓰지 않고 재무 기준에 맞춰 허브의 최종 견적서 공급가액으로 재정의했습니다.
- 세일즈포스에 없던 새로운 기회의 경우 마이그레이션 안 함이라는 상태를 추가하여 기록했습니다.
AI는 이 비교 도구를 빠르게 만드는 데 큰 도움이 됐습니다. 하지만 어떤 값이 진짜인지 정하는 일은 결국 현업의 실제 사용과 데이터 대조로 판단했습니다.
'한 데이터는 한 곳에서만 진실이어야 한다'는 원칙을 갖고 작업했습니다. 그래서 막 들어온 원본 문의와 검증을 거친 리드를 아예 다른 기록으로 나눴습니다. 문의에는 상담 채널과 이메일 원본을 그대로 보존하지만 리드와 기회에는 실제로 쓰는 항목만 살려두고, 정산도 기회에 붙이지 않고 따로 분리했습니다. 수주와 계약서 확인, 세금계산서 발행, 입금 확인은 서로 다른 단계이기 때문입니다.
세일즈옵스 기술 스택 및 배포 스토리
세일즈옵스가 쓰는 기술을 간단히 정리하면 이렇습니다.
| 영역 | 영역 상세 | 활용 기술 |
|---|---|---|
| 백엔드 | 데이터를 처리하는 서버와 운영용 데이터베이스 | Python, FastAPI, PostgreSQL |
| 프론트엔드 | 사용자가 보는 화면 | React, Vite, Tailwind |
| 저장소 | 업로드한 파일을 보관하는 곳 | 로컬 디스크(개발), Azure Blob(운영) |
| 배포 | 코드를 자동으로 검사하고 서버에 올리는 회사 표준 도구 | GitLab CI, Release Manager, ArgoCD |
| 로그인 | 회사 계정으로 로그인 | Microsoft 365 |
화면과 서버는 빠르게 고치고 다시 배포하기 좋은 조합을 선별했습니다. 특히 한 번 만든 데이터 규칙을 사람이 보는 화면과 AI 연결 창구가 똑같이 재사용하도록 설계해 같은 로직을 두 번 만들지 않았습니다.
처음에는 가벼운 개발용 데이터베이스(SQLite)로 빠르게 시작했습니다. 하지만 운영에 들어가려면 여러 사람이 동시에 써도 안전하고, 잘못된 데이터가 아예 들어가지 못하게 막아주는 튼튼한 데이터베이스가 필요했습니다. 그래서 PostgreSQL로 옮기고, 데이터 구조를 바꿀 때마다 그 변경을 버전처럼 기록하고 검증하는 방식을 도입했습니다.
배포는 개인 서버에 몰래 올리는 식이 아니라 회사 표준 절차를 그대로 따랐습니다. 자체 도구라도 나중에 플랫폼팀이 이해하고 넘겨받을 수 있어야 한다고 봤기 때문입니다.
AI를 활용하여 영업 기록의 핵심 요약 제공
세일즈옵스에서는 AI가 활동 기록 요약문을 디폴트로 만들도록 세팅되어 있습니다. 실무자에게 기록을 남겨달라고 부탁하는 건 생각보다 어렵기 때문입니다. 회사가 필요하다는 이유만으로 입력 항목이 늘어나면 기록은 금세 밀리거나 누락되고 데이터 품질도 떨어질 수 있죠.
그래서 기록하는 행위가 실무자 본인에게 바로 도움이 되어야 한다고 생각했습니다. 미팅이나 통화, 이메일, 문서를 남기면 AI가 알아서 요약하고 다음 할 일과 중요한 신호를 정리해줍니다. 그러면 기록은 보고용이 아니라 내 업무를 정리하는 도구가 됩니다. 나중에 문제가 생겨도 그때 무슨 이야기가 오갔고 어떻게 대응했는지가 근거로 남으니 실무자를 지켜주는 장치가 될 수도 있습니다. 회사 입장에서는 개인 머릿속에만 있던 고객 맥락이 조직의 자산으로 남는다는 이점이 있습니다.
그래서 활동 기록 자체를 원본으로 두고 AI는 그 위에서 요약 및 인사이트를 제공하는 보조 역할로 설계했습니다. 음성과 영상은 글로 바꾸고, 문서나 이미지는 내용을 읽어내며, 텍스트는 그대로 처리한 뒤 한국어 요약과 함께 가격이나 일정, 경쟁사 언급 같은 신호를 정리합니다. 원본은 그대로 보존하고 AI 결과는 언제든 다시 뽑을 수 있어서 AI가 원본 사실을 대체하지 않습니다.

신뢰할 수 있는 AI 요약을 위한 4단계 검토
AI가 요약했다고 해서 바로 확정하지 않고 4단계에 거쳐 요약본을 검수하는 과정을 삽입했습니다.
- 파일 형식부터 분기합니다. 오디오와 영상은 음성을 텍스트로 변환하는 STT로, 문서와 이미지는 내용 추출 단계로, 텍스트는 그대로 요약으로 보냅니다.
- 결과를 자유 텍스트가 아니라 정해진 JSON 형식으로 받습니다. temperature(생성 결과의 무작위성)를 낮춰 요약과 검토 필요 여부, 신호를 매번 같은 구조로 내놓게 하고, 없는 사실은 만들지 말라고 명시합니다.
- 원문과 결과, 사용한 모델을 함께 저장합니다. 사용자가 둘을 비교할 수 있고, 원문이나 기록을 수정하면 요약 파이프라인을 다시 실행합니다.
- 최종 판단은 사람이 합니다. AI 결과가 기회 단계나 정산 상태를 자동으로 확정하지 못하게 막았습니다.
AI 에이전트와 연계한 효율적인 데이터 관리 솔루션
세일즈옵스는 AI 에이전트가 CRM에 직접 접속해 데이터를 읽고 쓸 수 있게 만들었습니다. 이때 쓴 것이 MCP라는 표준 규격입니다. AI가 외부 시스템에 안전하게 접속하도록 정해둔 공통 연결 방식으로, 세일즈옵스는 이 MCP 서버를 자체 구현했습니다.
여기서 가장 신경 쓴 건 여러 인스턴스로 확장돼도 인증이 끊기지 않게 하는 것이었습니다. 로그인 자체는 회사 계정으로 하고 권한도 꼼꼼히 확인합니다. AI가 접속했다고 무조건 데이터를 보여주지 않고 로그인한 사람의 이메일이 실제 등록된 팀원인지 다시 대조합니다.
지금 세일즈옵스는 Claude Code와 Codex, 그리고 엘리스가 자체 개발한 업무용 AI 에이전트 헬피코드(HelpyCode)를 지원합니다. 덕분에 구성원은 세일즈옵스 화면에 들어가지 않고도 평소 쓰는 AI를 활용하여 다양한 액션을 진행할 수 있습니다.
- 오늘 확인할 리드와 기회, 문의, 담당자 조회
- 리드와 계정, 연락처, 기회 만들고 수정하기
- 캠페인 참여자 등록과 상태 변경
- 정산 현황 확인과 수정
- 고객 미팅이나 메모를 활동 기록으로 남기기
- 기록이 빠진 리드와 기회를 점검 목록으로 뽑기
진짜 병목은 코딩이 아닌 사람 간 커뮤니케이션
세일즈옵스는 지난 5월 런칭 후 두 달 동안 50회 이상의 수정 과정을 겪었습니다.
다양한 플랫폼과 사내 툴을 개발하며 얻은 가장 큰 깨달음은 기술보다 사람 사이의 소통이 진짜 병목이라는 것이었습니다. 디자이너와 기획자, 개발자, 최종 결정권자가 따로 있으면 요구사항을 전달하고 해석하고 검토하고 승인받는 대기 시간이 실제 개발 시간보다 길어졌습니다.
그렇기에 이번에는 만든 사람이 직접 기획을 맡고 의사결정까지 책임졌습니다. 재무팀과 세일즈팀, 개발팀, AI팀 같은 실제 사용자를 직접 인터뷰하되 모든 의견을 오래 합의하기보다 원칙과 우선순위를 빠르게 정하는 쪽을 택했습니다. 업무를 아는 사람이 요구사항과 제품에 대해 직접 결정하고 AI 코딩 도구 사용, 배포와 일부 연동은 플랫폼과 백엔드 동료의 도움을 받았습니다.
진짜 병목은 코드가 아니라 이 네 가지였습니다.
- 여러 팀의 요구를 듣고 서로 부딪히는 의견 사이에서 빠르게 원칙을 정하는 일
- 세일즈포스와 허브, 지라 중 무엇이 진짜인지 정하는 경계 긋기
- 실제 데이터를 옮기며 중복과 임시 값, 날짜와 금액의 의미 차이를 하나하나 검증하는 일
- 내 노트북에서 되는 기능을 로그인과 권한, 여러 서버 환경에서도 안전하게 배포하는 일
AI를 적극 활용하여 구현 시간을 줄였고 기획자와 결정권자를 한 사람으로 합쳐 중간 대기를 없애며 표준 배포 도구가 반복 배포의 마찰을 낮췄습니다.
가장 어려웠던 인증 문제 해결 방안
기술적으로 가장 해결하기 어려웠던 이슈는 앞서 말한 인증 문제였습니다. 로컬에서는 멀쩡한 MCP 로그인이 여러 인스턴스가 도는 운영 환경에서 자꾸 끊겼습니다. 원인은 OAuth 인증 상태를 특정 프로세스 메모리에만 두었기 때문이었습니다. 요청이 다른 인스턴스로 넘어가면 앞의 상태를 알 수 없었습니다.
해결책은 세션을 한 인스턴스에 묶는 게 아니라 그 상태를 데이터베이스로 옮겨 무상태(stateless)로 만드는 것이었습니다. 그러자 인스턴스가 개수나 배포 여부와 상관없이 인증이 이어졌습니다.
SQLite에서 PostgreSQL로 옮길 때도 비슷했습니다. SQLite에서 느슨하게 넘어가던 동작을 PostgreSQL 제약조건에 맞춰 정리하고, 마이그레이션 히스토리도 다시 손봐야 했습니다. 이후로는 스키마를 바꿀 때 마이그레이션과 문서를 반드시 함께 남기도록 규칙으로 정했습니다.
세일즈옵스 도입 이후 변화
가장 크게 달라진 점은 대표부터 각 팀 실무자까지 필요한 정보를 같은 시스템에서 한눈에 보게 된 것입니다. 예전에는 대시보드 하나를 만들려 해도 여러 시스템을 따로 연결하고 세일즈포스 구조에 맞춰 긴 개발을 해야 했습니다. 어떤 정보는 시스템 경계 때문에 애초에 한 화면에 담기 어려웠습니다.
물론 생성형 AI로 일회성 앱을 딸깍 만들 수도 있습니다. 하지만 그런 앱은 데이터나 연결이 바뀌면 곧 망가지고 주인이 없어 방치되기 쉽습니다. 세일즈옵스는 그런 일회성 앱이 아니라 로그인과 권한, 기록, 데이터 이전, 문서와 배포 체계를 갖춘 오래 쓸 수 있는 자체 제품으로 만들었다는 점이 다릅니다.
- 문의와 리드, 기회, 계약, 정산, 활동 기록을 한번에 확인합니다. 예전에는 리드에서 기회로 넘어갈 때 담당자 재량으로 자주 끊겨서 그 리드가 어떻게 됐는지 추적이 어려웠지만, 이제는 팀 전체의 퍼널을 숫자로 확인합니다.
- 매출만 보면 드러나지 않던 연구과제나 정부지원 과제의 기여를 사업 유형별로 나눠 각 팀 단위로 봅니다.
- 견적 시스템과 직접 연동해 재무 기준에 맞는 금액을 정확히 기입합니다. 지라의 실행 과업은 그대로 두면서도 전체 맥락은 세일즈옵스에서 연결합니다.
- 리더는 전체 파이프라인과 매출, 정산, 팀 기여를 보고, 실무자는 자기 고객과 다음 할 일을 같은 데이터에서 봅니다.
- 빠진 활동이나 정보를 사람의 기억이 아니라 자동 점검 목록으로 찾아냅니다.

세일즈 기록을 넘어 AX Ops로
세일즈옵스의 다음 목표는 단순한 영업 기록 도구를 넘어 첫 고객 접점부터 매출과 운영, 재구매까지 하나로 잇는 시스템이 되는 것입니다.
- 통합 고객 상담: 세일즈옵스 안에서 전화를 주고받고 전화가 오면 그 고객의 기존 정보와 지난 대화가 바로 뜨게 합니다. AI가 대화에서 고객 의도를 읽어 영업 문의인지 지원 문의인지 나누고 알맞은 담당자에게 자동으로 연결합니다.
- 수주 이후 프로그램 관리: 계약이 성사되면 운영 프로그램을 자동으로 만들고 일정과 담당자, 체크리스트, 성과 지표를 관리하는 기능을 개발하고 있습니다.
- 전체 흐름과 재무 자동화: 캠페인과 홈페이지, 상담에서 생긴 문의가 계약과 정산까지 이어지는 전환율을 한 번에 분석합니다. 최근 이를 위한 분석 기반도 마련했습니다.
- AI 요약 품질 측정: 요약을 만드는 데서 끝내지 않고 수정 기록 및 사실 여부를 반복 검증하며 개선합니다.
이제 기술 구현 자체는 가장 큰 장벽이 아닙니다. 필요한 업무 원칙과 사용자 경험을 빠르게 결정할 수 있다면 다음 기능도 예전보다 훨씬 빨리 만들 수 있다는 것을 배웠습니다.
이처럼 엘리스는 고객에게 AX(AI 전환)를 제안하기에 앞서, 스스로의 영업 운영부터 AI로 다시 설계했습니다. AX 컨설팅이나 임직원 교육, 사내 업무 도구 도입을 고민하고 계신다면 편하게 문의해 주세요.
