사용자는 제목 10자와 내용 30자 안에 문서 작업 중 겪은 두려움이나 난감한 순간을 적습니다. 서비스는 이를 일곱 가지 문서 작업 유형 중 하나로 판정하고, 유형에 맞는 부적 카드와 실제 문제 해결에 도움이 되는 한컴어시스턴트 기능을 보여줍니다.

30자 안의 다양한 표현을 유형별로 구분하기 위해 의미 유사도를 사용했습니다. 결과 확인 뒤에는 공개 응모작 탐색과 좋아요, 공유, 인기상 선정으로 참여를 이어가도록 구성했습니다.

Product thesis

의미 기반 판정을 재미있는 결과 카드로 번역하고, 그 결과를 제품 기능과 다른 참가자의 사연으로 다시 연결한다.

제목과 내용을 합친 입력을 AWS Bedrock의 Amazon Titan Text Embeddings V2로 벡터화했습니다. 일곱 유형에 속한 342개 키워드 문장도 미리 임베딩해 저장하고, 입력 벡터와 모든 기준 벡터의 코사인 유사도를 계산했습니다. 각 유형의 최고 점수 가운데 전체 최댓값을 가진 유형을 최종 결과로 선택했습니다.

Short story제목과 30자 사연을 하나의 의미 입력으로 구성
Titan embeddingAmazon Titan Text Embeddings V2로 입력을 벡터화
Similarity7개 유형·342개 사전 벡터와 코사인 유사도 비교
Experience최고 점수 유형을 부적 카드와 한컴어시스턴트 기능에 매핑

분류와 필터링에 서로 다른 알고리즘 사용

욕설 필터에는 여러 금칙어를 한 번에 검색하는 Aho–Corasick을 적용했습니다. 임베딩은 의미가 비슷한 표현의 분류를, Aho–Corasick은 정확한 금칙어 문자열 탐지를 담당했습니다.

판정된 유형은 카드 이미지 저장, Kakao·Naver·Facebook·X 공유와 링크 복사로 이어집니다. 각 유형에는 첨부 문서 요약, 서식 기반 초안, 내용 교정, 이미지 생성, 한셀 자연어 명령처럼 관련 한컴어시스턴트 기능을 연결해 캠페인의 재미가 제품 탐색으로 이어지게 했습니다.

01 · DISCOVER

공개 사연 탐색

좋아요순·최신순·무작위 정렬과 무한 스크롤로 다른 참가자의 사연을 계속 볼 수 있게 했습니다.

02 · REACT

낮은 참여 장벽

로그인 사용자는 계정, 비로그인 사용자는 쿠키로 좋아요 상태를 관리해 누구나 공개 투표에 참여할 수 있게 했습니다.

03 · SHARE

결과 확산

유형별 카드 저장과 소셜 공유, Open Graph와 JSON-LD를 구성해 개인 결과가 캠페인 유입으로 이어지게 했습니다.

04 · REWARD

인기상 참여 루프

공감 수를 인기상 선정과 연결해 응모자가 다른 사연을 탐색하고 반응할 이유를 만들었습니다.

Next.js 15 App Router와 API Route로 공개 이벤트 화면, 관리자 화면과 서버 API를 하나의 코드베이스에 구성했습니다. Prisma와 MySQL에는 사용자, 휴대전화 인증, 응모작, 좋아요와 행동 지표를 저장했습니다.

운영자는 참여자·응모작·카드 다운로드·공유·제품 유입·최다 좋아요를 일자별로 확인하고 목표 달성률을 볼 수 있습니다. 사용자와 응모작을 휴대전화 번호로 교차 탐색하고 공감 관계까지 조회하며, 대상·인기상·특별상·문서운상을 지정하거나 응모작을 삭제·복원할 수 있게 했습니다.

Dashboard

일자별 누적 참여와 유형별 분포, 핵심 전환 행동을 표와 차트로 시각화

Evidence

자체 Metric과 Google Tag Manager로 다운로드·공유·제품 연결 행동을 함께 기록

Export

통계와 원본 운영 데이터를 Excel로 내려받아 수상작 선정과 후속 업무 지원

Docker와 Jenkins로 개발 브랜치 배포를 자동화해 행사 운영 중 발생하는 수정 사항을 반복 배포할 수 있는 기반도 마련했습니다.

What this project shows

사연 분류부터 수상작 관리까지 연결

임베딩 기반 의미 분류를 사용자에게는 부적 카드 경험으로, 운영자에게는 참여 지표와 수상작 관리 도구로 번역했습니다.

문서운 이야기 아카이브 ↗