카카오페이 크루들의 회의를 책임지는 죠르디 봇을 소개합니다.

카카오페이 크루들의 회의를 책임지는 죠르디 봇을 소개합니다.

시작하며

안녕하세요. 오프라인결제서비스파티 백엔드 개발자 해피입니다. 카카오톡에는 국민비서 죠르디가 있다면 카카오페이에는 크루들을 위한 비서가 있는데요. 바로 죠르디 회의봇 입니다. 카카오페이 크루들은 회의봇을 통해 회의 알림을 받고, 회의실을 찾고, 회의록을 공유합니다. 크루들이 생산적인 회의 문화를 가지도록 여러가지 제안을 해주기도 합니다.

죠르디는 사내 슬랙봇 콘테스트에 참여하며 오프라인결제유닛의 개발자 5명이 만들어 낸 슬랙봇입니다. 사내에서 사이드 프로젝트를 할 기회가 간혹 있을텐데요. 저희가 슬랙봇을 만들기 위해 고민한 내용과 유저들을 확보하기 위해 펼쳤던 전략을 재미있게 설명 드리겠습니다.

먼저 죠르디 회의봇이 어떤 기능들을 가지고 있는지 말씀드리겠습니다. 정말 궁금하지 않나요?

회의봇은 지각한 크루를 대신 호출합니다

지각자를 호출하는 죠르기 기능입니다. 회의는 시작되었는데 참석자들이 시간 내에 도착하지 않은 경우 정말 많으시죠? 그럴 때마다 참석자들에게 양해를 구하고 기다려도 지각자가 언제 올지 몰라서 답답하죠. 회의에 오고 있는 건지, 회의 소식을 알고는 있는 건지 궁금해서, 늦은 사람들 각각에게 DM을 보내본 경험이 있으실거에요. 이름을 검색하고, 대화를 시작해서 “안녕하세요.. 회의 오고계신가요..?” 조심스럽게 메시지를 보냅니다. 이러한 불편함을 위해 좀더 편하게 소통할 수 있는 기능을 개발했습니다.

회의 시작 알림 죠르기
회의 시작 알림 죠르기

회의가 시작하게 되면, 회의봇에서 참석자들을 쭈욱 리스팅해주는데요. 여기에서 지각한 사람의 이름을 누르기만 하면 ‘죠르기’ 메시지가 전송됩니다. 회의봇 죠르디가 대신 회의에 오라고 메시지를 전송합니다. 사자처럼 울부짖는 귀여운 죠르디 gif가 기다리는 사람들의 마음을 대변합니다. 이때, 부담없이 사용할 수 있도록 회의에서 호출했다는 표현을 사용하고, 호출한 주체를 보여주지 않습니다.

기존에는 회의 지각자가 발생하면 4단계나 되는 번거로운 과정을 거쳐야만 했습니다.

  1. 지각자 이름을 본다
  2. 리스트에서 검색한다
  3. 대화를 시작한다
  4. 회의에 참석하라는 메시지를 보낸다

죠르디 회의봇에서는 복잡한 과정을 지각자 이름을 누른다는 1단계로 줄였습니다. 4단계나 되는 과정에서 무려 3단계나 줄인 셈입니다. 다들 회의하느라 바쁜데 이런 것까지 신경쓸 수는 없잖아요.

지각자에게도 사정이 있을 수 있습니다. 앞선 회의가 길어졌을 수도 있고, 업무에 몰입하다가 회의 시작을 놓쳤을 수도 있습니다. 이때 참석자들도 리액션을 할 수 있도록 했는데요. “가고 있어요”, “먼저 하세요”, “불참이에요” 라는 3가지 옵션으로 회의에 메시지를 전달할 수 있도록 했습니다.

지각자들의 죠르기 리액션
지각자들의 죠르기 리액션

불참인 경우에는 특별한 기능을 하나 넣었는데요. 원래 불참이면 미리 참석여부에 불참이라고 반영했어야 하는 거잖아요. 불참이라는 리액션을 한 참석자에게는 아래와 같이 죠르디가 따끔한 조언을 해주기도 합니다.

불참 리액션에 죠르기의 제안
불참 리액션에 죠르기의 제안

특히 이 기능은 채용팀에서 굉장히 좋아하셨는데요. 채용팀에서는 많은 면접관들과 일정을 조율하는데, 이전에는 시작 전 면접관들에게 일일히 연락해 DM을 보냈어야 했습니다. 이제는 죠르기로 쉽게 호출할 수 있어서 편리하다는 피드백을 받았습니다.

모두가 회의 문화를 지키도록 가이드 합니다

회의 문화를 지키도록 조언하는 죠르디의 제안 기능입니다. 초기에는 카카오페이의 회의 그라운드 룰 자체를 보여주도록 만들었는데요. 주변 크루들의 피드백을 통해 텍스트를 읽지 않게 되고, 오히려 피로도를 올린다는 피드백을 받았습니다. 따라서 이를 최대한 서비스에 녹이는 것에 집중하기로 했습니다.

죠르디의 제안은 회의 문화 관점에서 주최자와 참석자가 올바른 매너를 지킬 수 있도록 가이드합니다. 회의 참석자인데 회의 주최자가 덜렁 회의만 초대한 경우, 어떤 내용인지 모르고 참석하기 때문에 회의도 비효율적으로 진행되고, 참석자도 초대받았을 때 갸우뚱할 때가 많죠. 주최자 입장에서는 회의에 참석하는 사람이 참석인지 불참인지 누르지 않으면, 참석자들이 동의한건지 아닌지 알 수 없어서 답답하구요.

죠르디의 제안에서는 이 문제를 해결하기 위해, 회의 상세 설명이 없거나 회의 참석여부를 선택하지 않은 경우에는 이를 짚어줍니다. 이러한 기능들을 통해 지각하지 않고, 회의 전 미리 참석여부를 밝히고, 회의 내용을 상세하게 기획해서 초대하도록 회의 문화를 개선했습니다.

죠르디의 제안
죠르디의 제안

죠르디 회의봇은 일정을 친절하게 알려줘요

카카오페이 크루들은 구글 캘린더를 사용하는데요. 회의봇은 구글 캘린더에 저장된 회의 정보를 불러와 가공하여 알림을 전해줍니다. 슬랙에도 구글 캘린더 봇이 있지만 분명 기능적인 면에서 아쉬웠습니다. 기본적인 기능만 있고, 영어로 서비스 되기에 가독성이 떨어집니다.

저희는 이걸 카카오페이에 맞게, 우리의 회의 문화를 녹여 만들어보고 싶었습니다. 아침에 전체 일정을 브리핑하고, 회의 시작 전에 알림을 줍니다. 당일 회의 건수에 따라 다른 gif 이미지를 보여주어 한눈에 브리핑을 받아볼수 있도록 했어요.

상황별 데일리 회의 요약
상황별 데일리 회의 요약

회의 알림에서는 회의 정보와 함께 회의실 위치도 맵 이미지로 제공하도록 했습니다. 자주 가는 회의실은 회의실 번호만 봐도 알지만, 가끔 생소한 회의실에 초대받을 때는 지도가 유용하게 사용되더라구요.

회의 알림
회의 알림

죠르디 회의봇이 80% 유저를 확보한 과정

죠르디 회의봇은 카카오페이 크루의 80%까지 유저를 확보했는데요. 사내 크루들을 대상으로 한 서비스이긴 하지만, 실제 서비스처럼 유저를 확보하고 확장하는 과정에 심혈을 기울였습니다.

내부 유저들도 유저들이기에 정말 업무하는데 필요하고, 생산적이어야 이용합니다. 초반에는 새로운 유저들을 획득하는 것보다, 순차적인 오픈을 통해 기능을 보완하는데 집중했습니다. 유저를 처음 획득하는 것보다 떠난 유저를 다시 돌아오게 하는 건 훨씬 어려운 일이니까요.

죠르디 회의봇 가입자 수 변화
죠르디 회의봇 가입자 수 변화

아래의 과정을 거쳐 소프트 런칭을 했습니다.

  1. 팀 및 일부 유저 대상 알파 테스트
  2. 결제 클랜 대상 베타 테스트
  3. 사내 워크 스페이스 정식 릴리즈
  4. 캔미팅 발표를 통한 전사 바이럴

초기에는 알파 테스트를 통해, 팀원들에게만 봇을 공개했습니다. 앱을 설치하고 사용하며 기본적인 기능이 정상적으로 동작하는지, 혹시나 처리하지 못하는 캘린더 유형이 있는지 등을 확인했습니다.

다음으로 많은 유저들의 트래픽을 소화할 수 있는지 확인하기 위해 팀이 속한 결제클랜의 유저들을 대상으로 회의봇을 홍보했습니다. 슬랙과 통하는 웹 소켓의 커넥션은 정상적인지, 배치가 돌 때 여러 명에게 동시간에 일정 알림이 동작하는지 등 스케일 아웃 관점에서 애플리케이션 동작을 확인했습니다.

이후에는 슬랙봇 콘테스트 모집이 마감되며 정식 릴리즈를 했습니다. 이때 전사 공지가 올라가며 자연스럽게 가입자가 늘었고, 슬랙봇에 관심이 많은 분들이 앱을 설치해서 사용해주셨습니다. 이때 전사의 25%의 유저들이 죠르디 회의봇을 사용했어요.

마지막으로 캔미팅에서 천 명이 넘는 전사 크루를 대상으로 죠르디 회의봇을 발표하면서 800명 가입을 달성하게 됩니다. 캔미팅 전과 비교했을 때 유저 수가 무려 220%나 증가했습니다. 좋은 서비스를 개발하는 것과 더불어 공개적인 홍보 자리를 적극적으로 활용하는 게 중요하다는 걸 절실히 깨달았습니다.

미가입자 죠르기 기능으로 유저 3배 도달

이전에는 가입한 유저들 대상으로만 죠르기 기능이 동작하다가, 슬랙 봇의 권한을 워크 스페이스 유저로 확장한 후에 미가입자에게도 보낼 수 있도록 변경되었습니다. 기능을 수정한 후 갑자기 가입자가 서서히 증가하는 양상을 보였습니다. 별도의 홍보나 노출이 없었는데 말이죠.

죠르디를 설치한 이유
죠르디를 설치한 이유

이때 가입한 크루에게 확인해보니, 미가입자 죠르기 메시지를 통해 자연스럽게 가입하게 된 것이었습니다. 미가입자 죠르기 메시지를 통한 유입과 지속적인 홍보로 유저가 250명까지 상승했습니다.

전사 초대장 발송으로 자연스러운 가입 유도

캔미팅이라는 자리에서 콘테스트에서 수상한 슬랙봇의 기능을 소개하는 기회가 있었는데요. 많은 크루들에게 한번에 회의봇의 존재를 알릴 수 있는 기회였습니다. 발표 시작 직전 타이밍에 맞춰 밥의 아이디어로 추가한 초대장 배치 트리거해, 전체 크루들이 아래와 같은 초대장 메시지를 받을 수 있도록 했습니다. 회의봇 발표 시작과 동시에 초대장부터, 연동하는 과정부터 따라할 수 있도록 했습니다.

캔미팅에서 회의봇 발표
캔미팅에서 회의봇 발표

아직 가입하지 않는 크루들이 아래와 같은 메시지를 받았습니다 💌

죠르디 회의봇 초대 메시지
죠르디 회의봇 초대 메시지

덕분에 자연스럽게 기능을 소개하며 가입률 80% 를 달성하게 됩니다!

지속적인 Referral 확보를 위한 죠르디 초대 기능

이후에도 지속적으로 신규 유저를 확보하기 위해 죠르디 초대 기능을 추가했는데요. 회의록을 공유하는 메시지에 같이 참석했던 사람 중 미가입자를 버튼을 눌러 초대하는 기능을 만들었습니다. 따라서 자연스럽게 회의할 때마다 기존 유저가 신규 유저를 초대할 수 있도록 했습니다.

죠르디 초대 Referral
죠르디 초대 Referral

Figma로 디자인 해보기

이번 프로젝트에서 새롭게 시도해본 것이 바로 Figma를 활용해 디자인을 해본 것인데요. 슬랙봇의 홈 화면, 설정 모달, 기능별로 전송되는 메시지, 배너, 회의실 이미지 등을 Figma로 디자인했습니다. 개발자들끼리 하는 프로젝트일지라도 명확하게 Figma로 기획을 시각화 한 후 개발을 하니 혼선도 적고, 명확하게 진행할 수 있었어요.

피그마로 작업물
피그마로 작업물

알파와 베타 테스트에서 회의봇을 사용해볼 유저들을 모집할 때 사용했던 이미지들도 모두 Figma를 이용해서 만들었습니다. 개발자의 거친 손길일지라도 Figma를 이용하면 깔끔하게 디자인 작업을 할 수 있습니다.

죠르디 알파테스트 리뷰
죠르디 알파테스트 리뷰

PM의 입장을 경험해봤던 VOC 처리

이 회의봇 프로젝트를 하며 또 신경썼던 부분은 VOC에 적극적으로 대응하는 것이었습니다. 함께 일하는 크루들의 생산성을 올리기 위함인 만큼 그들의 불편함과 새로운 요구사항을 적극적으로 반영하려고 노력했습니다. 버그 리포팅 채널을 통해 들어오기도 하고, DM으로 연락이 오기도 했습니다.

이때 처리했던 사례들을 보여드릴게요. 처음에 죠르디는 회의 요약 알림을 8시 55분에 주고 있었습니다. 그러나 자율근무제이다보니 크루마다 업무 시작시간이 다르고, 이른 업무를 하는 크루인 경우에는 메시지를 일찍 받아보고 싶다는 니즈가 있었는데요.

회의 알림 시간 VOC
회의 알림 시간 VOC

이에 오전 7시 55분, 오전 8시 55분, 오전 9시 55분으로 3가지 옵션을 제공하도록 반영했습니다. 마찬가지로 회의 시작 알림 시간에도 다양한 니즈가 있어서 개인 맞춤 설정을 할 수 있도록 고급 설정 페이지를 개선하기도 했습니다.

죠르디 고급 설정
죠르디 고급 설정

아래와 같이 UI에 대한 제안들도 받아 꾸준히 개선하고 있습니다.

UI 개선 VOC
UI 개선 VOC

이외에도 크루들의 다양한 VOC를 받아, 회의실마다 입구에 설치된 디스플레이에 입실하기 버튼을 누르는 것을 회의봇으로 처리할 수 있는 지 검토하기도 하고, 방해금지와 부재중을 필터링 등을 적용했습니다.

사실 처음에는 VOC를 직접 받아서 처리하는 것이 어려웠습니다. 일부 의견의 경우에는 현재 슬랙의 메시지 빌더에서 사용할 수 없는 방법이기도 했구요. 평소에는 개발자로서 PM을 통해 VOC가 정제된 기능 명세서를 받다가 직접 여러 가지 의견을 받아보니 PM의 노고를 이해할 수 있었습니다.

특히 저희 팀 PM들께서 그동안 개발자들이 가볍게 던졌던 의견에 지쳤다가, 좋은 의미로의 앙갚음을 위해 다양한 의견을 주셨습니다. 의견을 내기만 했던 개발자였다가 의견을 받는 사람이 되어보는 경험이었습니다.

우당탕탕 죠르디 회의봇 개발자들의 협업

개발자들이 회사에서 사이드 프로젝트를 어떻게 진행했는지 궁금하실 거예요. 저희는 주1회 미팅을 통해 구글 시트에 해야할 태스크들을 쭈욱 정리해놓고, 다음주 미팅까지 각자 하고 싶은 일을 자발적으로 할당해서 완료했습니다. 본래 서비스 개발이 바쁠 때는 다른 사람이 그 태스크를 대신 해주기도 하고, 여유를 두어 다음 기한까지 하는 등 상황에 따라 유동적으로 진행했습니다. 프로젝트가 끝나고 회고를 해보니 아래와 같은 지표들이 나왔습니다.

죠르디 프로젝트 회고
죠르디 프로젝트 회고

더불어 프로젝트 과정에서 잘한 점, 어려웠던 점, 향후 개선점을 논의하고 서로에 대한 칭찬 카드를 작성하며 프로젝트를 돌아봤습니다. 본업과 사이드 프로젝트를 병행하며 누군가는 짬이 날 때 사이드 프로젝트를 작업했다면, 그 시간동안 다른 사람은 서비스라는 본업을 지탱해주었습니다. 서로의 신뢰와 배려로 성공적으로 프로젝트를 진행할 수 있었습니다. 라디, 사마, 밥, 루이 정말 고생 많으셨습니다!

마치며

회의봇을 통해 카카오페이 크루들은 회의 활동 자체에 집중할 수 있게 되었습니다. 회의 전에 아젠다를 공유하고, 미리 참석여부를 응답해야 하고, 회의에 늦지 않게 참석해야 한다는 회의 문화에 대한 인식이 회의봇의 지각자 호출, 죠르디의 제안 기능을 통해 실천으로 이어졌습니다. 우리에 맞게, 회의 문화 개선에 포인트를 두었기에 “구글봇보다 훨씬 좋다”라는 피드백을 듣기도 했습니다.

이번 프로젝트에서 개발자이며 PM 역할을 해보았는데요. 서비스의 디테일을 기획해보고 전략을 세우고, 피드백을 받고, 크루들한테 발표로 소개해보는 것까지 경험해볼 수 있어서 정말 재밌었습니다. 메이커 관점에서만 일을 하다가 서비스 관점까지 경험해볼 수 있는 기회였습니다.

우리 프로젝트 멤버들도 회의봇 프로젝트를 하며 서비스 전반을 돌아보고 더 배울 수 있었습니다. 사이드 프로젝트이지만 내 옆에 앉은 동료가 유저가 되고, 그 유저가 생생한 의견을 전해주니 바쁜 와중에도 더 몰입할 수 있었습니다.

2편에서는 슬랙봇과 구글 캘린더를 연동하는 방법, 3편에서는 회의봇에 적용된 이벤트 기반 아키텍처를 설명하겠습니다.

💚 죠르디 회의봇 시리즈 읽어보기

  1. 카카오페이 크루들의 회의를 책임지는 죠르디 봇을 소개합니다
  2. 5분 만에 배우는 일정 관리 슬랙봇 만드는 방법
  3. 이벤트 드리븐 적재적소에 사용하기
happy.together
happy.together

카카오페이 오프라인결제서비스 백엔드 개발을 하고 있는 해피입니다. 개발만큼 자기 개발을 좋아합니다.

louie.river
louie.river

카카오페이 오프라인결제 서비스 백엔드 개발을 하고 있는 루이입니다. 건강한 몸에 좋은 코드가 깃든다고 생각합니다.

bob.park
bob.park

안녕하세요 카카오페이 오프라인 결제 서비스 파티의 밥입니다. 좋은 설계와 클린코드에 관심이 많습니다.

태그