수익 개선을 위한 실천 방안

  1. 취소 후원자 중 후원자 센터를 거치지 않는 24.5%의 후원자에 대한 관리가 필요

    • 취소방어가 이루어 지지 않는 인원에 대한 관리를 통해 후원자의 LTV를 증가 기대
      (EX: 100명 취소 중 26명에 대해 취소방어율 30% 적용시 7~8 명 은 유지 가능 )

  2. 취소 인바운드가 몰리는 시간대에 대기 인원 최소화

    • 취소요청이 가장 많은 들어온 시간은 14시 30분경.
      해당 시간에 대기 인원 최소화로 물리적으로 인입을 차단 목적

  3. 비숙련 사용자의 취소전화 응대 교육 실시

    • 숙련과 비숙련 사용자 간에 9%의 방어율 차이를 확인
      숙련 사용자의 응대 전화 중 BEST를 교육자료로 준비하여 두 그룹 사이의 차이를 줄이는 것이 목표



취소 데이터 불러오기

## Rows: 147
## Columns: 12
## $ sourcecode              <chr> "LLF", "LLF", "FIN", "FIN", "ODP", "ODP", "ODP…
## $ canceldate              <dttm> 2023-12-04, 2023-12-29, 2023-12-28, 2023-12-2…
## $ cancelcode              <chr> "C7", "C1", "C1", "C1", "C24", "C7", "C24", "C…
## $ cancelreasondescription <chr> "Financial constraints", "Not using credit car…
## $ serialno                <chr> "DR002291", "DR002383", "FF005626", "FF006553"…
## $ bank                    <chr> "KFTC", "KFTC", "KFTC", "KFTC", "KFTC", "KFTC"…
## $ frequency               <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "…
## $ donationamount          <dbl> 10000, 20000, 10000, 10000, 15000, 15000, 1500…
## $ dob                     <dttm> 1988-02-27, 1961-11-14, 2003-12-26, 1941-02-1…
## $ gender                  <chr> "Female", "Male", "Male", "Female", "Female", …
## $ firstdeduction          <dttm> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ totalcollected          <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2…

불러온 취소 후원자 데이터로 취소 코드별 비중을 나타내고 2% 이상의 데이터만 표와 시각화로 구현

취소 코드 별 요약 테이블
cancelcode cancelreasondescription count perc
C7 Financial constraints 43 29.25
C1 Not using credit card / Auto debit account anymore 39 26.53
C24 Donor refuse to provide reason 30 20.41
C5 Stop at 12 months / signed up for 1 year only 11 7.48
C22 Unemployed 8 5.44
C3 Donation to other charity 5 3.40
C13 Signed up for a few months only 4 2.72



취소코드 중 약 76%를 상위 3개의 코드가 차지 하고 있으며 그중 “C1”코드는 후원자 관리 센터를 거치지 않고 취소가 이루어지고 있어 해당 코드에 대한 관리가 필요해 보이며

전체 후원자로 확대한다면 취소 후원자 100명 중 26명에 대하여 평균 취소 방어율 30% 적용시 7~8명에 대한 후원자 이탈을 막을 수 있다.
또한, 해당 코드 자체는 계좌를 사용하지 않는 코드이므로 취소를 위해 연락하는 후원자보다 더 높은 취소방어율을 기대 해 볼수 있을것이다.

후원자 관리센터 데이터 불러오기

## Rows: 2,019
## Columns: 5
## $ serialno     <chr> "DR002378", "FF001712", "DR001102", "FF002298", "FF005250…
## $ user         <chr> "yonggi.yeom@sgsupport.com", "sangok.oh@sgsupport.com", "…
## $ `task group` <chr> "Inbound", "Inbound", "Inbound", "Upgrade 12M", "Inbound"…
## $ date         <date> 2024-01-08, 2024-01-08, 2024-01-02, 2024-01-02, 2023-12-…
## $ time         <Period> 14H 8M 18S, 12H 49M 34S, 9H 54M 27S, 9H 45M 47S, 17H 1…


전화 인입 그룹별 요약 테이블
task group n perc
Inbound 628 31.10
Upgrade 12M 361 17.88
긴급 구호 TM 241 11.94
WebAccess 217 10.75
2M DNH 136 6.74
Reactivation 12M Cancelled 107 5.30
Fix NDNH 88 4.36
OUTBOUND 83 4.11


후원자 관리 센터로 들어오는 전화 중 30% 이상이 인바운드이며 앞선 c1 코드의 테스크 명인 “WebAccess”도 10% 정도로 확인 할수 있다

관리센터 데이터와 취소 데이터 병합

can_call <- can_sel %>% left_join(call_sel, by = "serialno")
## Rows: 147
## Columns: 16
## $ sourcecode              <chr> "LLF", "LLF", "FIN", "FIN", "ODP", "ODP", "ODP…
## $ canceldate              <dttm> 2023-12-04, 2023-12-29, 2023-12-28, 2023-12-2…
## $ cancelcode              <chr> "C7", "C1", "C1", "C1", "C24", "C7", "C24", "C…
## $ cancelreasondescription <chr> "Financial constraints", "Not using credit car…
## $ serialno                <chr> "DR002291", "DR002383", "FF005626", "FF006553"…
## $ bank                    <chr> "KFTC", "KFTC", "KFTC", "KFTC", "KFTC", "KFTC"…
## $ frequency               <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "…
## $ donationamount          <dbl> 10000, 20000, 10000, 10000, 15000, 15000, 1500…
## $ dob                     <dttm> 1988-02-27, 1961-11-14, 2003-12-26, 1941-02-1…
## $ gender                  <chr> "Female", "Male", "Male", "Female", "Female", …
## $ firstdeduction          <dttm> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ totalcollected          <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2…
## $ user                    <chr> "jaeim.jung@sgsupport.com", "yonggi.yeom@sgsup…
## $ `task group`            <chr> "Inbound", "WebAccess", "WebAccess", "WebAcces…
## $ date                    <date> 2023-12-04, 2023-12-29, 2023-12-28, 2023-12-2…
## $ time                    <Period> 11H 54M 6S, 13H 34M 2S, 15H 19M 29S, 12H 50…


취소 후원자의 취소 인입 경로와 시간대 확인
task.group count perc avg_h avg_m
Inbound 59 40.14 12.0 29.0
WebAccess 36 24.49 13.5 25.5
OUTBOUND 11 7.48 16.0 34.0
Upgrade 12M 9 6.12 11.0 27.0

구성된 데이터 마트로 확인한 결과 전체 취소경로의 40% 이상이 인바운드로 들어오고 있음을 확인할 수 있다.

단순취소 코드의 평균 인입시간 확인
cancelreasondescription mean_amount avg_h avg_m
Donor refuse to provide reason 17500.00 15 29
Financial constraints 13906.98 13 26

단순 취소 코드의 평균 인입 시간대는 13~ 15시 30분경으로 해당 시간대에 인바운드 투입인원을 취소화하여
인입량을 줄이는 방법도 실험이 필요해 보인다

인입 테스크 전화 종료 사유 확인

## Rows: 2,377
## Columns: 9
## $ serialno           <chr> "CI000009", "IM000214", "SR000000000000000098", "SR…
## $ `source code`      <chr> "CONV", "ETC", "ETC", "ETC", "ETC", "ETC", "ETC", "…
## $ user               <chr> "jihye.kim@sgsupport.com", "sangok.oh@sgsupport.com…
## $ `task group`       <chr> "2M DNH", "Inbound", "OUTBOUND", "5, 6주년 리워드 …
## $ `task closed date` <dttm> 2023-07-11 14:26:18, 2023-12-22 12:03:33, 2023-07-…
## $ `task type`        <chr> "Fix", "Inbound", "Inbound", "General", "General", …
## $ outcome            <chr> "Successful", "Upgraded", "Maintained", "Successful…
## $ `pledge status`    <chr> "Unrealised", "Active", "Active", "Active", "Active…
## $ `donation amount`  <dbl> 10000, 30000, 20000, 10000, 30000, 30000, 50000, 30…

chr 특성이 컬럼이 다수라서 숫자 컬럼과 데이터 분포 형태로 데이터 확인


분포 확인

사용자 마다 전화 수신량의 차이가 있고 인바운드의 기록이 전체 기록 중 대부분을 차지 하고 있음을 알 수 있다.

전화 종료 결과값 확인
outcome n per
Cancelled 407 52.99%
Maintained 292 38.02%
Downgraded 46 5.99%
Upgraded 14 1.82%
Reactivated 9 1.17%


큰 비중을 차지 하고 있는 인바운드 기록에서 취소 만큼이나 취소 방어율도 비슷하게 나오고 있는 부분도 눈여겨 볼 부분이다.


가설설정 및 검증

사용자 별로 전화 수신량의 차이가 존재하는데
취소와 취소방어 비율이 비슷하게 나타나는 것은 사용자와 관계 없이 취소가 발생하는지 확인이 필요해 보인다

즉 사용자별 취소 방어율 차이가 통계족으로 유의한 수준인지 확인 해본다
##### 전처리 1. 사용자를 숙련과 비숙련 사용자 그룹으로 분리

2. 취소에 가장 큰 영향을 주는 인바운드 기록만 추출

3. 전화 결과 값을 취소와 방어로 수정하여 이진변수 생성

가설

H0 : 두 그룹의 차이는 없다.
H1 : 두 그룹의 차이는 존재 한다.


데이터 확인
Data summary
Name call_in
Number of rows 714
Number of columns 10
_______________________
Column type frequency:
character 2
factor 6
numeric 1
POSIXct 1
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
serialno 0 1 4 20 0 622 0
expert 0 1 3 4 0 2 0

Variable type: factor

skim_variable n_missing complete_rate ordered n_unique top_counts
source code 0 1 FALSE 7 FIN: 277, LLF: 264, ODP: 132, SG: 16
task group 0 1 FALSE 1 Inb: 714
task type 0 1 FALSE 1 Inb: 714
outcome 0 1 FALSE 2 can: 363, def: 351
pledge status 0 1 FALSE 6 Can: 422, Act: 246, Unr: 25, Hol: 11
user 0 1 FALSE 9 won: 203, myu: 166, jae: 163, san: 46

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
donation amount 0 1 39589.63 290536 4000 10000 15000 20000 5e+06 ▇▁▁▁▁

Variable type: POSIXct

skim_variable n_missing complete_rate min max median n_unique
task closed date 0 1 2023-07-03 14:31:24 2024-01-08 12:49:34 2023-10-18 15:12:01 714


expert 컬럼으로 숙련과 비숙련 사용자로 구분되었고 결과 값을 나타내는 outcome 컬럼도 n_unique 값이 2로 이진값으로 분류 되었다.

두 그룹 차이 확인
##       outcome
## expert cancelled  defense
##   exp   47.39229 52.60771
##   nobi  56.41026 43.58974


인바운드 처리결과를 숙련과 비숙련으로 나눈 결과로
숙련사용자의 취소방어가 비숙련사용자에 비해 9% 정도 높은 것으로 확인 되었다

두 그룹간의 차이가 통계적으로 유의한 차이인지 확인하는 카이제곱검정으로 진행한다.

call_table %>%   chisq.test() %>%   broom::tidy()
## # A tibble: 1 × 4
##   statistic p.value parameter method                                            
##       <dbl>   <dbl>     <int> <chr>                                             
## 1      5.13  0.0235         1 Pearson's Chi-squared test with Yates' continuity…

결론

P값이 0.02로 유의수준 0.05보다 낮기 때문에 귀무가설(HO)을 기각하고 대립가설(H1)을 채택 할수 있다

즉 숙련사용자들의 취소방어가 높기 때문에 숙련 사용자들의 취소 방어 전화녹취 중 일부를 선정하여

비숙련 사용자에게 공유 및 학습하는 방식으로 취소 방어률을 높일수 있을 것이라 예상한다.