블럭스(Blux)는 ‘CRM(Customer Relationship Management)’ 마케팅 시장의 패러다임을 개선하기 위한 솔루션을 준비하고 있습니다. 이를 위한 과정을 ‘범용 인공지능 모델 제작기’와 ‘Blux Message 탄생기’ 시리즈에서 소개했었는데요. 이번 글에서는 제품을 개발하는 개발자 입장에서 기획자와 함께 ‘솔루션 개발 중에 어떻게 문제를 파악하고, 이를 해결했는지’에 대한 과정을 설명해 보겠습니다.
👉 기획자 입장에서 본 ‘고객 세분화가 필요 없는 이유’ 바로가기
‘사용자 세분화’ 기능은 이대로 충분한가?
블럭스의 초기 제품 개발 목표 중 하나는 마케터가 수동으로 설정해야 하는 복잡한 조건(n일 이내 구매 고객, 특정 브랜드 상품 Y회 이상 클릭한 고객 등)을 자동화하여 실무자들의 수고를 덜어주는 것이었습니다. 이를 위해 ‘규칙 기준 세분화(Rule-Based-Segmentation)’를 ‘머신러닝(Machine Learning)’으로 훨씬 더 정교하고 쉽게 고객 그룹을 추출하는 기능을 개발했습니다. 이 과정에서 활성도를 기반으로 고객 그룹을 추출하는 기반(고객 활성도 기반)과 특정 상품들을 선호할 것 같은 고객 그룹을 추출하는 기능(상품 선호도 기반)도 개발했습니다.
이후 글로벌 마케팅 솔루션 ‘브레이즈(Braze)’의 API 기능을 활용해 클라이언트들과 협업해 서드파티로 이 기능을 제공했고, 세분화를 통해 추출되어 타겟화한 30~50%의 고객이 전체 메시지 오픈 및 전환한 80~100% 고객보다 더 좋은 성과를 보여주는 걸 확인할 수 있었습니다. 또한 세분화 기능을 통해 아래와 같이 하루에 여러 기획전을 더 많이 집행할 수 있게 되었습니다.
그렇지만 상품 선호도를 기반으로 세분화 기능을 개발하는 과정에서 저는 이 기능이 머신러닝을 충분히 활용하지 못하고 있다고 판단했습니다.
기존 블럭스 추천 모델을 응용한 이 기능은 고객이 특정 상품을 선호하는지 여부를 이진 분류로 결정합니다. 반면 상품 선호도 세분화 기능은 고객이 특정 상품을 선호하는지 여부를 판단하는 기능으로 블럭스에서 개발한 추천모델을 응용합니다. 하지만 블럭스의 추천모델은 고객이 좋아하는 상품을 순위를 매기는 랭킹 알고리즘이지 특정 상품을 좋아할지 싫어할지 판단하는 알고리즘이 아닙니다.
즉, 추천 모델 관점에서 절대적인 확률값을 기준으로 이진 분류를 해야 하는 상품 선호 세분화는 완전히 적합한 기능이 아니었습니다. 이를 개선하기 위해 목적 함수를 수정하는 등 많은 기술 작업을 진행했지만, 추천 모델의 본래 기능을 충분히 활용하지 못했다고 판단됐습니다. 추가적으로 일부 고객들은 과도한 메시지를 받거나 아예 메시지에서 소외되는 등 모델이 기능을 제대로 통제하지 못하는 상황도 발생했습니다.
실제 클라이언트와 소통하며 함께 기능을 고민하던 기획자 역시 저에게 ‘머신러닝을 활용한 세분화 기능은 성과의 한계가 뚜렷하다’고 문제점을 지적했습니다. 세분화 기능을 활용할 경우, 성과가 전수에게 보내는 것보다 더 좋아질 수 없기 때문에 전환율과 오픈율이 높아져도 전환수와 오픈수가 줄어들면 클라이언트가 이 기능을 신뢰하지 못하기 때문입니다.
또한 세분화 기능을 통해 집행할 수 있는 기획전의 수가 늘어나면서 이들을 세팅하고, 관리하기 위한 실무자의 업무도 함께 증대되어 처음 목적과 상충하는 결과가 나왔다는 사실도 공유해 주었습니다.
기획자와 개발자 모두가 서로 다른 관점에서 현재의 ‘세분화 기능’이 명확한 한계를 가지고 있는 것을 느꼈습니다. 이는 마케터들이 세분화를 통해 원하는 것이 무엇인지 문제 정의를 다시 하고, 머신러닝이 가장 잘 동작할 수 있는 기능을 고민하는 계기가 되었습니다.
‘사용자 분배’는 어떠세요?
저희는 큰 틀에서 다음과 같이 문제를 다시 정의했습니다.
“기업들의 CRM 마케팅 캠페인은 고객의 전환 건수를 극대화하지 못하고 있다.”
그리고 이를 바탕으로 개발자의 관점에서 문제를 구조화하여 해결해 줄 수 있는 새로운 기능들을 고민했습니다.
(1) 고객의 참여도를 극대화하여 매출을 올릴 수 있는 새로운 방식이 필요하다.
(2) 여러 기획전을 효율적으로 집행하고 관리할 수 있어야 한다.
(3) 추천 모델의 동작과 유사한 방식으로 기능이 동작하여야 한다.
그 결과, '사용자 분배(User Distribution)' 기능이 탄생했습니다!
사용자 분배는 전체 고객을 대상으로 여러 내용 중 더 선호할 것 같은 기획전에 관한 메시지를 보내는 기능입니다. 즉, 세분화가 특정 기획전에 반응할만한 ‘타겟 고객 그룹’을 추출하는 기능이었다면, 분배는 이름 그대로 해당하는 여러 기획전에 고객들을 분배해 주는 기능입니다. 이상적인 진행 과정을 그림으로 표현하면 다음과 같습니다.
‘사용자 분배’ 기능을 통해 마케터는 집행할 수 있는 기획자의 수를 증가하면서 고객 피로도를 관리할 수 있습니다. 또 고객별로 선호하는 콘텐츠에 더 집중할 수 있도록 ‘고객 경험’을 개인화할 수 있습니다. 이와 함께 각 기획전 사이의 상대적인 선호도를 파악해 분배하기 때문에 기존 추천 모델의 결과를 온전히 활용할 수 있는 것도 장점이었습니다.
협업의 힘으로 더 나은 솔루션 개발하기
CRM 마케팅 솔루션 개발을 진행하며, 기획자와 개발자가 ‘각기 다른 관점에서 문제에 대해 깊이 있게 고민하는 과정’이 서로의 생각을 나누고 이해하는 데 큰 가치가 있음을 느꼈습니다. 특히 이러한 소통이 더 좋은 기능을 갖춘 제품을 개발하는데 필수 요소임을 다시 한번 깨달았습니다. 이번 ‘사용자 분배(User Distribution)’는 앞으로 추가될 유용하고 다양한 기능 중 하나에 불과합니다. 앞으로도 기술을 활용해 더 좋은 기능으로 마케터들의 고민을 해결할 수 있도록 노력하겠습니다.
글쓴이 김회인(Simon) Machine Learning Engineer 새로운 미션에 거침 없이 도전하고, 폭풍처럼 성장하는 미래가 목표인 블럭스의 ML 엔지니어로, AI 시대로 급변하는 마케팅 시장의 문제를 구성원들과 함께 고민하고 해결하며 나아가고 있습니다. |