Skip to content
codeit-team7Public

About

익명 SNS 질문 완주 안전 친구 네트워크 분석

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

78 Commits

Folders and files

Repository files navigation

Viral to Value

학교 네트워크 소셜 앱의 데이터 기반 제품 재건축

코드잇 데이터 분석 15기 7팀

학교 네트워크 기반 익명 소셜 서비스의 가입, 친구 연결, 질문 참여, 반응, 재방문을 분석하고, 그 결과를 Ping 리빌드 UI/UX 프로토타입으로 구체화한 프로젝트입니다.

빠르게 모인 사용자가 관계를 맺고, 받은 마음에 반응하며, 다시 방문하도록 하려면 무엇을 바꿔야 할까?

질문 완주율뿐 아니라 가입 이후의 이용 경험 전체를 분석합니다. 학교 활성화부터 후기 이용까지 일곱 가지 관점에서 문제를 진단하고, 첫 참여·질문 경험·반응과 대화·재방문의 네 구간을 재설계했습니다.

직접 체험하기

Ping 리빌드 데모 열기

  • 설치나 실제 회원가입 없이 브라우저에서 화면을 눌러볼 수 있습니다.
  • 눌러보기에서는 이용 흐름을 따라 이동하고, 전체 화면에서는 화면과 예외 상태를 모아볼 수 있습니다.
  • Ice Bloom, Midnight Club 두 테마와 비교 보기를 지원합니다.
  • 198개 화면·상태를 두 테마로 구성한 UI/UX 프로토타입입니다.

데모는 시연용 예시 데이터로 동작합니다. 실제 회원가입·문자 발송·결제·다른 사용자와의 통신은 발생하지 않습니다. 개인정보를 입력하지 마세요. 화면 구현을 확인하기 위한 결과물이며, 실제 서비스에 적용해 개선 효과를 검증한 제품은 아닙니다.

최종 산출물

자료 내용
발표 자료 PDF 프로젝트 배경, 분석 결과, 제품 재구축 및 검증 계획
통합 분석 노트북 실행 전 준비사항, 분석 코드와 저장된 결과
UI/UX 체험용 프로토타입 HTML 화면을 직접 눌러보는 인터랙티브 시연 파일
유저플로우 HTML 이용 흐름과 화면 간 연결, 내장 화면 미리보기
  • GitHub에서 미리보기가 열리지 않으면 파일 페이지의 Download raw file로 내려받아 확인할 수 있습니다.
  • HTML은 내려받은 파일을 브라우저에서 엽니다. 저장소의 파일 링크는 실행용 웹 주소가 아니므로, 바로 체험하려면 위의 공개 데모를 이용하세요.
  • 노트북은 Colab에 업로드한 뒤 맨 앞의 실행 전 준비사항에 따라 데이터와 경로를 준비합니다. 필요한 마트 23개와 라벨링 CSV 1개는 이 산출물 폴더에 포함하지 않았습니다.
  • 유저플로우의 흐름도와 내장 미리보기는 파일 하나로 확인할 수 있습니다. 다만 원본의 확정 UI/UX 열기·직접 열기·피그마 안내는 별도 문서를 가리키므로 이 묶음에서는 연결되지 않습니다. 화면 체험은 위의 프로토타입 파일 또는 공개 데모를 이용하세요.

1. 프로젝트 개요

항목 내용
프로젝트명 Viral to Value: 학교 네트워크 소셜 앱의 데이터 기반 제품 재건축
프로젝트 기간 2026.08.31 ~ 2026.10.02
최종 발표 2026.10.02
팀원 성우석, 신범철, 유수빈, 이지현, 장준영, 주예은
분석 대상 학교 기반 익명 소셜 서비스의 가입·친구 요청·질문·지목·열람·답장·신고·출석·결제 및 방문 행동
최종 산출물 데이터 마트와 분석 코드, 분석 보고서 및 발표 자료, 제품 재구축 설계, 인터랙티브 HTML 데모

서비스와 문제 정의

이 서비스는 질문에 어울리는 학교 친구를 선택하면 상대에게 익명의 지목인 Ping이 도착하고, 수신자가 결과를 확인하거나 답장하는 구조입니다. 기존에는 같은 학교의 가입자가 40명에 도달해야 질문 참여가 가능했으며, 힌트·답장·채팅 등에 하트를 사용했습니다.

일반 가입자 677,081명 중 93.86%가 2023년 5월에 가입했습니다. 그러나 큰 가입 규모가 이후의 관계 형성, 상호 반응, 반복 이용까지 이어졌는지는 별도로 확인해야 했습니다.

프로젝트는 다음 질문에서 출발했습니다.

  • 학교에 가입자가 모인 이후에도 참여가 이어졌는가?
  • 친구 관계가 형성된 뒤 질문과 반응이 오갔는가?
  • 질문의 공급과 안전 관리가 이용 경험을 뒷받침했는가?
  • 이용자는 어떤 이유로 다시 방문했고, 방문 이후 무엇을 했는가?

2. 분석 구성

발표는 유입과 교내 연결에 대한 사전 진단(Viral), 일곱 파트 분석과 종합 진단, 제품 재구축, 검증 계획의 순서로 구성했습니다.

사전 진단: 빠른 성장을 어떻게 해석할 것인가

가입 시점과 학교별 친구 요청을 비교하되, 외부 미가입자의 유입과 기존 가입자 사이의 연결을 구분했습니다.

  • Social Connection Rate: 학교 안에서 친구 요청이 최종 수락 관계로 이어진 정도를 살펴보는 지표입니다. 학교별 1인당 발송 수와 수락률을 결합해 비교하며, 외부 유입의 바이럴 계수로 해석하지 않습니다.
  • Time to Social Connection: 최종 수락 요청의 생성부터 마지막 갱신까지의 간격을 수락 소요시간의 대용치로 사용합니다. 실제 최초 수락 시각을 직접 측정한 값은 아닙니다.

일곱 파트 분석

파트 핵심 질문 주요 분석
Growth 가입한 학교는 실제로 활성화됐는가? 40명 도달·미도달, 도달 전후 가입 추이, 학교별 확산 유형
Network 가입은 친구 관계와 이후 행동으로 이어졌는가? 최종 수락 관계망, 고립·연결 집중도, 요청량·수락 상태·요청 지속
Content 사용자는 계속 새로운 질문을 만났는가? 문구별 공급 집중, 신규 문구, 의미 반복, 학교별 공통·고유 질문
Interaction 질문을 끝낸 뒤에도 행동이 이어졌는가? 시작·완료 전환, 완료 직후 첫 행동, 후속 행동과 재방문
Value 받은 반응은 다시 참여할 이유와 연결됐는가? 행동 군집, 지목의 발신·수신 구조, 답장·힌트·결제, 반응과 다음 날 투표
Trust 불편한 질문을 어떻게 구분하고 검토할 것인가? 질문 주제와 신고 사유, 질문당·노출 대비 신고, 게시 전 검토 모델
Continuation 초기 열기가 지난 뒤에도 핵심 이용이 이어졌는가? 가입 코호트의 후기 행동 관측, 출석 중심 이용, 활동 공백과 재방문

Viral은 전체 문제를 설정하는 사전 진단입니다. 본문의 일곱 분석 파트는 Growth부터 Continuation까지이며, 저장소의 분석 폴더 수와 발표의 일곱 파트는 구분합니다.

3. 주요 관측 결과

아래 수치는 분석 대상과 기준이 서로 다릅니다. 같은 모집단의 연속 퍼널이나 개선 전후 성과로 읽지 않습니다.

파트 주요 관측 해석 범위
Growth 관측된 5,551개 학교 중 1,654개 학교가 40명에 미도달 미도달 원인을 확정한 결과는 아님
Network 학교별 최대 연결요소 포함 비율의 중앙값 96.59% 현재 재적 40명 이상 학교의 최종 수락 관계망 스냅샷이며, 도달 당시 상태는 아님
Content 상위 10% 문구가 질문조각의 53.0% 차지. 누적 501개 이상 구간의 의미 반복률 34.42% 10개 학교 분석이며, 질문조각은 공급 기록으로 실제 열람과 구분
Interaction 질문 시작 방문의 완료 전환 73.8%, 완료 방문의 다음 질문 전환 2.1% Hackle 방문 로그의 서로 다른 분모를 사용한 지표
Value C0·C2에서 24시간 내 답장을 받은 날의 다음 날 투표율 84.0%, 받지 못한 날 55.3% 사용자-일 기준의 관측 연관이며, 답장의 인과효과는 아님
Trust 외모·신체 비하 유형에서 신고가 두드러짐. 게시 전 모델의 교차검증 ROC-AUC는 약 0.603 예측 대상은 안전 사유 신고 이력이며 실제 위해 여부를 확정하지 않음
Continuation 후기 관측자 중 83.91%가 출석만 기록 2023년 5월 가입 코호트 중 D181~270에 관측된 사용자 기준

종합하면, 초기 가입과 연결 규모뿐 아니라 첫 참여 이후 어떤 질문을 만나고, 반응을 주고받으며, 다음 방문으로 이어지는지를 함께 다룰 필요가 있었습니다.

4. 분석에서 제품 재구축으로

분석에서 확인한 문제를 네 가지 이용 구간에 연결했습니다. 아래 내용은 실제 운영에 적용하기 전의 설계 제안입니다.

01. 첫 참여

40명에 도달하지 못한 학교도 있었지만, 기존 이용 구조에서는 개방 전까지 초대하며 기다려야 했습니다. 학교 인원에 따라 참여 범위를 단계적으로 여는 흐름을 설계했습니다.

학교 인원 제안한 이용 범위
0~14명 서비스 소개와 친구 초대
15~24명 실제 질문 2개 참여, 학교·전체 범위 질문 제안
25~39명 학교 로컬 질문, 받은 Ping 결과 읽기 추가
40명 이상 일반 10문항과 반응·답장·역질문·채팅 등 전체 기능

15명과 25명은 분석으로 입증한 최적 기준이 아닌 운영 가설입니다. 친구 연결 조건은 학교 개방 기준과 별도로 확인하며, 적용 후 참여율과 안전 지표를 보고 기준을 조정해야 합니다.

02. 질문 경험

질문의 종류가 존재하는 것과 이용자가 새로운 질문을 만나는 것은 달랐습니다. 분석한 10개 학교에서 질문조각의 96.08%는 10개 학교에 공통으로 등장한 문구였고, 한 학교에서만 등장한 고유 문구는 1개였습니다. 신규 문구 공급과 의미 반복 문제도 함께 확인했습니다.

  • 학교 로컬 질문: 축제·행사 등 함께 겪는 학교생활을 일반 10문항에 반영합니다.
  • 사용자 질문 제안: 학교생활을 직접 경험하는 이용자가 학교·전체 범위의 질문 소재를 제안하는 경로를 둡니다. 신규 공급을 보완하기 위한 설계이며, 공급 증가 효과는 별도 검증이 필요합니다.
  • 검토와 노출 관리: 규칙·모델·담당자 검토를 연결하고, 게시 이후에도 의미 중복·개인별 재노출·신고를 살펴봅니다.
  • 건너뛰기 이유: 후보 부족, 반복, 불편함을 구분해 후보 구성과 질문 추천·검토에 반영하는 흐름을 제시합니다.

03. 반응과 대화

질문 완료 이후의 행동이 여러 화면으로 흩어졌고, 지목을 많이 받은 집단이 반드시 많이 답장하지는 않았습니다. 완료 이후 실제 반응을 확인하고 돌려줄 수 있는 경로를 설계했습니다.

  • 완료 화면에서 실제 도착한 결과·반응 확인으로 연결
  • 기본 이모지·스티커·50자 이내 짧은 답장의 무료화
  • 보낸 Ping의 전송·열람·반응 도착 상태 구분
  • 상대의 신원을 알아내지 않고 질문으로 답하는 역질문
  • 무료 반응 이후 원하는 이용자만 선택하는 채팅

채팅은 200하트 사용 후 첫 요청으로부터 72시간 동안 실제 답장이 없으면 개설 하트를 반환하는 조건을 제시했습니다. 비용과 기간은 시안의 가정이며, 실제 상품·운영 정책으로 확정한 값은 아닙니다.

04. 재방문

후기 방문이 출석에 치우친 관측을 바탕으로, 다시 들어온 순간의 상태와 다음 행동을 연결했습니다.

  • 새 Ping·새 질문·새 친구 등 현재 상태를 먼저 보여주는 홈
  • 실제 새 정보가 있을 때만 보내는 알림
  • 출석 보상 수령 후 받은 Ping이나 선택 미션으로 이어지는 경로
  • 받은 결과 모아보기, 대표 배지 선택, 이용자가 직접 정하는 공개 범위

클러스터를 반영한 설계

Value 분석에서는 10개 학교의 4,849명을 대상으로 GMM K=4 군집을 해석했습니다. 군집별 별도 서비스를 만드는 대신, 같은 제품 흐름 안에 서로 다른 이용 특성을 반영했습니다.

군집 관측한 행동 특성 연결한 개선 화면
C0 적극 발송·확인형 발송과 확인·반응 행동이 활발 보낸 Ping 상태, 실제 반응 확인, 역질문
C1 수신 우위 일반형 받은 지목에 비해 답장이 적음 무료 이모지·스티커·짧은 답장
C2 유료 이용형 유료 이용 경험이 상대적으로 많음 역질문, 선택 채팅, 비용·무응답 반환 조건
C3 고수신 저반응형 지목 수신은 많지만 반응은 적음 내 결과, 대표 배지, 선택 공개

군집은 행동을 해석하기 위한 분석 도구입니다. 특정 군집에만 기능을 허용하거나, 개인의 성격·의도를 단정하는 기준으로 사용하지 않습니다.

5. 기대효과와 검증 계획

현재까지의 결과는 데이터 분석과 프로토타입 구현입니다. 아래 지표는 개선 성과가 아니라, 실제 적용 시 확인할 검증 계획입니다.

학교 안에서 이용자끼리 영향을 주고받는 특성을 고려해 학교 단위 실험 또는 단계적 적용을 검토합니다.

개선 구간 확인할 핵심 지표 함께 확인할 부작용
첫 참여 단계별 개방 후 첫 질문 참여율, 40명 도달 학교 비율과 도달 후 7일 내 첫 질문 참여율 건너뛰기, 노출 대비 신고
질문 경험 의미 반복률, 신규 질문 노출 비율 전체·안전 사유별 노출 1,000건당 신고
반응과 대화 24시간 내 반응 발생 비율, 다음 날 투표 참여율 알림 차단·해제
재방문 방문 후 핵심 행동 전환율 알림 차단·해제

참여가 증가하더라도 신고나 원치 않는 알림이 함께 늘어나는지 확인해야 합니다.

6. 데이터 범위와 해석상의 한계

데이터 범위

  • 서비스 DB와 분석용 마트: 가입, 학교, 친구 요청, 질문, 지목, 열람·답장, 신고, 출석, 결제 등을 연결해 분석했습니다. 테이블과 지표별 관측 범위는 다릅니다.
  • Hackle 방문 로그: 2023.07.18 ~ 2023.08.10. 질문 시작·완료와 완료 이후 행동 분석에 사용했습니다.
  • 10개 학교 분석: Content·Value 및 일부 Trust 분석에 사용했습니다. 전체 학교 분석과 표본을 구분합니다.
  • 2023년 5월 가입 코호트: 가입일 기준의 구간별 행동 관측과 후기 이용을 살펴봤습니다.

따라서 2023.07.18 ~ 2023.08.10을 프로젝트 전체 데이터 기간으로 사용하지 않습니다. 구체적인 필터·분모·기간은 각 분석 코드와 문서를 기준으로 확인합니다.

분석 결과를 읽을 때의 해석 원칙
  1. 관측 연관과 인과효과를 구분합니다. 답장을 받은 날의 참여율이 높아도, 답장만으로 참여가 증가했다고 단정하지 않습니다.
  2. 최종 상태와 당시 상태를 구분합니다. 최종 수락 관계망이나 마지막 갱신 시각은 실제 최초 행동 시점과 다를 수 있습니다.
  3. 공급 기록과 실제 노출·열람을 구분합니다. 질문조각은 공급·노출의 대용치이며, 실제 화면 열람 횟수와 동일하지 않습니다.
  4. 모집단과 분모를 유지합니다. 전체 학교·10개 학교·방문·사용자-일·가입 코호트의 수치를 같은 기준으로 합치지 않습니다. 24시간 기준과 날짜 기준 무반응도 서로 다릅니다.
  5. 군집의 해석 범위를 제한합니다. K=4는 행동 해석 가능성을 고려한 설정이며, 군집 생성 피처의 차이만으로 독립적인 유효성을 입증하지 않습니다.
  6. 신고 이력과 유해성 판정을 구분합니다. Trust 모델은 검토 우선순위를 돕는 도구입니다. 주제 라벨이나 모델 점수만으로 실제 위해를 확정하지 않습니다.
  7. 검증되지 않은 가설을 성과로 쓰지 않습니다. C1·C3 답장 수준과 학교 활성 유지 일수의 관계에 대한 가설은 지지되지 않았으며, 리빌드의 운영 효과는 후속 실험이 필요합니다.

7. 사용 기술

구분 도구
데이터 조회·마트 구성 SQL, MySQL 8.0, DuckDB
전처리·탐색 분석 Python, pandas, NumPy
시각화 Matplotlib, Seaborn
통계 분석·모델링 SciPy, statsmodels, scikit-learn
텍스트·관계망 분석 Kiwi, Sentence Transformers, UMAP, NetworkX
분석 환경 Jupyter Notebook, Google Colab
프로토타입 HTML, CSS, JavaScript
협업·발표·데모 배포 Git, GitHub, Canva, GitHub Pages

8. 저장소 구성

team7/
├── README.md
├── deliverables/         # 최종 제출 산출물 원본
│   ├── 7팀_Viral to Value.pdf
│   ├── 7팀_Colab.ipynb
│   ├── 7팀_UIUX_체험용_프로토타입.html
│   └── 7팀_유저플로우.html
├── analysis/
│   ├── 01_viral/          # 유입과 교내 연결 사전 진단
│   ├── 02_growth/         # 학교 활성화와 확산 유형
│   ├── 03_network/        # 친구 관계망과 연결 행동
│   ├── 04_content/        # 질문 공급·새로움·의미 반복
│   ├── 05_interaction/    # 질문 완료 이후 행동
│   ├── 06_value/          # 행동 군집과 반응·이용 가치
│   ├── 07_trust/          # 질문 신고·텍스트 분석·검토 모델
│   ├── 08_continuation/   # 후기 활동과 재방문
│   └── preprocessing/    # 분석용 전처리
├── scripts/
│   └── marts/            # Python 데이터 마트 구성
└── sql/
    └── marts/            # SQL 데이터 마트 생성·추출·검증

이 저장소는 팀 분석 코드와 최종 제출 산출물을 관리합니다. 공개 체험판은 별도 데모 저장소에서 배포하며, 같은 프로젝트의 제품 재구축 결과물입니다.

9. 결과 확인과 분석 실행

화면 체험

공개 데모에 접속하면 별도 설치 없이 확인할 수 있습니다. 실제 데이터베이스나 운영 서버는 필요하지 않습니다.

분석 코드 확인

  1. 관심 있는 분석 폴더의 README와 노트북을 확인합니다.
  2. 해당 분석이 요구하는 원본 데이터 또는 생성된 마트를 별도로 준비합니다.
  3. 노트북·스크립트의 데이터 경로, DB 연결 설정과 의존성을 본인 환경에 맞춥니다.
  4. 필요한 전처리와 마트 구성을 먼저 수행한 뒤 분석별 코드를 실행합니다.
  5. 결과를 비교할 때 사용한 데이터 버전, 필터, 모집단과 분모가 같은지 확인합니다.

현재 저장소는 분석별 노트북과 스크립트를 중심으로 구성되어 있습니다. 공통 환경 파일이나 단일 명령으로 전체 분석을 재현하는 실행 경로는 제공하지 않습니다. 일부 분석에는 별도 보조 모듈과 경로 조정이 필요할 수 있습니다.

원본 데이터·개인정보·DB 접속 정보는 실행 환경에서 별도로 관리하고, 공개 데모에 포함하지 않습니다.

10. 팀 협업 규칙

브랜치 전략

main을 기준으로 작업별 브랜치를 생성합니다.

  • main에 직접 커밋하거나 Push하지 않습니다.
  • 작업 전 main의 최신 내용을 Pull합니다.
  • 담당 작업별 브랜치를 생성하고, 하나의 브랜치에서는 하나의 분석·수정 목적을 다룹니다.
  • 완료한 작업을 Push한 뒤 Pull Request를 생성합니다.
  • 최소 1명의 팀원이 코드를 검토한 후 main에 병합합니다.
  • 병합이 완료된 작업 브랜치는 삭제합니다.

작업 흐름

  1. main 최신화
  2. 작업 브랜치 생성
  3. SQL·Python·문서 작업
  4. Commit 및 Push
  5. Pull Request 생성
  6. 팀원 코드 리뷰
  7. main 병합 및 작업 브랜치 정리

브랜치 타입

타입 용도
feat 새로운 기능·분석·데이터 마트 추가
fix 코드·데이터 처리 오류 수정
docs README·데이터 명세서·분석 문서 작성 및 수정

브랜치 이름은 타입-작업명#이슈번호 형식을 사용합니다.

feat-question-attempt-mart#1
fix-event-deduplication#2
docs-project-readme#3

커밋 컨벤션

[Feat] 질문 진행 시도 마트 생성
[Feat] 질문 순서별 스킵률 분석 추가
[Fix] 중복 완료 이벤트 집계 오류 수정
[Docs] 프로젝트 README 작성

About

익명 SNS 질문 완주 안전 친구 네트워크 분석

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages