공개 사연 탐색
좋아요순·최신순·무작위 정렬과 무한 스크롤로 다른 참가자의 사연을 계속 볼 수 있게 했습니다.
문서 작업 중 겪은 난감한 순간을 짧은 사연으로 받으면 의미가 가장 가까운 유형을 찾아 맞춤형 부적 카드를 주는 이벤트 서비스입니다. 30자의 입력을 의미 기반으로 분류하는 경험부터 좋아요·공유·수상작 선정과 운영 대시보드까지 하나의 참여 흐름으로 구현했습니다.
운영 당시 결과물을 보존한 공개 아카이브 화면
사용자는 제목 10자와 내용 30자 안에 문서 작업 중 겪은 두려움이나 난감한 순간을 적습니다. 서비스는 이를 일곱 가지 문서 작업 유형 중 하나로 판정하고, 유형에 맞는 부적 카드와 실제 문제 해결에 도움이 되는 한컴어시스턴트 기능을 보여줍니다.
30자 안의 다양한 표현을 유형별로 구분하기 위해 의미 유사도를 사용했습니다. 결과 확인 뒤에는 공개 응모작 탐색과 좋아요, 공유, 인기상 선정으로 참여를 이어가도록 구성했습니다.
의미 기반 판정을 재미있는 결과 카드로 번역하고, 그 결과를 제품 기능과 다른 참가자의 사연으로 다시 연결한다.
제목과 내용을 합친 입력을 AWS Bedrock의 Amazon Titan Text Embeddings V2로 벡터화했습니다. 일곱 유형에 속한 342개 키워드 문장도 미리 임베딩해 저장하고, 입력 벡터와 모든 기준 벡터의 코사인 유사도를 계산했습니다. 각 유형의 최고 점수 가운데 전체 최댓값을 가진 유형을 최종 결과로 선택했습니다.
욕설 필터에는 여러 금칙어를 한 번에 검색하는 Aho–Corasick을 적용했습니다. 임베딩은 의미가 비슷한 표현의 분류를, Aho–Corasick은 정확한 금칙어 문자열 탐지를 담당했습니다.
판정된 유형은 카드 이미지 저장, Kakao·Naver·Facebook·X 공유와 링크 복사로 이어집니다. 각 유형에는 첨부 문서 요약, 서식 기반 초안, 내용 교정, 이미지 생성, 한셀 자연어 명령처럼 관련 한컴어시스턴트 기능을 연결해 캠페인의 재미가 제품 탐색으로 이어지게 했습니다.
좋아요순·최신순·무작위 정렬과 무한 스크롤로 다른 참가자의 사연을 계속 볼 수 있게 했습니다.
로그인 사용자는 계정, 비로그인 사용자는 쿠키로 좋아요 상태를 관리해 누구나 공개 투표에 참여할 수 있게 했습니다.
유형별 카드 저장과 소셜 공유, Open Graph와 JSON-LD를 구성해 개인 결과가 캠페인 유입으로 이어지게 했습니다.
공감 수를 인기상 선정과 연결해 응모자가 다른 사연을 탐색하고 반응할 이유를 만들었습니다.
Next.js 15 App Router와 API Route로 공개 이벤트 화면, 관리자 화면과 서버 API를 하나의 코드베이스에 구성했습니다. Prisma와 MySQL에는 사용자, 휴대전화 인증, 응모작, 좋아요와 행동 지표를 저장했습니다.
운영자는 참여자·응모작·카드 다운로드·공유·제품 유입·최다 좋아요를 일자별로 확인하고 목표 달성률을 볼 수 있습니다. 사용자와 응모작을 휴대전화 번호로 교차 탐색하고 공감 관계까지 조회하며, 대상·인기상·특별상·문서운상을 지정하거나 응모작을 삭제·복원할 수 있게 했습니다.
일자별 누적 참여와 유형별 분포, 핵심 전환 행동을 표와 차트로 시각화
자체 Metric과 Google Tag Manager로 다운로드·공유·제품 연결 행동을 함께 기록
통계와 원본 운영 데이터를 Excel로 내려받아 수상작 선정과 후속 업무 지원
Docker와 Jenkins로 개발 브랜치 배포를 자동화해 행사 운영 중 발생하는 수정 사항을 반복 배포할 수 있는 기반도 마련했습니다.
임베딩 기반 의미 분류를 사용자에게는 부적 카드 경험으로, 운영자에게는 참여 지표와 수상작 관리 도구로 번역했습니다.
문서운 이야기 아카이브 ↗