사용자가 자신의 취향을 직접 말하는 대신, 장면을 보고 선택하게 합니다. 그 선택이 쌓이는 과정을 분석해 본인이 인지하지 못했던 선호 패턴을 찾아내고 하나의 결과로 시각화합니다.
기존 취향 테스트는 진술된 선호를 묻습니다. 이 서비스는 반대로 접근합니다. 상황과 장면을 보여주고 선택하게 한 뒤, 반복되는 선택에서 패턴을 추출합니다. 최종 결과에서 사용자가 느껴야 하는 것은 "맞네"가 아니라 "내가 이런 걸 좋아했구나"입니다.
코가 높은 사람이 좋아요?
서점에서 우연히 같은 책을 향해 손을 뻗었습니다. 가까워진 순간 어떤 디테일이 가장 먼저 기억에 남을 것 같나요?
LLM 애플리케이션을 만들 때 모든 판단을 모델에 맡기면 느려지고 비싸집니다. 결정론적으로 처리해도 되는 것과 모델이 필요한 것을 나누고, 그 기준을 문서에 남겼습니다.
질문 번호 · 기본 설정 · 선택지의 기본 가중치 · 문항 전환 시점 · 이미지 생성 시점 · 데이터 저장 · 상태 갱신
답변의 의미 추출 · 표현에서 특징 추론 · 모순과 불확실성 탐색 · 다음 질문 목표 선택 · 자연스러운 질문 생성 · 최종 분석 문장 생성
이렇게 나누면 응답 속도와 API 비용을 관리하면서 개인화 수준은 유지할 수 있습니다.
고정된 20문항을 순서대로 던지는 방식이 아닙니다. 현재까지의 응답에서 확신도가 낮은 축과 서로 충돌하는 선택을 찾아, 다음에 무엇을 확인할지 에이전트가 정합니다.
눈빛은 따뜻함이 높고 전체 인상은 차분함이 높은데 강한 인상도 반복해서 선택된다면, 강한 인상과 따뜻한 인상의 조합을 다시 확인할 필요가 있다고 판단합니다.
LangGraph의 State는 AI가 판단하는 곳이 아니라 현재까지의 기억을 보관하는 장소로 설계했습니다. 답변이 들어오면 분석 후 상태를 갱신하고, 다음 질문을 만들 때 필요한 상태만 모델에 전달합니다.
user_profile · answers · appearance · personality · relationship · current_goal · target_axes · current_question · portrait_prompt
사용자 답변 → extractor → State 갱신 → planner / agent → 다음 측정 목표 → question_writer → 다음 질문
결과를 만들 때 인상과 생김새의 비중을 75 대 25로 두었습니다. 다만 이 수치는 검증된 값이 아니라 설계 가설이며, 문서에도 그렇게 표기했습니다. 실제 서비스에서는 고정 비율을 모두에게 적용하기보다 질문에서 반복적으로 나타난 개인별 선호를 프로필로 만들도록 설계했습니다.
성별 정보도 특정 지향을 판정하기 위한 것이 아니라 이성애를 기본값으로 강제하지 않기 위한 입력으로 두었습니다. 같은 성별을 선택해도 동일한 자기 발견 구조가 적용됩니다.
지금까지 선택해온 것이 하나의 결과 이미지로 만들어집니다. 너무 완벽하면 현실감이 사라지고 너무 평범하면 의미가 약해지는 지점을 조정했습니다.
"단순히 잘생긴 사람보다 선명한 첫인상과 웃을 때의 반전에 반복적으로 끌렸다"처럼 선택의 경향을 문장으로 돌려줍니다.
"처음에는 차분한 쪽을 골랐지만 세부 장면에서는 계속 다른 쪽을 선택했다" — 이 격차가 이 서비스의 핵심 경험입니다.