취준생의 경험을 아카이빙하고, 자기소개서를 빠르게 완성하는 플랫폼
현대자동차 소프티어 부트캠프 7기 - Team 7. Jackpot
Narratix는 취준생들이 흩어진 경험을 모으고, 자기소개서를 효율적으로 작성/관리할 수 있도록 돕는 플랫폼입니다.
- 자소서 초안, 문항, 경험 메모가 여러 곳에 흩어져 재활용이 어렵다
- 지원 일정과 작성 진행도를 함께 관리하기 어렵다
- 첨삭 과정이 메시지/문서로 분산되어 피드백 반영이 비효율적이다
경험 아카이빙: 업로드한 자료를 구조화해 기업/문항 단위로 재활용작성 생산성: 문항 중심 편집 + 검색/필터로 빠른 작성 흐름 지원피드백 루프: 공유 기반 첨삭으로 수정 사이클 단축
-
[나의 채용공고] 공고 등록 또는 [자료 업로드] PDF 업로드로 자기소개서 생성
- 텍스트로 공고 정보와 문항 직접 작성
- PDF 업로드 시 AI가 자동 파싱 후 라이브러리에 저장
-
[라이브러리] 에서 자료 탐색 및 스크랩
- 기업별/문항별로 아카이빙된 자료 열람
- 재활용할 내용 스크랩
-
[자기소개서] 에서 문항별 초안 작성 / 수정
- 사이드바에서 스크랩하거나 아카이빙된 자료를 참고하며 작성
-
[자기소개서] 공유 링크 기반 실시간 첨삭 진행
-
[나의 채용공고] 채용 캘린더로 지원 일정 관리
작성자
첨삭자
홈 대시보드: 작성 통계, 시즌 지원 현황, 임박 일정 확인채용공고 관리: 캘린더 기반 공고 등록/수정/삭제자료 업로드: 자기소개서 파일 업로드 후 AI 라벨링 및 저장자기소개서 작성: 문항 단위 작성, 검색/필터 기반 문서 탐색친구 첨삭: 공유된 자기소개서 코멘트 작성 및 반영라이브러리: 기업별/문항별 아카이빙, 스크랩 기반 재활용인증: 로그인/회원가입 및 보호 라우팅
아키텍처 링크
| 이름 | 포지션 | 담당 도메인 |
|---|---|---|
| 강유진 | Frontend | 실시간 텍스트 에디터 / 협업 첨삭 UI |
| 박소민 | Frontend | 라이브러리(기업·문항) / 나의 채용공고(캘린더) / 자기소개서 작성 (랜딩 페이지 및 검색) |
| 윤종근 | Frontend | 실시간 첨삭, 실시간 알림, 자료 업로드 |
| 김승환 | Backend & Infra | WebSocket 실시간 첨삭, SSE 알림, 자기소개서, 첨삭 링크 관리 |
| 이정민 | Backend & Infra | 자료 업로드, 라이브러리, 검색 , aws 인프라 구축 |
- 비동기 이벤트 기반 아키텍처 구현: 자기소개서 PDF 업로드 및 AI 라벨링의 비동기 처리 과정에서 발생할 수 있는 상태 유실 문제를 해결하기 위해 비동기 이벤트 기반 아키텍처 구축
- WebSocket/STOMP 기반 실시간 자소서 첨삭 기능 구현: WebSocket과 STOMP를 사용해 작성자(Writer)와 첨삭자(Reviewer) 간 실시간 자소서 첨삭 기능 구현
- Operational Transformation 알고리즘을 사용한 중앙 집중 동시 편집 기능 구현: 자기소개서 작성자(Writer)와 첨삭자(Reviewer)가 자기소개서 동시 편집 시 충돌 없이 일관된 상태를 유지하도록 Operational Transformation 알고리즘을 도입하여 모든 사용자가 동일한 결과를 보도록 구현
- Write Back 패턴을 사용하여 실시간 저장 로직 최적화: 매 텍스트 변경마다 DB IO를 발생시키지 않고, Redis에 Delta(변경분)를 임시 저장하고, 임계값 도달 시 DB에 Delta를 Flush하는 Write Back 캐싱 전략 구현
- Redis 분산 락을 이용한 웹소켓 접속 유저 제한 정책 구현: 하나의 첨삭 링크에 Writer와 Reviewer 각 1명만 동시 접속이 가능하도록 Redis 분산 락 기반 제한 정책 구현, Lock의 TTL을 30초로 설정하여 비정상 종료 시에도 락이 자동 해제되도록 구현, Lock 갱신 로직에서 Pipeline과 Lua Script를 조합해 단일 네트워크 IO로 모든 세션의 Lock TTL을 10초마다 갱신하도록 구현
- SSE 기반 알림 발송 로직 구축: Server-Sent Events를 활용하여 서버에서 클라이언트로 단방향 실시간 알림을 전송하는 시스템 구현
- [김승환] - 비동기 이벤트 아키텍처 개선기
- [김승환] ‐ WebSocket vs. SSE
- [김승환] ‐ 실시간 첨삭 기능, 어떻게 구현할 것인가? (데이터 구조부터 OT 알고리즘까지)
- [김승환] ‐ 동시 편집(OT) 알고리즘 구현 중 만난 버전 충돌 개선기
- [김승환] ‐ 트랜잭션 경계 재설계와 낙관적 락을 통한 리뷰 생성 로직 개선
- [김승환] - 웹소켓 다중 서버 환경에서 Redis 분산락과 Pipelining으로 단일 접속 제어하기
- [김승환] - WebSocket과 달리, SSE에서는 onCompletion이 왜 바로 호출되지 않았을까?









