장소가 적을 때와 많을 때, 쏙핀의 저장 방식을 다르게 만든 이유
목록 저장에서 시작해 카드 저장을 거쳐, 장소 수와 사용자 설정에 따라 저장 흐름을 나눈 쏙핀의 프론트엔드·데이터 처리 기록.
2026년 8월 30일
쏙핀은 인스타그램 링크 하나에서 장소를 추출하고, 사용자가 원하는 쏙(컬렉션)에 저장하는 앱이다. 처음에는 “여러 장소를 한 번에 저장해야 하니 목록이 편하겠다”고 생각했다.
그런데 실제로는 게시물마다 장소 수가 달랐다. 두세 곳만 나온 게시물도 있었고, 맛집을 여러 곳 소개하는 게시물에서는 아홉 곳 이상이 나오기도 했다. 같은 저장 화면을 모든 경우에 쓰면, 어느 한쪽에서는 꼭 불편해졌다.
이 글은 목록 방식에서 시작해 카드 방식을 추가하고, 결국 장소 수와 사용자의 취향에 맞춰 두 방식을 함께 쓰게 된 과정이다.
처음에는 목록에서 한 번에 저장했다
처음 구조는 목록 방식이었다. 추출된 장소를 세로로 보여 주고, 저장할 쏙을 고른 뒤 한 번에 저장하는 흐름이다. 장소가 많을 때는 빠르다. 사진, 장소명, 주소, 카테고리를 훑으며 필요 없는 항목만 빼면 된다.

기본 쏙을 고르기 전에는 저장 버튼을 비활성화했다. 장소가 선택되어 있어도 저장 위치가 정해지지 않았다면 저장할 수 없다. 사용자가 다음에 해야 할 행동을 버튼 문구로 바로 알려 주고, 어느 쏙에도 연결되지 않은 핀이 생기는 상황도 막았다.
하지만 장소가 두세 곳일 때는 다른 문제가 생겼다. 예를 들어 카페 한 곳은 데이트, 식당 한 곳은 나중에 갈 맛집에 넣고 싶을 수 있다. 목록에서 매 행마다 저장 위치를 따로 바꾸는 일은 가능했지만, 장소 하나의 사진과 맥락을 보며 분류하기에는 충분히 자연스럽지 않았다.
적은 후보에서는 한 장씩 보고 고르게 했다
그래서 장소가 적을 때는 카드 방식으로 바꿨다. 사진, 장소명, 카테고리, 주소를 한 장에 집중해서 보여 주고, 그 장소를 어느 쏙에 넣을지만 결정한 뒤 다음 카드로 넘어간다.


카드 방식에서는 장소마다 선택한 쏙을 따로 기억한다. 화면에서 장소를 넘기는 것과, 실제로 어떤 쏙에 저장할지를 정하는 상태를 분리한 이유다. 사용자가 모든 장소를 확인한 뒤에는 선택한 장소들만 모아 저장한다.
이미 저장한 장소라면 그 사실과 기존 쏙 이름을 카드에서 바로 보여 준다. 같은 장소를 다시 저장할지, 다른 쏙에도 저장할지는 사용자가 맥락을 알고 결정할 수 있어야 했다.
카드 방식도 장소가 많아지면 피로해졌다
카드는 두세 곳을 확인할 때는 좋았다. 하지만 아홉 곳, 열 곳이 나오면 사진을 보고 쏙을 고르고 다음으로 넘기는 행동을 계속 반복해야 했다. 한 게시물에서 비슷한 종류의 장소를 여러 곳 저장하려는 사용자에게는 목록 방식이 더 빨랐다.
그래서 두 방식을 경쟁시키지 않고, 입력량에 따라 역할을 나눴다.
장소 5개 이하
카드 방식: 장소를 하나씩 확인하고 쏙을 개별 선택
장소 6개 이상
목록 방식: 기본 쏙을 먼저 적용하고, 제외하거나 예외만 수정
기본 기준은 5개로 뒀다. 다만 이 숫자가 모든 사람에게 정답이라고 생각하지 않았다. 저장 방식을 자동으로 맡길지, 항상 카드만 쓸지, 항상 목록만 쓸지 고를 수 있게 했고, 자동 전환의 기준 개수도 설정에서 바꿀 수 있게 했다.

자동화는 사용자의 선택을 없애는 것이 아니라, 반복되는 판단을 줄여 주는 데 쓰고 싶었다. 같은 앱이라도 사람마다 “한 장씩 보고 저장하는 편안함”과 “한 번에 정리하는 속도”의 기준은 다르기 때문이다.
목록 방식에서는 기본값과 예외를 분리했다
장소가 많을 때는 모든 항목을 처음부터 각각 분류하게 하지 않았다. 먼저 기본 쏙 하나를 고르면, 선택된 장소가 그 쏙에 들어갈 대상으로 보인다. 이후 사용자는 필요한 경우에만 다른 쏙으로 바꾸거나, 아예 저장하지 않을 장소를 제외한다.

이 화면에서 신경 쓴 부분은 단순히 목록을 보여 주는 것이 아니었다.
- 현재 선택된 장소 수를
9/9처럼 바로 보여 준다. - 전체 선택과 전체 해제를 제공한다.
- 제외한 장소는 흐리게 처리하고 저장되지 않는다는 상태를 남긴다.
- 기본 쏙을 바꾸지 않고도 장소별로 다른 쏙을 지정할 수 있다.
- 개별 변경은 다시 기본 쏙으로 되돌릴 수 있다.
- 쏙 선택 중에는 새 쏙을 바로 만들 수 있다.
- 이미 저장한 장소라면 기존 저장 위치를 표시한다.
- 마지막 버튼에는 실제 저장될 장소 수를 표시하고, 저장 전에 몇 개의 장소를 몇 개 쏙에 넣는지 다시 확인한다.
여기서 중요한 것은 화면 상태를 하나로 뭉개지 않은 점이다. 기본 쏙, 장소별 예외 쏙, 제외한 장소, 이미 저장된 장소는 서로 다른 정보다. 이를 따로 유지해야 기본값을 바꾸거나, 특정 항목만 다른 쏙으로 옮기거나, 제외한 항목을 다시 복구하는 동작이 서로 꼬이지 않는다.
저장할 때는 쏙별로 묶었다
사용자에게는 “9개 저장하기”라는 한 번의 행동으로 보이지만, 내부에서는 장소를 쏙별로 묶어 저장 요청을 만든다.
나중에 갈 맛집 → 장소 A, C, D, E
핫플 → 장소 B
저장 안 함 → 요청에서 제외
이렇게 묶으면 사용자가 장소마다 다른 쏙을 골라도, 저장 요청은 컬렉션 단위로 일관되게 처리할 수 있다. 저장이 끝난 뒤에는 새로 생성된 핀 ID를 보관했다가 지도 화면에서 바로 확인할 수 있게 연결했다. 한 개를 저장했다면 해당 핀으로, 여러 개라면 저장한 핀이 모두 보이는 범위로 지도를 이동한다.
AI가 후보를 만들고, 제품은 선택 비용을 줄인다
쏙핀에서 AI는 링크에서 장소 후보를 정리해 준다. 하지만 후보를 찾는 것만으로 저장 경험이 완성되지는 않는다. 장소가 적은지 많은지, 이미 저장한 곳인지, 하나의 쏙에 몰아둘지 여러 쏙으로 나눌지에 따라 사용자가 해야 할 판단의 양은 달라진다.
그래서 이 흐름에서 중요했던 것은 “AI가 몇 개의 장소를 추출했는가”보다, 그 결과를 사용자가 부담 없이 확인하고 자신의 기준으로 정리할 수 있게 만드는 일이었다.
관련해서 모델 응답 시간을 비교하고, AI 결과를 최종 데이터가 아닌 장소 검색 후보로 둔 기록은 쏙핀에서 GPT 대신 Gemini를 택한 이유는, 정확도보다 먼저 기다림이었다에서 이어서 정리했다.