Leaf 성장일지 #1 – ‘가볍게 쓰는 가계부’를 설계한다는 건
기획자 입장에서 서비스 아이디어가 떠오르는 순간은 대부분 단순한 문제의식에서 시작됩니다.
Leaf도 마찬가지였습니다.
요즘 가계부 앱을 보면 입력 방식이 너무 복잡하거나,
기능은 많은데 내가 진짜 궁금한 건 금방 알 수 없는 경우가 많았습니다.
특히 정작 가장 자주 하는 말은
“점심으로 8천 원 썼어.”
“이번 달 식비 얼마나 남았더라?”
이런 자연스러운 질문들인데,
대부분의 앱은 이런 흐름을 제대로 받아주지 못하더군요.
그래서 시작한 게 Leaf입니다.
사용자가 말로 지출을 입력하고,
앱이 그걸 이해하고 정리해주는 대화형 재무 파트너.
“가계부는 무겁지만, Leaf는 가볍다.”
라는 슬로건도 그렇게 나오게 되었고요.
‘가볍다’는 건 기능이 없다는 뜻이 아니다
초기에는 단순히 자연어 입력 기반 가계부라고만 생각했습니다.
입력창 하나 만들고, 서버에서 지출 항목을 분류해 저장하면 되는 간단한 구조라고 여겼습니다.
그런데 막상 설계를 시작하자
'가볍게 쓰이기 위한 무거운 고민들'이 시작되더군요.
- 사용자가 Leaf에 처음 접속했을 때 어떤 문구로 인사해야 할지
- 아무 기록이 없을 때, 화면은 어떤 흐름을 가져야 할지
- 예산을 알려줄 때 숫자만 보여줄지, 아니면 하루 사용 가능 금액까지 계산해서 보여줘야 할지
- 모바일 환경에서 키보드에 입력창이 가려지는 건 어떻게 처리할지
- Leaf는 언제 말을 하고, 언제 조용히 있어야 할지
하나하나가 단순한 UI 설계가 아니라
사용자 흐름 전체에 영향을 주는 결정이 되었습니다.
‘대화’라는 이름의 인터페이스, 그 안의 기술적 고민
Leaf의 핵심은 대화입니다.
하지만 이 대화라는 건 단순히 메시지를 주고받는 수준이 아닙니다.
사용자가 “식비 얼마 남았지?”라고 물으면
- 현재 날짜 기준으로 남은 일 수
- 식비 예산 총액과 현재 지출
- 하루 평균 사용 가능 금액
- 예산 초과 위험 여부
이런 데이터들이 연결되어야 하고,
그걸 마치 사람이 말하듯 자연스럽게 설명해주는 구조가 되어야 합니다.
이런 흐름을 정리하다 보니,
단순히 ‘말풍선 UI’가 아니라,
‘재무 상황을 함께 정리해주는 동반자’라는 콘셉트가 자연스럽게 자리잡더군요.
그리고 예상치 못한 고려사항들
개발을 진행하면서 예상하지 못했던 고려사항들도 꽤 있었습니다.
1. 모바일 환경에서 입력창 위치 고정
모바일에서 가상 키보드가 뜰 때 입력창이 밀리는 현상을 방지하기 위해
scrollIntoView(), viewport height 조정, position: absolute 대응 등
CSS만으로는 해결되지 않는 구조적 처리가 필요했습니다.
2. 세션 유지 – ‘끊기지 않는 대화’를 위해
Leaf는 ‘대화’가 핵심인 서비스이기 때문에
세션이 자주 만료되면 몰입이 깨지게 됩니다.
그래서 Access Token과 Refresh Token을 활용한 구조로
최대한 끊김 없는 세션 유지를 목표로 설계 중입니다.
지금 내가 고민하고 있는 것들
LeafChat만 해도 다음과 같은 고민이 있습니다.
- 채팅 세션을 단일 채팅방으로 유지할 것인지,
아니면 Gemini나 ChatGPT처럼 히스토리를 세션 단위로 분리할 것인지 - 사용자가 자주 묻는 질문을 미리 등록해두고 바로 사용할 수 있도록 구성할 것인지
- ‘예산 응답’에 포함되는 정보의 수준을 어느 정도로 잡을 것인지
- Leaf의 응답 말투와 정보 전달 방식은 어떻게 유지할 것인지
이러한 고민을 하나씩 풀어나가는 과정에서,
기획자에서 설계자로의 전환이 자연스럽게 이뤄지고 있습니다.
정리하며
Leaf는 단순한 아이디어에서 시작되었지만,
그 ‘단순함’을 실현하기 위해선 오히려 더 정교한 설계가 필요하다는 걸 실감하고 있습니다.
단순히 지출을 입력받고 예산을 보여주는 서비스가 아니라,
사용자의 소비 패턴을 이해하고 조율해주는 도우미가 되려면
그만큼 많은 흐름과 예외를 고려해야 합니다.
그리고 저는 지금,
그 ‘복잡한 단순함’을 만드는 과정 한가운데에 있습니다.