Product Plan · v1.0

MBTI × 별자리 × 사주팔자,
흩어진 운세를 하나의 결론으로

기존 운세 서비스는 MBTI 따로, 사주 따로, 타로 따로 — 서로 다른 말을 한다. 이 서비스는 네 가지 체계를 하나의 인격 프로필로 병합해, 겹치는 신호는 확신으로, 상반되는 신호는 균형 잡힌 조언으로 바꿔 하나의 결론만 제공한다.

MBTI 자체 문항 16Q 사주팔자 / 오행 토정비결 연운 서양 별자리 타로 3카드
01 · Overview

왜 "병합"인가

각 체계를 순서대로 나열하는 앱은 이미 많다. 이 기획의 차별점은 해석 레이어에서 4개 체계의 신호를 정량화하고 합성해, 사용자가 읽는 것은 "성격 유형 A는 이렇고, 별자리는 저렇고..."가 아니라 하나로 정리된 조언이라는 점이다.

문제

파편화된 근거

MBTI 앱, 사주 사이트, 오늘의 별자리, 타로 앱을 사용자가 직접 오가며 종합해야 함. 결과가 충돌해도 조율해주는 곳이 없음.

해석

공통분모가 신뢰

서로 독립적으로 만들어진 4개 체계가 같은 결론(예: "이번 달 대인관계 신중")을 가리키면 그 자체가 강한 신호. 병합 엔진은 이 일치를 우선 노출.

해법

단일 합성 리포트

4개 체계를 8개 축(에너지·관계·재물·리스크 등) 스코어로 환산 후 가중 합성. 상충 항목은 "다만" 문장으로 부연해 사용자가 스스로 균형을 잡게 안내.

02 · Persona

타깃 & 사용 시나리오

운세 앱을 이미 써본, 그러나 "말이 다 다르다"는 피로를 느낀 20~30대. 하루 1회, 출근길/자기 전 짧게 확인하는 습관형 사용.

시나리오사용자 행동핵심 니즈
첫 방문MBTI 문항 16개 응답 → 성별/양음력 생년월일(+태어난 시 선택) 입력 → 프로필 1회 생성3분 이내 완료, 재입력 없는 온보딩
매일 아침홈에서 "오늘의 운세" 카드 확인, 3줄 요약 + 행운 아이템10초 컷 스캔, 알림 연동
월초"이번 달 운세" 확인, 재물/애정/일 세부 지표 체크계획 수립용 근거
고민 있을 때재물/성공/애정 중 선택 → 맞춤 심층 조언 + 타로 3장 병합 해석범용 조언이 아닌 "내 얘기 같은" 구체성
03 · Input Design

입력 설계 — MBTI 확정 & 사주 정보

외부 검사 결과를 그대로 믿지 않고, 자체 간이 문항으로 매 세션 일관된 스코어를 얻는다. 4문항이 아닌 16문항(축당 4개)으로 응답 신뢰도를 확보하고, 중립 응답을 축소하는 5점 리커트를 사용.

3-A. MBTI 확정 문항 (16Q)

E/I · S/N · T/F · J/P 4축 × 4문항. 예시:

  • E/I — "낯선 모임에서 나는 먼저 말을 건다" (5점 척도)
  • S/N — "구체적 사실보다 가능성과 패턴에 끌린다"
  • T/F — "결정할 때 논리를 감정보다 우선한다"
  • J/P — "계획이 틀어지면 스트레스를 크게 받는다"

축별 합산 점수 → 중앙값 기준 4비트 유형 산출. 각 축의 확신도(%)도 함께 저장해 병합 엔진 가중치로 사용 (예: E/I 확신 92%, J/P 확신 54%).

3-B. 인적 정보

  • 성별 — 사주 십성 해석 및 별자리 궁합 어휘 조정용
  • 생년월일 — 양력/음력 토글, 음력 입력 시 윤달 여부 체크박스
  • 출생시간 (선택) — 시주 계산용, 모르면 "시 모름"으로 오행 3주만 계산
  • 출생지 (선택, 기본 대한민국) — 절기 기준 시각 보정용
설계 원칙 — 출생시간 미입력을 막지 않는다. 대신 결과 화면에 "시주 미포함, 정확도 85%" 같은 신뢰도 라벨을 노출해 과신을 막는다.
04 · Data Sources

외부 무료 소스 vs 자체 로직

사용자 결정에 따라 음양력 변환만 공식 API로 정확히 처리하고, 오행·토정비결·별자리·타로 해석 콘텐츠는 자체 데이터셋/로직으로 구축한다. 외부 API는 모두 무료/공개 티어로 시작 가능.

영역소스역할비용
음양력 변환 한국천문연구원(KASI) 음양력정보 API — 공공데이터포털 제공 양력↔음력, 간지(干支), 윤달 여부의 정확한 변환. 사주 계산의 기준일 확보 무료
사주팔자 오행 자체 룰 엔진 (천간지지 조견표 + 오행 상생상극표 내장) 연/월/일/시주 4주 오행 분포 산출, 부족/과다 오행 판정 자체 개발
토정비결 자체 괘(卦) 산출 로직 + 자체 저작 384/64괘 해석문 라이브러리 연간 대괘 산출 → 월별 소괘 12개 → 6개월 전후 흐름에 매핑 자체 개발
서양 별자리 생년월일 기반 자체 계산(태양궁 고정 경계값) + Swiss Ephemeris 알고리즘(오픈소스, MIT) 참고해 달의 별자리 근사 태양궁 + 달의 별자리 조합으로 성향/감정 축 보강 무료(OSS)
타로카드 오픈소스 타로 데이터셋(78장 JSON, 라이더-웨이트 덱 기준 공개 데이터) 자체 호스팅 카드 텍스트/이미지 소스. 해석문은 MBTI·사주 병합 로직에서 재작성 무료(OSS)
절기 계산 KASI 특일정보/절기 API 사주 월주 산출 시 입춘 등 절입시각 기준 필요 (음력 달력만으론 부정확) 무료
중요 리스크 — 사주의 월주는 음력 1일이 아니라 절기(입춘 등) 기준으로 바뀐다. 음양력 변환 API만으론 부족하므로 KASI의 절기/특일 API를 함께 연동해야 생년월일 근처 절입시각 오차를 피할 수 있다. (자체 계산으로 대체 시 이 부분이 가장 큰 오류 원인.)
05 · Fusion Engine

병합 엔진 — 겹치면 확신, 엇갈리면 균형

4개 체계 각각의 원시 결과를 그대로 붙이지 않는다. 공통 8축 스코어 벡터로 정규화한 뒤 합성하고, 축마다 일치/상충 태그를 붙여 문장 생성 규칙에 반영한다.

Step 1 — 4체계 → 8축 정규화

각 체계 결과를 아래 8축에 -2~+2 점수로 매핑:

에너지 · 관계운 · 재물운 · 성공/커리어 · 애정운 · 안정성 · 리스크(변동성) · 자기성장

Step 2 — 가중 합성

기본 가중치 사주 35% · 토정비결(시기성) 30% · MBTI 20% · 별자리 15%. MBTI는 축별 확신도(3-A)에 비례해 개인별로 가중치 미세조정.

Step 3 — 일치/상충 태깅

동일 축에서 2개 이상 체계가 같은 부호(+/-)면 일치, 부호가 갈리면 상충 태그. 상충 축은 원문 언급 없이 "다만 ~한 여지도 있다" 문장으로 자동 완충.

Step 4 — 문장 생성

일치 축 → 단정형 문장(확신 어휘). 상충 축 → 양면형 문장(균형 어휘). 태그별 문장 템플릿 뱅크에서 MBTI 유형에 맞는 어투(직설/완곡) 선택.

예시 — 재물운 축 병합 케이스

체계원시 신호정규화 점수
사주(이달 재성)재성 발달, 편재운 강함+2
토정비결(이달 괘)재물 유입 암시+1
별자리(금성 각도)지출 확대 경고−1
MBTI(J/P 축, 확신 88%)계획형 → 충동지출 낮음+1

→ 합성 점수 +1.2 (양호, 상충 있음) → 생성 문장 예: "이번 달 재물운은 전반적으로 순조롭다. 다만 지출 충동이 커질 수 있는 시기이니, 계획적인 소비 성향을 살려 큰 지출은 미리 예산을 세워두면 좋다."

06 · Five Outputs

출력 5종 상세

모두 같은 병합 엔진 결과(8축 벡터 + 태그)를 시간 스코프와 주제만 바꿔 재사용한다. 콘텐츠를 5번 따로 만드는 게 아니라 1개 프로필 → 5개 렌즈로 본다.

01

오늘의 운세

8축 중 오늘 변동폭이 큰 2~3축만 발췌해 3줄 요약. 행운의 색/방향/아이템은 오행 부족분을 보완하는 색상·사물로 자동 매핑. 알림 발송용 30자 카피 별도 생성.

02

이번 달 운세

토정비결 월별 소괘 + 사주 월운을 축으로, 8축 전체를 레이더 차트로 시각화. 주차별(1~4주) 흐름 타임라인 포함, 이달의 주의 시기 1곳 하이라이트.

03

과거 6개월 ~ 앞으로 6개월

대운/세운(사주) + 토정비결 연간 흐름을 12개월 라인차트로. 지난 6개월은 "결과 되짚기" 톤(이미 지난 일과 대조), 향후 6개월은 "대비" 톤으로 문장 어투 자동 전환.

04

나의 고민 (재물/성공/애정 택1)

선택 주제에 해당하는 축(재물운/성공·커리어/애정운)만 심층 확장. MBTI 유형별 구체 행동 조언(예: INTJ+재물 고민 → "직관적 투자보다 데이터 기반 결정 선호 성향 활용") 매핑.

05

타로점 — 3카드 스프레드 × MBTI × 사주 병합

과거/현재/미래(또는 4번에서 고른 고민 주제에 맞춘 스프레드) 3장을 뽑는다. 카드 자체 의미(오픈소스 텍스트)를 그대로 쓰지 않고, 이미 산출된 8축 벡터와 교차 해석한다.

  • 일치 시 — 카드 의미와 사주/MBTI 축이 같은 방향이면 "카드가 사주의 흐름을 다시 한번 확인시켜준다"는 확신 톤
  • 상충 시 — 카드가 경고, 사주가 긍정이면 "큰 흐름은 좋으나 이 시기 특정 선택은 주의하라는 신호"로 스코프를 좁혀 해석 (시기 vs 선택의 차이로 모순을 해소)
  • 텍스트 생성 — 카드명 + 정/역방향 + 교차된 8축 태그를 조합한 규칙 기반 템플릿. 향후 LLM 연동 시 이 템플릿을 few-shot 예시로 사용 가능
07 · Product Flow

전체 사용자 플로우

1 온보딩

MBTI 16문항

축당 4문항, 5점 척도

2 입력

성별 · 생년월일

양/음력 토글, 시간 선택

3 계산

병합 엔진 실행

API 변환 + 8축 정규화·합성

4 결과

5탭 리포트

오늘/이달/12개월/고민/타로

5 재방문

홈 = 오늘 탭

프로필 저장, 매일 자동 갱신

08 · Interactive Prototype

클릭 가능한 목업

아래는 실제 데이터 대신 예시값으로 동작하는 화면 흐름입니다. 질문에 답하고, 정보를 입력하면 5탭 결과를 확인할 수 있습니다.

合一運勢
네 가지 관점, 하나의 결론
MBTI · 별자리 · 사주팔자 · 토정비결을 병합해 오늘의 조언을 만듭니다. 약 16개 문항 + 기본 정보 입력에 3분 정도 걸려요.
E / I — 에너지 방향
낯선 모임에서 나는 먼저 말을 건다
기본 정보
사주와 별자리 계산에 사용돼요.
성별
생년월일 기준
생년월일 태어난 시각 (선택)

음양력 변환 중...

ENTJ · 음력 1996.04.27 · 쌍둥이자리

오늘의 운세 일치 신호 3개

사주 일간의 기운이 강해지는 날. 별자리(달의 위치)도 감정적 안정을 가리켜, 오늘은 중요한 대화를 시작하기 좋다. 다만 재물운은 사주와 토정비결이 엇갈려 — 작은 지출은 괜찮지만 큰 계약은 하루 미루는 편이 낫다.

에너지
+1.6
관계운
+1.2
재물운
+0.2
09 · Privacy

개인정보 처리 정책

생년월일 + 성별 + 출생시각 + 출생지 조합은 결합 시 개인 식별 가능성이 있는 민감 정보다. "운세 서비스니까 괜찮다"고 넘기지 않고, 수집 최소화와 삭제권을 설계 단계부터 명시한다.

수집 & 저장 원칙

  • 최소 수집 — 출생시각·출생지는 선택 입력. 필수는 생년월일(양/음력)·성별뿐
  • 로컬 우선 계산 — 가능한 연산(오행 산출, 8축 병합)은 클라이언트에서 처리하고, 서버에는 결과 요약만 저장해 원본 조합 노출을 줄임
  • 비식별 저장 — 생년월일은 별도 테이블에 암호화 저장, 계정 식별자와 분리 보관(키 분리)
  • 보관 기간 — 계정 삭제 시 즉시 파기, 휴면 계정은 1년 후 자동 파기 고지 후 삭제

사용자 권리 & 예외 케이스

  • 삭제 요청 — 설정에서 "내 사주 정보 삭제" 원클릭 제공, 삭제 시 캐시된 리포트도 함께 파기
  • 미성년자 — 만 14세 미만은 법정대리인 동의 플로우 필요(국내 개인정보보호법 기준), 온보딩에서 생년 입력 시 자동 분기
  • 궁합 기능의 제3자 정보 — 상대방 생년월일 입력 시 "본인 동의를 받았는지" 체크박스 필수, 상대방 정보는 요청자 계정에만 귀속되고 별도 계정 생성/알림 금지
  • 제3자 API 전송 범위 — KASI API 호출 시 생년월일 원문 대신 최소 단위(연/월/일)만 전송, 이름·연락처 등은 어떤 외부 호출에도 포함하지 않음
설계 반영 — 온보딩 3-B(입력 설계) 화면에 "왜 이 정보가 필요한가"와 "선택 항목은 건너뛸 수 있음"을 각 필드 아래 1줄로 명시. 개인정보처리방침 링크를 생년월일 입력 필드 바로 아래 배치(약관 페이지에 묻지 않기).
10 · Accuracy QA

정확도 검증 프로세스

자체 오행/토정비결 룰엔진과 별자리 근사 계산은 검증 없이는 신뢰할 수 없다. 출시 전후 상시 대조 체계를 둔다.

검증 대상대조 기준방법 & 주기
음양력 변환 KASI API 응답 자체가 기준(공식 소스이므로 별도 대조 불요) API 응답 스키마 변경 여부만 배포 전 스모크 테스트로 확인
사주 4주(년/월/일/시주) 공개 만세력 프로그램(예: 사주 만세력 표준 계산 로직) 결과값 1900~2050년 사이 무작위 200케이스 샘플링 → 4주 간지 100% 일치 목표, 월주는 절기 경계일(±1일) 케이스 별도 20건 집중 테스트
토정비결 괘 산출 전통 산출식(생년/월/일 숫자 조합 → 상/중/하괘) 원 계산식 연 1회, 신년 업데이트 시 계산식 재검증
별자리(태양궁/달의 별자리) Swiss Ephemeris 계산 결과 월별 경계일(궁이 바뀌는 날짜) 전후 케이스 집중 테스트
병합 문장 생성 사람 리뷰(운세 콘텐츠 에디터) 상충 태그 발생 케이스는 배포 전 100% 휴먼 리뷰, 일치 케이스는 샘플링 리뷰
회귀 방지 — 위 샘플 케이스들을 고정 테스트셋으로 저장해 룰엔진 수정 시마다 자동 회귀 테스트 실행. 특히 절기 경계일·별자리 궁 경계일은 매 배포마다 재확인 대상으로 CI에 포함.
11 · Content Bank

콘텐츠 뱅크 & 반복 방지

룰 기반 문장 생성은 매일 접속하는 사용자에게 같은 문장이 반복될 위험이 크다. "오늘도 어제랑 똑같은 말"이라는 인상은 서비스 신뢰도를 가장 빠르게 깎는다.

반복이 발생하는 지점

  • 축-태그 조합 수 한계 — 8축 × (일치/상충) × MBTI 어투(직설/완곡) 조합은 유한. 문장 템플릿이 축당 3~5개뿐이면 1~2주 내 반복 체감
  • 오늘의 운세가 가장 취약 — 매일 열람하는 화면인데 입력 변화폭(오늘 날짜)이 8축 점수에 미치는 영향이 작아 문장이 잘 안 바뀜
  • 같은 사용자 반복 열람 — 같은 날 여러 번 새로고침해도 결과가 바뀌면 신뢰도 하락 → 일 1회 고정 시드 필요

대응 설계

  • 템플릿 다양화 최소 기준 — 축당 12개 이상 문장 변주(직설/완곡 × 강/중/약 강도 × 2~3 어휘 세트) 확보 후 출시
  • 결정론적 시드 — "사용자ID + 날짜"를 시드로 문장을 선택해 같은 날 재조회 시 동일 결과 보장, 날짜가 바뀌면 자연 변경
  • 소재 로테이션 — 오늘의 운세엔 8축 점수뿐 아니라 그날의 절기·요일·오행 상생 관계 같은 "미시 소재"를 문장에 섞어 체감 다양성 확보
  • Phase 3 LLM 전환의 목적 명확화 — 규칙 기반 템플릿 뱅크가 소진되는 시점을 반복 방지의 근본 해법이 아니라 "임시 완화책"으로 보고, LLM 전환 우선순위를 콘텐츠 반복 지표(재방문자의 "같은 문장 재노출률")로 트리거
측정 지표 — 재방문 사용자 기준 "지난 7일 내 동일/유사 문장 재노출률"을 QA 대시보드에 추가. 이 지표가 15%를 넘으면 해당 축의 템플릿 뱅크 확장 또는 LLM 전환 우선순위를 올린다.
12 · Error & Edge Cases

예외 & 에러 상태 설계

외부 API 의존(KASI)과 사용자 입력 특성(음력·윤달) 때문에 발생하는 예외 케이스를 화면 단위로 미리 설계해둔다.

상황원인처리 방식
KASI API 장애/타임아웃 공공 API 특성상 간헐적 지연·다운타임 발생 가능 직전 성공 응답을 로컬 캐시(간지 조견표는 결정론적이므로 캐시 가능) → 캐시 우선 조회 후 API는 백그라운드 재시도. 완전 실패 시 "음양력 변환 지연 중, 잠시 후 다시 시도해주세요" 안내와 함께 오늘 운세는 이전 캐시 유지
존재하지 않는 음력 날짜 입력 윤달 미체크 상태로 실제 윤달 날짜 입력, 또는 30일 없는 달에 30일 입력 입력 즉시 프론트에서 유효 날짜 캘린더만 선택 가능하게 제한(자유 텍스트 입력 금지), 윤달 존재 연도는 날짜 선택 시 윤달 옵션 자동 노출
출생시간 미상 사용자가 시간을 모름 "시 모름"으로 명시 선택 → 시주 제외 3주만 계산, 결과 화면에 정확도 라벨(예: "시주 미포함, 참고용") 상시 노출. 침묵 처리(그냥 정오로 임의 대입) 금지
MBTI 문항 응답 편중(전부 "보통") 성의 없는 응답 또는 정말 중립적 성향 한 축이라도 확신도 40% 미만이면 결과 화면에 "이 축은 응답이 모호해 별자리·사주 비중을 높여 보완했어요" 안내, 언제든 재검사 유도 배너 노출
병합 결과 8축 전부 상충 통계적으로 드물지만 발생 가능한 극단 케이스 QA 알림 트리거(자동 사람 리뷰 큐 등록) + 사용자에게는 "오늘은 여러 관점이 엇갈리는 날"이라는 별도 톤의 완충 문장 세트 사용(과신도 비관도 아닌 중립 안내)
13 · Business Model

수익모델

무료로 습관을 만들고, 심층·확장 기능에서 과금하는 구조. 운세 앱 특성상 "매일 무료로 열어보는 이유"가 확실해야 유료 전환이 따라온다.

무료 범위

  • MBTI 16문항 + 프로필 생성 (1회)
  • 오늘의 운세 (일 1회, 매일 갱신) — 리텐션 핵심이므로 끝까지 무료
  • 이번 달 운세 요약(3줄) — 상세 8축 레이더는 유료 미리보기 블러 처리

유료 범위

  • 심층 리포트 — 이번 달 8축 전체 레이더, 과거~미래 12개월 상세 라인차트
  • 고민상담 무제한 — 무료는 월 1회, 유료는 재물/성공/애정 무제한 전환 조회
  • 타로 무제한 뽑기 — 무료는 일 1회 3카드, 유료는 원하는 만큼
  • 궁합(2인 병합) — Phase 4 신규 기능, 전액 유료
전환 지점 설계 — "오늘의 운세"는 무료로 매일 습관을 만들고, 여기서 상충 신호나 흥미로운 결과가 나왔을 때 "왜 이런 결과가 나왔는지 자세히 보기" CTA로 심층 리포트(유료)를 자연 연결한다. 즉 유료화 지점은 항상 무료 콘텐츠가 만든 궁금증 바로 다음에 배치.
14 · Retention

알림 & 리텐션 설계

"오늘의 운세"가 무료이자 핵심 리텐션 장치인 만큼, 언제·어떤 문구로 다시 부를지가 사주 정확도만큼 중요하다. 과도한 푸시는 가장 빠르게 이탈로 이어지므로 빈도와 개인화를 함께 설계한다.

알림 트리거 & 시점

  • 데일리 오프닝 — 기상 시간대 추정(과거 접속 로그 기반, 기본값 오전 8시) 1회. MBTI J형은 "오늘 계획 세우기 전에" 프레임, P형은 "오늘 하루 가볍게" 프레임으로 문구만 분기
  • 월간 오프닝 — 매월 1일 "이번 달 운세가 도착했어요" 1회, 8축 중 가장 변동폭 큰 축 1개를 미리보기로 노출
  • 상충 신호 발생일 — 8축 중 상충 태그가 평소보다 많은 날만 "오늘은 여러 갈래 신호가 있는 날" 알림 우선순위 상향 (희소성으로 클릭률 확보)
  • 재방문 유도(휴면) — 7일 미접속 시 "그동안 3번의 흐름이 지나갔어요" 같은 손실 프레이밍 1회만, 이후 침묵(피로도 관리)

빈도 & 개인화 원칙

  • 일 1회 상한 — 오늘의 운세 알림 외 부가 알림(유료 CTA 등)은 같은 날 함께 보내지 않고 익일로 큐잉
  • 알림 문구도 콘텐츠 뱅크 공유 — 11번 섹션의 반복 방지 원칙을 알림 문구에도 동일 적용, 단 알림은 30자 이하로 압축된 별도 템플릿 세트 운용
  • 옵트아웃 세분화 — "전체 끄기"만이 아니라 "데일리만", "월간만" 등 종류별 on/off 제공 → 알림을 아예 끄게 만드는 대신 원하는 것만 남기게 유도
  • 홈 위젯(추후) — 앱을 열지 않아도 오늘의 운세 3줄이 보이는 위젯으로 알림 피로 없이 습관 형성 대체 채널 확보
측정 지표 — 알림 클릭률(CTR)과 함께 "알림 끄기 비율"을 동시에 추적. CTR이 높아도 옵트아웃이 늘면 문구나 빈도가 피로를 유발하고 있다는 신호로 간주하고 빈도부터 낮춘다.
15 · Competitive Positioning

경쟁 포지셔닝

국내 운세 앱 시장은 단일 체계 특화형(사주 전문, 타로 전문, 별자리 전문)과 종합 포털형(여러 콘텐츠를 탭으로 나열)으로 나뉜다. 이 서비스는 "병합 해석"이라는 세 번째 축으로 포지셔닝한다.

유형대표 특징한계이 서비스의 차별점
사주 전문형 정통성·깊이 강조, 전문 용어 다수 사용 MBTI·별자리 세대(2030)에게 진입장벽 높음 사주 결과를 MBTI 언어로 번역해 전달 (전문 용어 최소화)
MBTI 콘텐츠형 가볍고 공유하기 좋은 카드형 콘텐츠 매일 반복 소비할 근거(시기성)가 약함 — 유형은 안 바뀌므로 MBTI를 "고정 성향"으로 두고 사주·별자리로 "오늘/이번 달"이라는 시기성을 결합
종합 포털형 사주·타로·별자리·MBTI를 탭으로 다 제공 탭마다 결과가 따로 놀아 사용자가 직접 종합해야 함 (이번 기획의 출발 문제의식) 탭이 아니라 하나의 8축 벡터로 병합, 일치·상충을 명시적으로 태깅해 사용자가 직접 종합할 필요 없음

핵심 메시지 (포지셔닝 문장)

"따로 보면 다른 말, 합쳐 보면 하나의 답." — 여러 운세를 이미 챙겨봤지만 결론을 못 내린 사용자에게 "정리해주는 서비스"로 각인.

초기 채널 가설

MBTI 커뮤니티(에타, 커뮤니티 카페)에서 "MBTI+사주 궁합이 다를 때 뭘 믿어야 하나" 류의 질문이 반복 발생 — 이 페인포인트를 겨냥한 콘텐츠 마케팅이 유료 전환 대비 CAC 효율 높을 것으로 가정, Phase 1 이후 검증 필요

16 · System Architecture

시스템 아키텍처

05 병합 엔진이 "무엇을" 계산하는지였다면, 여기서는 "어디서" 계산하는지를 정한다. 핵심 원칙은 결정론적 계산(오행·병합)은 클라이언트로 내리고, 외부 API 호출과 민감정보 저장만 서버가 책임진다 — 09 개인정보 섹션의 "로컬 우선 계산" 원칙을 그대로 시스템 경계로 옮긴 것.

CLIENT (브라우저/앱) 온보딩 입력 MBTI 16문항 · 생년월일 로컬 오행 계산기 간지→오행 변환 (결정론적) 로컬 병합 엔진 8축 정규화 · 가중 합성 · 태깅 문장 생성 & 렌더링 5탭 리포트 화면 암호화 로컬 캐시 SERVER API 게이트웨이 연/월/일 단위만 전달 암호화 저장소 생년월일 ↔ 계정ID 키 분리 토정비결 괘 데이터 384괘 해석문 라이브러리 타로 카드 데이터 78장 OSS 데이터셋 호스팅 요청 간지·괘·카드 반환 외부 (무료 API/OSS) KASI 음양력 API 공공데이터포털 · 무료 KASI 절기/특일 API 월주 절입시각 보정 Swiss Ephemeris (OSS) 별자리 위치 계산 참고 GET GET 서버 재요청 없이 당일 재조회
사용자 입력은 서버를 거쳐 연/월/일 단위로만 KASI API에 전달되고, 반환된 간지·괘·카드 데이터를 바탕으로 오행 계산과 8축 병합은 전부 클라이언트에서 수행된다. 결과는 로컬에 암호화 캐시되어 같은 날 재조회 시 서버 재요청이 없다.

계층별 책임

Client

계산 & 렌더링

오행 산출, 8축 정규화·가중합성·태깅, 문장 템플릿 선택(결정론적 시드), 5탭 UI. 민감정보는 요청 순간에만 메모리에 존재

Server

중개 & 저장

KASI API 프록시(키 보호, 캐싱), 계정/암호화 생년월일 저장, 토정비결·타로 정적 데이터 서빙, 알림 발송 스케줄링

External

공식 소스

KASI 음양력·절기 API(무료), Swiss Ephemeris 알고리즘(OSS) 참고. 둘 다 결과가 결정론적이라 서버단 캐싱 효과가 큼

캐싱 전략 — 간지·절기·괘 산출은 입력(생년월일)이 같으면 결과가 항상 같은 순수함수이므로, 서버는 "생년월일 → KASI 응답" 매핑을 영구 캐시할 수 있다(같은 날짜를 입력하는 다른 사용자끼리 캐시 공유 가능, 단 캐시 키에 개인 식별자는 포함하지 않음). 이 캐시 하나로 12번 섹션의 "API 장애 시 캐시 우선 조회" 요구사항이 대부분 해결된다.
17 · Design System

디자인 시스템

이 문서와 목업에서 실제로 쓰고 있는 토큰을 그대로 구현 기준으로 삼는다. 새로 정의하지 않고 이미 검증된 값을 표준화한다.

색상 토큰

Surface

--bg #FBF3E9 · --bg-raised #FFFCF7

Accent (테라코타)

--accent #C4552C · --accent-soft #FBE6D8

Semantic (일치/상충)

--good #5C7A4E · --warn #B4622A

Semantic 색은 accent와 분리된 별도 토큰이다 — 06 병합 엔진의 "일치/상충" 태그가 accent(브랜드색)와 섞이면 상태 정보가 브랜드 컬러에 묻히므로, good/warn 두 색만 상태 전용으로 예약한다.

타이포그래피

역할서체용도
DisplayNoto Serif KR제목(h1~h3), 브랜드 로고 — 사주·역학 문헌이 갖는 무게감을 목표. 본문에는 쓰지 않음
BodyNoto Sans KR (Pretendard 대체)본문, UI 라벨, 버튼 — 가독성 우선
DataJetBrains Mono점수(+1.6), 날짜, 축 이름, pill 라벨 — 수치·구조 정보임을 시각적으로 구분

컴포넌트 원칙

  • 카드(.card, .rcard) — 모든 콘텐츠 단위의 기본 컨테이너. 그림자는 얕게(--shadow), 테두리는 --line 1px로 구조를 잡고 그림자는 부가 효과로만 사용
  • pill — 상태 태그 전용(good/warn/accent). 리스트 항목 수 표기 등 상태가 아닌 정보에는 사용하지 않음
  • score bar — 8축 점수는 항상 -2~+2 스케일을 0~100% 너비로 환산해 동일한 시각 문법 유지, 색은 accent 고정(good/warn은 태그에서만 사용해 점수 막대와 상태 태그가 다른 신호로 혼동되지 않게 함)
  • 포커스 상태 — 모든 인터랙티브 요소(qopt, pbtn, 링크)에 accent 기반 outline 2px 명시, 목업 전체에 이미 적용됨
다크모드 동등성 — 라이트에서 테라코타(#C4552C)가 잉크 배경 위에서 갖는 대비를, 다크에서는 더 밝은 살구빛(#E8875A)으로 치환해 같은 채도감을 유지한다. 색만 반전하지 않고 각 테마에서 별도로 대비를 맞춘 값이므로, 향후 실제 구현체에서도 다크 팔레트를 라이트의 단순 반전으로 생성하지 말 것.
18 · API Spec

API 명세

16번 아키텍처의 "API 게이트웨이" 박스를 실제 엔드포인트로 구체화한다. 서버는 얇게 유지한다는 원칙에 따라 대부분 조회·프록시·저장 기능만 가지며, 계산 로직(오행·8축 병합)은 응답에 필요한 원재료만 내려주고 실제 합성은 클라이언트가 수행한다.

엔드포인트메서드역할비고
/v1/profile POST MBTI 16문항 응답 + 성별 + 생년월일(양/음력) + 출생시각(선택) 저장, 프로필 ID 발급 생년월일은 암호화 후 저장, 응답엔 프로필 ID만 반환(원문 에코 금지)
/v1/profile/{id} GET 저장된 MBTI 축별 점수·확신도 + 오행 원재료(간지) 조회 재로그인 시 클라이언트가 로컬 병합 엔진 재계산용으로 호출
/v1/calendar/convert GET KASI 음양력 API 프록시 — 연/월/일(+윤달 여부) → 간지·절기 반환 쿼리는 연/월/일 단위만 허용(이름·계정ID 미포함), 서버 영구 캐시 적용
/v1/calendar/solar-term GET KASI 절기/특일 API 프록시 — 해당 연도 절입시각 목록 반환 월주 산출 시 클라이언트가 절입시각과 생시 비교용으로 사용
/v1/tojeong/{gan-ji-hash} GET 연/월/일 간지 조합으로 산출된 토정비결 괘 번호에 해당하는 해석문 반환 정적 384괘 데이터 조회, 개인 식별자 불필요 — 간지 해시만으로 캐시 가능
/v1/tarot/draw POST 3카드 스프레드 뽑기, 카드 ID·정역방향 반환(서버 시드 난수) 무료 일 1회 제한은 이 엔드포인트에서 레이트리밋으로 강제
/v1/report/context/{id} GET 병합 엔진 입력에 필요한 모든 원재료(오행·괘·별자리 좌표·MBTI 확신도)를 한번에 묶어 반환 클라이언트가 5탭 렌더링 직전 1회 호출, 이후 8축 합성은 로컬에서 처리
/v1/notification/preference PATCH 데일리/월간/휴면 알림 종류별 on-off 설정 14번 섹션의 "전체 끄기 아닌 종류별 옵트아웃" 요구사항 반영
/v1/profile/{id} DELETE 계정 및 연결된 생년월일·리포트 캐시 즉시 파기 09번 섹션 "내 사주 정보 삭제" 원클릭 요구사항의 실 구현체

응답 스키마 예시 — /v1/report/context/{id}

{
  "profileId": "usr_8f2c...",
  "mbti": {
    "type": "ENTJ",
    "confidence": { "EI": 0.92, "SN": 0.71, "TF": 0.85, "JP": 0.54 }
  },
  "sajuElements": {
    "year": "丙子", "month": "辛卯", "day": "戊午", "hour": null,
    "hourKnown": false,
    "fiveElements": { "wood": 1, "fire": 2, "earth": 3, "metal": 1, "water": 0 }
  },
  "tojeong": { "hexagramId": 214, "monthlyHexagrams": [ /* 12개 */ ] },
  "zodiac": { "sun": "Gemini", "moon": "Pisces" },
  "solarTerms": { "year": 1996, "boundaries": [ /* 24절기 절입시각 */ ] },
  "meta": { "accuracyLabel": "시주 미포함 · 참고용", "cacheHitDate": "2026-08-21" }
}

병합(8축 정규화·가중합성·태깅)과 문장 생성은 이 응답을 입력으로 받아 클라이언트에서 수행 — 서버는 "원재료"만 제공하고 "해석"은 만들지 않는다는 16번 아키텍처 원칙이 스키마에도 그대로 반영된다.

인증 & 레이트리밋 — 전 엔드포인트 JWT 기반 인증(익명 프로필도 디바이스 바인딩 토큰 발급). /v1/tarot/draw/v1/report/context는 무료/유료 등급별 레이트리밋 차등 적용(13번 수익모델의 "일 1회 무료" 규칙을 여기서 강제).
19 · Timeline & Resourcing

일정 & 리소스 산정

11번 로드맵의 Phase 1~4를 실행 가능한 기간과 인력으로 환산한다. 병합 엔진과 QA 테스트셋 구축이 가장 시간이 걸리는 항목이므로 이 둘을 기준선으로 삼았다.

Phase기간주요 산출물필요 인력
Phase 1
MVP
6주 MBTI 16문항 온보딩, KASI API 연동, 자체 오행 룰엔진, 오늘/이번달 운세 2종, 개인정보 최소수집·삭제 플로우 FE 1 · BE 1 · 콘텐츠 에디터(운세 카피) 0.5
Phase 2
병합 고도화
5주 8축 병합 엔진 정식화, 6개월 흐름/고민상담 탭, QA 회귀 테스트셋 200케이스 구축 및 CI 편입 FE 1 · BE 1 · 도메인 자문(명리학) 0.3 · QA 0.5
Phase 3
타로 & 개인화
4주 타로 탭, 규칙 기반→LLM 문장 생성 전환(콘텐츠 반복률 트리거 기준 적용), 알림 시스템 FE 1 · BE 1 · 콘텐츠 에디터 0.5
Phase 4
궁합
3주 2인 병합 궁합 스코어, 동의 플로우, 유료 결제 연동 FE 1 · BE 1

병목 구간

  • Phase 1의 오행 룰엔진 — 천간지지 조견표·상생상극 로직은 코드량보다 도메인 검증이 병목. 명리학 자문 없이 시작하면 QA(Phase 2)에서 대량 재작업 위험
  • Phase 2의 QA 테스트셋 — 10번 섹션의 200케이스 샘플링은 자문 인력 없이는 FE/BE가 직접 검증 불가 → Phase 1 착수 시점부터 도메인 자문 컨택 필요(리드타임 확보)

병렬화 가능 구간

  • 17번 디자인 시스템(토큰·컴포넌트)은 이미 이 문서에서 확정되었으므로 Phase 1 착수와 동시에 FE가 바로 구현 가능 — 별도 디자인 단계 불필요
  • 18번 API 스키마가 고정되어 있어 Phase 1부터 FE/BE 목업 응답 기준으로 병행 개발 가능(BE 응답 완성 전 FE는 스키마 예시로 목업 데이터 사용)
총 기간 — Phase 1~4 순차 진행 시 약 18주(4.5개월), 도메인 자문 리드타임을 고려하면 Phase 1 착수 최소 2주 전 자문 컨택을 권장한다. Phase 3(LLM 전환)은 11번 섹션의 재노출률 지표가 임계치를 넘는 시점까지 유예해 우선순위를 조정할 수 있다.
20 · Sentence Generation Rules

문장생성 규칙 명세

05 병합 엔진은 "8축 점수 + 일치/상충 태그"까지 만들고, 11 콘텐츠 뱅크는 "문장이 반복되지 않게 변주하는 법"을 다뤘다. 그 사이, 점수가 실제로 어떤 문장으로 변환되는지의 규칙 자체가 비어 있었다 — 이건 FE/BE 모두 아니고 "문장 생성 로직"을 담당할 계층의 명세로, 지금 정해두지 않으면 설계 중 개발자가 임의로 정하게 된다.

Step 1 — 점수 구간 → 강도 등급

점수 구간강도 등급어휘 톤
+1.5 ~ +2.0매우 긍정단정형 + 적극 권유 ("~하기 좋은 날")
+0.5 ~ +1.4긍정단정형 ("~한 흐름이다")
−0.4 ~ +0.4중립관찰형 ("~한 경향이 있다")
−1.4 ~ −0.5주의완곡 권고형 ("~에 유의하면 좋다")
−2.0 ~ −1.5경고직접 권고형 ("~는 피하는 편이 낫다"), 단 공포 조성 어휘 금지

Step 2 — 태그별 문장 구조 템플릿

일치(good) 축

[체계 근거] + [강도 등급 어휘] + [행동 제안]

예: "사주와 별자리가 모두 관계운 상승을 가리킨다. 오늘은 미뤄둔 연락을 먼저 건네보자."

상충(warn) 축

[주된 신호, 60%+ 비중] + "다만" + [반대 신호] + [범위 좁히는 조건절]

예: "재물운은 전반적으로 순조롭다. 다만 지출 충동이 커질 수 있는 시기이니, 큰 지출만 하루 미뤄보자."

상충 태그의 "주된 신호"는 06 병합엔진의 가중치(사주35%·토정30%·MBTI20%·별자리15%)를 그대로 따른다 — 즉 상충 시 항상 가중치가 더 높은 체계 쪽이 문장의 주어가 되고, 낮은 쪽이 "다만" 뒤에 붙는다. 이 규칙 하나로 매번 다른 순서로 뒤섞이는 문장을 방지한다.

Step 3 — MBTI 어투 필터 (최종 패스)

Step 1~2로 만들어진 문장에 마지막으로 MBTI 축 하나(T/F)만 어투 필터로 적용한다. 축 전체를 어투에 쓰지 않는 이유는 4비트를 다 반영하면 조합 폭발로 템플릿 관리가 불가능해지기 때문 — T/F 한 축만 "직설/완곡"의 대표 신호로 채택.

MBTI 축필터변환 예
T 우세결과·원인을 먼저, 조언은 짧게"지출 충동이 커진다. 큰 지출은 미루자."
F 우세공감 어구 선행, 조언은 부드럽게"들뜬 마음에 지출이 늘 수 있는 시기예요. 큰 지출은 하루만 미뤄볼까요?"
담당 & 산출물 — 이 규칙표는 콘텐츠 에디터(운세 카피 담당)가 Step 1~3 템플릿을 축별 12개 이상(11번 기준) 실제로 작성하는 작업 명세서 역할을 겸한다. Phase 1 착수 시 이 표를 그대로 템플릿 작성 브리프로 전달한다.

실제 작성본 — 위 규칙을 8축 전체에 적용해 작성한 문장 템플릿 뱅크를 별도 문서로 완성했다. → 문장생성 템플릿 뱅크 v2.0 보기 — 8축 × 5강도 × 4개 어투(T직설·T완곡·F캐주얼·F권유) 기본 문장 160개, 상충 공식 4세트(전축 공용), 리스크 축 부호 역전 주의사항, 그리고 매번 같은 어투로 굳지 않도록 하는 가중 로테이션 로직까지 포함된 Phase 1 착수 즉시 사용 가능한 실행본. F권유 어투는 신한라이프 운세 서비스의 "~해보세요/~기를 바라요" 존대 권유형 구조를 벤치마킹해 우리 타깃(20~30대)에 맞게 격식을 낮춰 이식했다.
21 · Screen Spec

화면 명세

08 목업은 느낌을 확인하는 용도였다. 실제 개발 착수에는 각 화면의 필수/선택 필드, 유효성 규칙, 빈 상태(empty state) 카피가 필요하다.

화면필드 & 검증 규칙빈 상태 / 예외 카피
MBTI 16문항 5점 척도, 전 문항 필수. 중도 이탈 시 로컬에 임시 저장(재방문 시 이어하기) 이어하기 배너: "지난번 8번 문항까지 답하셨어요, 이어서 할까요?"
기본 정보 성별(선택, "밝히지 않음" 포함) · 양/음력 토글 필수 · 생년월일 필수(캘린더 picker만, 자유입력 금지 — 12번 예외처리 반영) · 출생시각 선택 음력 선택 시 해당 연도 윤달 존재하면 "윤달이었나요?" 토글 자동 노출
로딩 최대 대기 8초 기준. 8초 초과 시 자동으로 12번 섹션의 "지연 중" 안내로 전환 "음양력 변환 중...(공공데이터포털 응답을 기다리고 있어요)" — 실패 원인 짐작 가능하게
오늘의 운세 8축 중 변동폭 상위 2~3개만 노출, 나머지는 "더보기"로 접힘 신규 가입 당일(사주 데이터 캐시 없음)엔 "첫 리포트를 만들고 있어요" 스켈레톤 노출
고민상담 재물/성공/애정 중 단일 선택, 무료 월 1회 초과 시 유료 CTA로 자연 전환(13번 반영) 이번 달 이미 사용함: "이번 달 무료 상담은 다 쓰셨어요, 다음 상담은 9월 1일에"
타로 3카드 순서 고정(과거·현재·미래), 카드 중복 방지 로직 일 1회 소진 시: "오늘의 카드는 이미 확인하셨어요, 내일 다시 만나요"
22 · Domain Data Sourcing

오행 상수표 조달 계획

04 데이터 소스에서 "천간지지 조견표 + 오행 상생상극표를 자체 개발"이라 명시했지만, 그 원자료 자체는 개발자가 창작할 수 있는 게 아니라 명리학 도메인 지식이다. 설계 착수 전에 "누가, 언제, 어떤 형식으로 주는지"를 확정해야 19번 일정의 병목(Phase 1 오행 룰엔진)이 실제로 풀린다.

필요한 원자료 목록

  • 60갑자 조견표 — 연/월/일/시주 간지 산출용 순환표
  • 오행 배속표 — 천간 10자·지지 12자 각각의 오행(목화토금수) 매핑
  • 상생상극 관계표 — 오행 간 강화/억제 관계, 부족·과다 판정 임계값
  • 십성(十星) 매핑표 — 일간 기준 다른 간지와의 관계(재성·관성 등), 재물·성공 축 산출 근거
  • 토정비결 384괘 원문 해석 뼈대 — 괘별 원의(原義) 요약, 이후 11번 콘텐츠 뱅크의 문장 변주 기반 자료

조달 방식 & 확인 사항

  • 담당 — 19번 리소스 산정에서 배정한 "도메인 자문(명리학) 0.3 FTE"가 1차 산출
  • 형식 — 자문가 원고(표) → 콘텐츠 에디터가 20번 문장생성 규칙표에 맞는 구조로 재정리 → 개발자가 JSON/DB 스키마로 변환
  • 저작권 확인 — 토정비결 원문은 공유 저작물이지만 해석문 표현 자체는 자문가 창작물이므로 활용 범위(상업적 이용, 재배포 여부)를 계약서에 명시해야 함 — 법무 확인 필요
  • 착수 시점 — Phase 1 착수 최소 2주 전 컨택(19번 명시), 원고 납품까지 별도 리드타임 필요하므로 실제로는 Phase 1 착수 3~4주 전 컨택 권장으로 상향
설계 착수 전 확인할 것 — 이 원자료가 없으면 08 목업 수준의 "예시값"으로는 개발이 진행되지만, 10번 QA(만세력 대조 200케이스)는 원자료 없이는 애초에 시작할 수 없다. 즉 UI/API 설계는 지금 바로 진행 가능하지만, 오행 로직 구현은 자문 원고 없이 착수하면 전면 재작업 위험이 크다는 걸 설계 착수 시점에 팀 전체가 인지해야 한다.
23 · North Star KPI

북극성 지표(KPI)

11(콘텐츠 재노출률), 14(알림 CTR/옵트아웃)처럼 부분 지표는 이미 정의했다. 여기서는 그 부분 지표들이 최종적으로 무엇을 위한 것인지 상위 목표를 하나로 묶는다 — 설계 단계에서 우선순위 충돌이 생겼을 때 이 지표가 판단 기준이 된다.

North Star

주간 활성 병합 열람율

가입자 중 "오늘의 운세를 주 4회 이상 연 사용자" 비율. 병합 서비스의 핵심 가치(매일 챙겨볼 이유)가 실제로 작동하는지 보여주는 단일 지표

선행 지표

온보딩 완료율

MBTI 16문항 + 기본정보 입력을 끝까지 마치는 비율. 21번 "이어하기" 기능의 효과를 직접 측정

후행 지표

유료 전환율

13번 수익모델의 "궁금증 다음에 CTA" 설계가 실제로 작동하는지 확인하는 최종 결과 지표

지표Phase 1 목표(가설)측정 방식
온보딩 완료율≥ 70%MBTI 응답 시작 대비 기본정보 제출 완료 비율
주간 활성 병합 열람율≥ 35%가입 2주차 기준 코호트 추적
콘텐츠 재노출률(11번)< 15%재방문자의 7일 내 동일/유사 문장 재노출 비율
알림 옵트아웃률(14번)< 8%알림 종류별 on→off 전환 비율
유료 전환율≥ 3%가입 30일 내 최초 유료 결제 비율
설계 단계 활용법 — 화면/기능 우선순위가 충돌할 때(예: 21번 화면 명세 중 어떤 예외 케이스를 먼저 다듬을지) "이 작업이 온보딩 완료율과 주간 활성 열람율 중 무엇에 더 기여하는가"를 판단 기준으로 삼는다. 수치 목표는 Phase 1 실측 후 재보정한다.
24 · MBTI × Fortune Action Layer

MBTI 행동조언 결합 로직

지금까지 MBTI는 두 층에만 관여했다 — 06 병합엔진에서 8축 점수에 20% 가중치로, 20번 문장뱅크에서 T/F 어투 필터로. 둘 다 결과의 색깔을 바꿀 뿐, 같은 점수를 받았을 때 무엇을 하라고 말할지는 16유형이 다 똑같았다. 여기서는 세 번째 층 — 행동 조언 층을 추가해, 재물운이 나쁘게 나왔을 때 ISFP에게는 "지출을 자제하라"고, ENTJ에게는 "이미 세운 계획을 재점검하라"고 서로 다르게 말하도록 만든다.

왜 16유형 전수 작성이 아니라 "기능축 조합"인가

8축 × 5등급 × 16유형을 전부 채우면 640셀 — 20번 문장뱅크(160셀)의 4배다. 대신 MBTI 4비트를 독립적인 행동 성향 4개로 분해해 각각에 "취약점 보정 규칙"을 붙이고, 최종 조언 문장은 이 규칙들을 조합해 런타임에 생성한다. 콘텐츠 에디터는 4비트 × 8축 = 32개 규칙만 작성하면 되고, 16유형 조합은 자동으로 나온다.

비트행동 성향강점 축 (이 축이 긍정일 때 조언에 자신감 부여)취약 축 (이 축이 부정일 때 조언에 안전장치 부여)
E 외부 행동형 관계운·성공/커리어 — 긍정 시 "적극적으로 표현/제안하라" 리스크 — 부정(변동성 큼) 시 "혼자 판단 말고 주변에 먼저 알리고 움직여라"
I 내부 정리형 자기성장·안정성 — 긍정 시 "혼자만의 시간에 정리/학습을 밀도 있게" 관계운 — 부정 시 "무리하게 사람 만나지 말고 신뢰하는 소수에게만 연락"
S 구체 실행형 재물운·성공/커리어 — 긍정 시 "구체적 숫자·일정으로 바로 실행" 애정운 — 부정 시 "감으로 판단 말고 상대의 실제 말과 행동을 다시 확인"
N 가능성 탐색형 자기성장·애정운 — 긍정 시 "새로운 가능성·관계를 넓게 탐색" 재물운 — 부정 시 "직관적 투자 대신 데이터로 한 번 더 검증"
T 논리 우선형 성공/커리어 — 긍정 시 "논리적 근거로 밀어붙여라" 관계운·애정운 — 부정 시 "옳고 그름보다 상대 감정을 먼저 확인"
F 관계 우선형 관계운·애정운 — 긍정 시 "마음을 적극적으로 표현" 재물운·성공/커리어 — 부정 시 "정에 이끌린 결정 대신 조건을 한 번 더 따져보기"
J 계획 우선형 안정성·재물운 — 긍정 시 "세운 계획을 그대로 실행" 리스크 — 부정(변동성 큼) 시 "계획이 틀어질 걸 전제로 대안(플랜B)을 미리 정해두기"
P 즉흥 대응형 리스크 — 부정(변동성 큼)이어도 "유연함이 강점이니 변화 자체를 기회로 활용" 재물운·안정성 — 부정 시 "즉흥적 지출·결정을 하루 미루는 강제 규칙 적용"

조합 생성 규칙

Step 1

해당 축의 관련 비트 선택

8축마다 위 표에서 "이 축을 강점/취약 축으로 갖는 비트"가 정해져 있다(예: 재물운 → S/N이 강점·취약, J/P가 강점·취약 후보). 사용자 MBTI에서 해당 비트값을 가져온다.

Step 2

점수 부호로 강점/취약 분기

축 점수가 긍정(+)이면 "강점 축" 조언 문장을, 부정(−)이면 "취약 축" 조언 문장을 20번 문장뱅크의 뼈대 문장 뒤에 덧붙인다. 중립(−0.4~+0.4)이면 행동조언 층을 생략하고 기본 문장만 사용한다.

Step 3

비트 충돌 시 우선순위

한 축에 관련 비트가 2개(예: 재물운은 S/N과 J/P 둘 다 관련)면, 06번 병합엔진에서 저장한 축별 MBTI 확신도가 더 높은 비트를 채택한다. 확신도가 비슷하면(차이 10%p 이내) 두 조언을 접속사로 이어 붙인다.

Step 4

어투 필터는 그대로 마지막에 적용

완성된 [뼈대 문장 + 행동조언 문장]에 20번 Step 3의 T/F 어투 필터를 마지막으로 씌운다. 즉 행동조언 층은 어투보다 먼저 정해지는 "내용" 결정 단계다.

예시 — 재물운 −1.2 (주의 등급), 사용자 ENTJ

단계내용
관련 비트재물운 → S/N, J/P 둘 다 관련. ENTJ는 N, J
부호 분기점수 부정(−) → 취약 축 조언 채택: N의 취약("데이터로 검증"), J의 강점("계획대로 실행") — 상충하므로 확신도 비교
확신도 비교J/P 확신도 88% > S/N 확신도 71% → J의 문장 채택
뼈대 + 행동조언"지출이 느는 시기다." (20번 뼈대) + "다만 이미 세운 예산 계획을 흔들 필요는 없다. 계획을 다시 점검하는 선에서 대응하자." (J 강점 조언)
어투 필터(T)ENTJ는 T이므로 T-직설 최종 적용, 위 문장 그대로 유지

같은 −1.2점을 받은 ISFP라면: S(강점, "구체적 숫자로 바로 파악")와 P(취약, "즉흥 지출 하루 미루기") 조합 → "지출이 늘 수 있는 시기예요. 이번 주 카드 내역을 한번 구체적으로 확인해보고, 갑자기 사고 싶은 게 생기면 하루만 미뤄봐요." (F-캐주얼 어투) — 같은 점수, 다른 조언이 실제로 만들어진다.

담당 & 산출물 — 이 표(비트 8개 × 강점/취약 축)가 콘텐츠 에디터의 새 작업 브리프다. 20번 문장뱅크(160셀)에 이 32개 조합 규칙만 더하면 실질적으로 16유형 전체의 개인화된 조언이 자동 생성되므로, 원래 우려했던 640셀 전수 작성 없이도 목표(성향×운세를 진짜로 섞기)를 달성한다.
QA 필요 — 8개 비트 × 8축의 강점/취약 매핑은 지금 이 문서에서 설계자가 상식적으로 배정한 초안이다. 실제 사용자 반응(어떤 조언이 "내 얘기 같다"고 느끼는지)을 Phase 2 이후 A/B 테스트로 검증하고, 필요시 매핑을 조정하는 루프를 10번 QA 섹션의 콘텐츠 검증 항목에 추가해야 한다.
25 · Long-form Expansion

긴 글 확장 — 오늘의 운세

지금까지 20/24번의 문장뱅크는 화면에 들어갈 "뼈대 문장" 1~2개였다. 신한라이프처럼 실제 서비스가 되려면 이 뼈대 위에 총론 → 축별 심층 해설 → 근거 → 종합 조언의 살을 붙여야 한다. 오늘의 운세(가장 자주 열람되는 화면)를 기준으로 긴 글 구조를 확정하고, 그 구조로 실제 리포트 한 편을 완성했다.

긴 글의 5단 구조

① 오프닝 총론

오늘을 관통하는 한 문장

8축 중 가장 지배적인 흐름 하나를 먼저 던지고, 오늘 날짜의 사주·절기적 의미(일진)를 1문장 덧붙여 "오늘이 왜 특별한 날인지"의 근거를 먼저 제시한다.

② 축별 심층 해설

상위 3축 × 3문단

변동폭이 큰 3축을 골라 각각 [20번 뼈대 문장] → [24번 MBTI 행동조언] → [근거: 어떤 체계가 이 신호를 냈는지]를 한 문단으로 엮는다. 신한라이프의 "재물/애정/건강" 테마별 문단 구조를 8축 체계로 대체.

③ 병합 신뢰 코멘트

일치/상충을 독자에게 설명

06번 병합엔진의 태그를 그대로 문장으로 노출 — "왜 이 조언을 믿어도 되는지"(일치) 또는 "왜 조심스럽게 말하는지"(상충)를 독자가 이해할 수 있게 짧게 짚어준다. 다른 운세 서비스에 없는 이 서비스만의 차별 문단.

④ 마무리 조언 & 오늘의 실천

행운 아이템 + 한 줄 실천

오행 부족분을 보완하는 색상·방향·아이템(04번 데이터 소스의 오행 계산 결과 활용)과, 오늘 하루 안에 실행 가능한 구체적 행동 1개로 마무리해 "읽고 끝"이 아니라 "읽고 행동"으로 연결한다.

완성본 예시 — ENTJ · 1996년생 · 2026년 8월 21일

2026.08.21 금요일 일치 신호 3개 ENTJ · 쌍둥이자리

오늘은 '움직이는 사람에게 유리한 날'입니다. 사주로는 일간 무토(戊土)가 힘을 받는 임인월(壬寅月)의 흐름이 이어지는 날이고, 절기상으로는 입추가 지나 가을 기운이 조금씩 스며드는 시기입니다. 여름 내내 벌여둔 일들을 하나씩 정리하고 매듭짓기에 좋은 흐름이 사주 전반에 깔려 있고, 오늘 하루만 놓고 보면 특히 관계와 성공 축에서 뚜렷한 상승세가 감지됩니다.

관계운 — 먼저 건네는 말이 오늘의 열쇠

중요한 대화를 시작하기 좋은 시기입니다. 먼저 연락을 건네보세요. 사주 비겁운과 달의 별자리(물병자리) 위치가 모두 소통의 확장을 가리키고 있어, 오늘 나누는 대화는 평소보다 더 좋은 방향으로 흘러갈 가능성이 큽니다. ENTJ 특유의 직진하는 화법이 오늘은 오히려 강점으로 작용합니다 — 에둘러 말하기보다, 하고 싶은 이야기를 정면으로 꺼내보세요. 다만 상대의 반응을 살필 여유는 남겨두는 편이 좋습니다. 논리로 설득하려 하기보다, 오늘만큼은 상대가 무엇을 원하는지 먼저 물어보는 쪽이 관계를 더 단단하게 만듭니다.

근거 — 사주(비겁운 상승) · 별자리(달의 위치, 소통궁 강화) · MBTI(E축 강점 활용) 세 체계가 모두 같은 방향을 가리키는 일치 신호입니다.

성공/커리어 — 결과가 눈에 보이기 시작하는 시기

성과가 드러나는 시기입니다. 제안이나 지원을 적극적으로 밀어붙여도 좋습니다. 사주 관성이 힘을 받는 흐름이라 그동안 준비해온 일이 평가로 이어질 가능성이 높습니다. ENTJ의 J축(계획 우선형)이 강점으로 작용하는 지점이기도 합니다 — 지금까지 세워온 계획을 그대로 밀어붙이는 것이 가장 좋은 선택입니다. 새로운 방식을 시도하기보다, 이미 검증된 자신의 방식을 자신 있게 보여주는 하루로 만들어보세요.

근거 — 사주(관성 상승) · 토정비결(이달 소괘, 확장 암시) 두 체계가 일치하며, 별자리는 특별한 신호가 없어 중립입니다.

재물운 — 좋은 흐름이지만 지출엔 한 박자 쉬어가기

재물운은 전반적으로 순조로운 흐름입니다. 다만 지출 충동이 커질 수 있는 시기이니, 큰 지출만 하루 미뤄보는 게 좋습니다. 사주 재성과 토정비결 월운은 재물의 순환을 긍정적으로 보고 있지만, 별자리(금성 각도)는 소비 확대를 경고하고 있어 방향이 완전히 같지는 않습니다. ENTJ는 J축의 계획성이 강점이니, 오늘 갑자기 마음이 동하는 지출이 있다면 이미 세운 예산 계획과 한 번만 비교해보는 습관이 도움이 됩니다. 계획에 없던 지출이라면, 결정을 내일로 미루는 것만으로도 충분합니다.

근거 — 사주·토정비결은 긍정, 별자리는 주의로 갈리는 상충 신호입니다. 비중이 더 큰 사주·토정비결 쪽을 중심에 두고, 별자리 신호는 "완전히 다른 이야기"가 아니라 "같은 흐름 안의 작은 변수"로 좁혀 해석했습니다.


오늘의 실천

오행상 오늘은 화(火)의 기운이 다소 부족한 날입니다. 붉은 계열의 소지품을 하나 곁에 두거나, 남쪽 방향을 등지고 중요한 대화를 나누면 부족한 기운을 보완하는 데 도움이 됩니다. 오늘 하루 실천 하나만 고른다면 — 먼저 연락하고 싶었던 사람에게 오전 중 메시지를 보내보세요. 관계운과 성공운이 함께 상승하는 오늘, 그 한 번의 연락이 생각보다 멀리까지 이어질 수 있습니다.

구조의 재사용성 — 이 5단 구조는 21번 화면 명세의 "오늘의 운세" 화면에 그대로 적용되며, ②축별 심층 해설의 문단 뼈대는 20번(문장뱅크)+24번(MBTI 행동조언)을 그대로 조합하고 근거 문장만 추가하면 되므로 새로운 콘텐츠 자산을 만드는 게 아니라 기존 것을 문단으로 조립하는 작업이다. 이번 달 운세·6개월 흐름·고민상담·타로 4개 출력물도 같은 5단 골격(총론→심층해설→병합코멘트→마무리)을 축소·변형해 적용할 수 있다.
분량 관리 — 위 예시는 공백 포함 약 950자다. 11번 콘텐츠 뱅크의 "반복 방지" 원칙이 긴 글에서는 더 중요해진다 — 문단이 길수록 반복이 체감되는 부분(근거 설명 문구 등)도 늘어나므로, 근거 문장(예: "사주(비겁운 상승)·별자리(달의 위치)···")도 20번 문장뱅크처럼 별도의 변주 세트로 관리해야 매일 읽어도 "또 그 표현이네"가 되지 않는다. 이 부분은 아직 뼈대만 있고 변주 세트는 미작성 — 다음 작업 후보.
26 · Roadmap & Risk

단계별 로드맵

Phase 1

MVP

MBTI 16문항 + 생년월일 입력, KASI 음양력 API 연동, 자체 오행/토정비결 룰엔진, 오늘/이번달 운세 2종만 출시. 개인정보 최소수집·삭제 플로우 기본 반영

Phase 2

병합 고도화

8축 병합 엔진 정식 적용, 6개월 흐름 + 고민상담 탭 추가, 별자리(달의 별자리) 정밀도 개선. QA 회귀 테스트셋 구축 및 CI 편입

Phase 3

타로 & 개인화

타로 탭 출시, 문장 생성을 규칙 기반 → LLM 기반으로 전환(교차 해석 few-shot), 알림/공유 기능

Phase 4

궁합(2인 병합)

상대방 생년월일 입력(동의 체크 필수) → 두 사람의 8축 벡터를 교차 비교해 궁합 스코어 산출. 애정 고민 탭에서 자연 연결되는 유료 확장 기능으로 설계

핵심 리스크 — (1) 절기 기준 월주 계산 오류 시 사주 전체가 틀어짐 → KASI 절기 API 필수 연동, QA 섹션의 경계일 테스트로 상시 방어. (2) 문항 기반 MBTI가 공식 검사와 다를 수 있음 → "간이 검사"임을 명시하고 정식 결과 재입력 옵션 제공. (3) 상충 신호를 "부연 문장"으로 완충하는 로직이 부실하면 결과가 모순되게 읽힘 → 상충 태그 발생 시 반드시 QA 리뷰. (4) 궁합 기능은 제3자(상대방) 개인정보를 다루므로 동의 체크 없이는 절대 출시하지 않음.