IT기획 · 서비스기획 직무 지원 중

서비스를 만들어본 사람,무엇을 고칠지 찾는 사람

결제·주문·권한 구조를 직접 다뤄본 경험으로, 무엇이 문제인지 정의하고 일정 안에 가능한 개선을 제안합니다.

실서비스에서 내린 가장 중요한 판단

1 → 4

주문 구조를 무중단으로 재설계

장바구니만 붙이자는 요청에, 그 구조로는 상품별 판매량을 셀 수 없게 된다는 점을 짚었습니다. 빠른 우회 대신 구조를 바로잡자고 제안하고, 쓰던 기능이 멈추지 않도록 순서를 정해 전환했습니다.

나머지 5개

숫자로 보는
실서비스 경험

1 / 5

2인 팀으로 실서비스를 출시하며 내린 판단과 그 결과입니다.

0건
금액·재고 관련 오류 보고재직 기간 중. 출시 전 점검 체계를 만들어 운영한 결과
4단계
접근 정책을 새 기능마다 점검정책은 한 줄이지만 지켜지는 지점은 기능마다 달랐음. 경로를 전부 찾아 점검 기준으로 정리
0건
포인트 이중 차감같은 요청이 두 번 들어오는 경우를 미리 정의해 차단
30~40%
반복 작업 시간 단축 (AI 활용)확보한 시간은 전부 요구사항 정리와 예외 검증에 투입
120개 이상
예외 상황 점검 항목 정리경계값과 동시 요청처럼 놓치기 쉬운 상황을 목록으로 만들어 관리

문제를 정의하고
바꾼 경험

1 / 3

맡은 역할 밖이라도 사용자가 불편을 겪는 지점을 찾아, 근거와 함께 제안했습니다.

메인 네비게이션 구조 개선

MateU 앱 · 백엔드 담당으로서 제안

문제
피드, 스토어, 방송, 채팅, 검색, 탐색, 좋아요, 관리자 스케줄까지 하단 탭에 버튼이 과도하게 노출. 처음 쓰는 사용자가 어디서 시작할지 판단하기 어려움
근거
경쟁 앱 네비게이션을 캡처해 비교. 잘 설계된 앱은 하단 탭을 4~5개로 절제하고, 검색과 탐색을 하나로 묶어 운영
제안
검색·탐색 통합, 일반 사용자에게 불필요한 관리자 스케줄 버튼은 메뉴 안으로 이동
결과
작업량 증가를 이유로 한 초기 반대를 비교 자료로 설득해 1~2주 뒤 실서비스에 반영

QA 이슈 관리 방식 정비

MateU 앱 · 2인 팀 출시 준비

문제
QA 전담 인력이 없고, 버그를 말로 전달하면 누락되거나 서로 다르게 이해될 위험
실행
백엔드와 프론트엔드 화면을 함께 테스트하고, 버그를 구글 시트에 정리한 뒤 노션에 재현 조건·우선순위·담당 영역으로 분류해 공유
흐름
문서를 보고 프론트엔드에서 수정 → 제가 재검증해 결과를 업데이트하는 수정·확인 루프를 만듦
결과
재직 기간 중 금액·재고 관련 오류 보고 0건

지표에 안 잡히는 기회손실 발견

유니클로 매장 PT 근무

문제
고층 집기 최상단의 접힌 상품에 고객 손이 닿지 않음. 주변에 직원이 없으면 구매를 포기하고 지나침
원인
집기 도입으로 재고 효율은 올랐지만, 고객이 상품에 닿는 마지막 단계가 설계에서 빠짐. 매출 지표에는 드러나지 않는 손실
실행
최상단 걸어두기 진열 전환 방안을 정리하고, 인원이 줄어드는 시간대에 해당 구역 동료에게 먼저 살펴봐 달라고 요청
결과
그냥 지나치는 고객이 줄어듦. 시스템이 만든 빈틈은 결국 사람과 운영으로 메운다는 것을 배움

혼자 기획하고
배포한 서비스

1 / 4

무엇을 만들지, 무엇을 하지 않을지, 언제 끝났다고 볼지는 제가 정했고 코드는 AI(Claude)가 작성했습니다.

개인 프로젝트 · 2026.10 · 진행 중

오늘 뭐 입지 — 구매내역 기반 옷차림 비서

유니클로 앱 구매내역 스크린샷(또는 가진 옷 종류·색만 골라서)으로 "내 옷장"을 만들고, 외출 장소·시간의 날씨에 맞춰 입을 조합을 고릅니다. 그 코디에 부족한 것만 이유와 함께 제안하고, 옷장에 같은 종류가 없을 때만 유니클로 상품 검색으로 이어 줍니다. 테스터 사용 데이터를 모아 유니클로에 "구매내역 기반 옷차림 기능"을 제안하는 것이 목표입니다.

문제
유니클로 StyleHint는 피드형 코디 서비스라 내가 산 옷과 오늘 날씨를 잇는 기능이 없음을 직접 확인
범위
여러 브랜드는 상품 데이터를 관리할 방법이 없어 유니클로 한 브랜드, 성인 1명으로 좁힘. 오후 급변 실시간 알림은 다음 버전으로 미루고 아침 추천에서 미리 안내
흐름
추천 → 맘에 안 들면 내 옷으로 직접 고르기 → 그 코디에 부족한 것만 최대 2개 제안. 같은 종류가 옷장에 있으면 사라고 하지 않고 옷장 옷을 먼저 권함. 직접 고른 코디는 다음 비슷한 날(체감 ±3°) 추천 맨 앞에 다시 보여 주고, "추웠어요/더웠어요" 평가는 보온 기준을 사람마다 보정하며, 추천 수용률·직접 수정률·제안 클릭률을 기록해 제안서 지표로 씀
제약
공개 API가 없고 크롤링·사내 정보(매장 직원으로서)는 쓰지 않기로 정함. 그래서 상품 데이터를 갖지 않고 "옷 종류 + 검색어"로 제안하고, 스크린샷은 브라우저 안에서만 읽어 서버로 보내지 않음
현장
같은 상품도 시즌마다 제품번호가 바뀌고 예전 번호 페이지는 열리지 않는다는 점을 매장에서 확인 → 상품명 + 남녀 + 기장으로 같은 옷을 판단하고 링크는 상품명 검색으로
그림
상품 사진을 쓰지 않는 원칙 안에서 AI 견본 사진을 시도 → 남자 옷 위주라 여자 옷·소품은 그림으로 섞여 통일성이 깨짐을 실사용에서 발견. 남녀 옷·소품 39가지를 패션 도식화 방식 그림으로 통일하고 구매내역 색·무늬를 입힘. 상품마다 다른 디테일은 보여 줄 수 없는데, 이 한계를 "유니클로 상품 사진과 연결하면 바로 해결된다"는 제안 근거로 둠
방식
작업 매뉴얼과 완료 기준 9가지, 화면별 자동 점검 10개를 만들어 AI가 고칠 때마다 돌림
HTML·CSS·JSTesseract.js OCROpen-MeteoSupabase카카오 로그인Cloudflare PagesClaude
휴대폰으로 열어 보기

화면이 바뀐 과정

첫 화면부터 지금까지 11단계. 옆으로 넘겨 보세요.

  1. 1단계: 장소와 외출 시간을 입력하는 첫 화면

    01

    입력 화면부터

    만든 것날씨를 볼 장소와 외출 시간 입력

    피드백"누가 봐도 시제품 1단계 느낌"

  2. 2단계: 카드로 정리한 화면

    02

    군더더기 정리

    바꾼 것단계 번호·긴 설명을 빼고 카드로 묶음

    남은 문제여전히 입력 양식처럼 보임

  3. 3단계: 그라데이션 날씨 카드

    03

    디자인 기준을 정하고 재구성

    기준29CM·무신사·iOS 날씨 앱처럼, AI 느낌 없이

    바꾼 것외출 시간대 기온 곡선 날씨 카드, 하단 탭

  4. 4단계: 옷장에서 매치하고 없는 자리는 제안

    04

    있으면 매치, 없으면 제안

    방향상의·하의, 추우면 아우터·목도리를 옷장에서 매치

    바꾼 것없는 자리에 이유 + 유니클로 검색

  5. 5단계: 옷걸이 레일 형태의 옷장

    05

    옷걸이 레일 옷장

    시도실제 옷걸이처럼 옷을 걸어 보여 줌

    피드백"슬라이드가 잘 안 된다", 정보가 레일 아래에 있어 스크롤해야 함

  6. 6단계: 카테고리별 카드 넘김 옷장

    06

    카테고리 카드로 교체

    바꾼 것카테고리 버튼 + 한 장씩 멈추는 카드

    이유옷 정보와 버튼을 카드 안에 두어 바로 옆에서 확인

  7. 7단계: 내가 고른 코디를 날씨로 판정

    07

    내가 고른 코디를 날씨로 판정

    요청직접 골라 저장하고, 날씨에 괜찮은지 알려 주기

    바꾼 것고르는 즉시 "잘 맞아요 / 추울 수 있어요", 벗을 시각 안내

  8. 8단계: 코디 한 장 그림과 좋아하는 코디

    08

    한 장 그림 · 좋아하는 코디

    요청고른 옷을 하나의 이미지로, 좋아하는 코디는 저장

    바꾼 것겹쳐 입은 모습 그림, 이름 붙여 저장·즐겨찾기

  9. 9단계: 오늘 입을 한 벌을 먼저 보여 주는 오늘 화면

    09

    오늘의 한 벌, 1분 시작

    바꾼 것첫 문장·시간줄·판정으로 오늘 입을 한 벌을 먼저

    시작캡처는 선택으로 내리고, 종류·색만 골라 3화면 안에 첫 추천(목표 1분)

  10. 10단계: 남녀 옷을 같은 도식화 그림으로 통일한 옷장

    10

    사진을 거쳐 그림으로 통일

    피드백"하의가 너무 작다", "사진과 그림이 섞이면 통일성이 깨진다"

    바꾼 것남녀 옷·소품 39가지 도식화, 실제 옷 길이 비율로 코디 그림

  11. 11단계: 겉옷을 연 채 안에 입은 니트와 셔츠가 보이는 코디 그림

    11

    겹쳐 입은 모습 · 바꿔 입기

    문제겉옷과 니트를 옆에 나란히 그려 실제로 겹쳐 입은 모습이 안 보임. 바꿔 입기 창은 빈 상태로 열려, 청바지 하나만 바꿔도 "덜 골랐어요"가 나옴

    바꾼 것겉옷을 열어 안의 니트·셔츠 깃이 보이게, 창은 지금 코디가 체크된 채로 열고 하의·가방은 바꿔 끼우기

직접 써 보며 찾은 문제

아이폰 13 Pro로 실사용 · "화면 밀림·검색 오류·투박한 디자인·기능 누락 중 하나라도 있으면 배포하지 않는다"를 기준으로

검색
"오산"에 경기도 오산시가 없고 "수청동"은 북한만 나옴 → 해외 지명 데이터가 원인. 국내 행정구역 약 6,800곳 목록을 앱에 두고 시군구 → 행정동 → 법정동 순으로 검색
화면
아이폰에서 화면이 오른쪽으로 밀림 → iOS 시간 입력 칸 폭이 원인. 입력 칸을 투명하게 덮고 390px 폭 자동 점검을 추가
권한
"현재 위치"가 안 잡힘 → 휴대폰은 https에서만 위치를 허용. Cloudflare Pages로 https 배포해 해결
서버
카카오 로그인 + Supabase로 옷장·행동 기록 저장, 운영 숫자 화면 완료(맨 위에 테스터 수·온보딩 완료율·7일 재방문률·추천 그대로 입은 비율·제안 누른 비율을 목표값과 함께, 테스터 닉네임은 기본으로 가림). 아이폰 실기기 로그인에서 카카오 동의 항목 오류(KOE205)를 만나 앱 설정을 바꿔 해결
다음
지인 테스터 10명 → 운영 숫자 화면의 지표를 목표(온보딩 70%·7일 재방문 20%·추천 그대로 60%)와 비교하고, 그 결과로 유니클로 제안서 작성

숫자로 기획하고, 필요한 날 팔기

운영 숫자 화면에 모으는 지표를 회사가 기획·마케팅·매출에 어떻게 쓸지 정리한 판단 규칙입니다. 테스터 수치가 모이면 이 규칙으로 읽습니다.

구조
매출 = 매일 쓰는 사람 × 제안을 본 횟수 × 누른 비율 × 산 비율 × 객단가. 화면의 숫자는 모두 이 식의 한 칸에 대응하고, 어느 칸이 약한지 보고 다음에 손댈 곳을 정합니다
기획
추천 수용률·직접 수정률을 날씨와 상황(일상·출근·나들이)별로 봅니다. 출근 날 수정률이 높으면 출근 추천 규칙부터 고칩니다. 추천을 그대로 입는 날이 늘어야 매일 여는 이유가 생기고, 그게 식의 첫 칸(매일 쓰는 사람)을 키웁니다
첫 사용
처음 쓰기 단계별 통과 수로 어디서 빠지는지 봅니다. 구매내역 캡처에서 이탈할 것으로 보고 "종류·색만 고르고 1분 안에 첫 추천"을 앞에 두었는데, 이 결정이 맞았는지를 숫자로 확인합니다. 7일 안에 다시 옴은 첫 추천이 쓸 만했는지의 결과입니다
마케팅
광고 시점을 회사 일정이 아니라 날씨가 정합니다. 일교차가 큰 아침에 겉옷이 없는 사람에게만 "접히는 경량 다운"을 보여 주는 식입니다. 나이대·성별별 제안 클릭을 보면 같은 제안이라도 어느 층에서 반응하는지 알 수 있어, 메시지와 대상을 나눌 근거가 됩니다
신뢰
같은 종류가 옷장에 있으면 사라고 하지 않고 옷장 옷을 먼저 권합니다. 노출 수는 줄지만 누른 비율의 질이 올라가고, 제안을 광고가 아니라 도움으로 받아들이게 합니다.
매출
코디 기반 제안 클릭률이 구매 의향입니다. 시제품은 실제 구매를 알 수 없지만, 공식 앱에 들어가면 다음 구매내역에 그 종류가 생겼는지로 제안 → 구매 전환율을 바로 잴 수 있습니다. 여기에 사이즈·재고를 붙이면 "내 사이즈 있는 가까운 매장"까지 이어집니다
한계
테스터 10명 규모라 통계적 결론이 아니라 방향 확인용입니다. 실제 구매 여부는 공식 연동 없이는 알 수 없고, 이 한계 자체를 유니클로 제안서의 근거로 씁니다

요구사항을 기능으로
옮긴 프로젝트

1 / 3

설계·구현부터 QA·배포까지 참여한 프로젝트입니다.

MateU · Social System

소셜 피드 & 관계 시스템

팔로우 기반 소셜 피드를 만들며, 기존에 정의된 접근 정책이 새 기능에서도 깨지지 않게 적용했습니다. 정책은 한 줄이지만 확인해야 할 경로는 기능마다 달랐습니다.

  • 4단계 접근 정책(공개·팔로워·구독자·비공개)을 신규 기능에 일관 적용
  • 화면에서 막아도 열리는 우회 경로를 찾아 전부 차단
  • JOIN 쿼리와 커서 페이지네이션으로 N+1 문제 해결, 응답 40% 개선
  • 점검해야 할 경로를 목록화해 기능 추가 시 재사용
TypeScriptSupabase Edge FunctionsPostgreSQL RLSSigned URL

MateU · Membership

멤버십 구독 & 유료 콘텐츠 시스템

월정액 구독 자동 갱신, 포인트 결제, 유료 콘텐츠 접근 제어까지 결제 흐름 전체를 구축했습니다. 운영자가 매번 확인하지 않아도 갱신과 정산이 돌아가도록 자동화했습니다.

  • 보상 트랜잭션으로 부분 실패 시 자동 롤백
  • pg_cron + pg_net 기반 멤버십 자동 갱신 파이프라인
  • Cron 실행 결과 로깅으로 Silent Failure 탐지
  • UNIQUE 제약과 배열 검증으로 포인트 이중 차감 방지
Denopg_cronpg_netPostgreSQL Triggers

E-Commerce · Payments

이커머스 스토어 & 결제·정산 시스템

장바구니 도입 요청에 기존 구조로는 상품별 판매량을 셀 수 없게 된다는 점을 짚고, 일정 안에 가능한 범위를 함께 정리해 구조를 바로잡았습니다.

  • 주문을 상품 단위로 기록하도록 구조 변경 — 쓰던 기능이 멈추지 않게 순서를 정해 전환
  • TossPayments 결제 흐름에 JWE 암호화 기반 지급대행(v2) 정산 로직 확장
  • 판매자 · 플랫폼 · 구매자 3자 정산 자동화
TossPaymentsPostgreSQLNode.jsJWE

실전에서 마주친
문제와 해결

1 / 3

증상이 아니라 원인을 끝까지 따라가, 같은 문제가 반복되지 않도록 기준을 바꾼 사례입니다.

성공으로 기록된 실패 (Silent Failure)

문제
자동 갱신 후 응답은 성공(200)인데 알림이 발송되지 않음
원인
채팅방 생성 실패로 chatRoomId가 null이 되며 알림 블록 전체가 건너뛰어짐. 오류는 로그에만 남고 결과는 성공으로 기록
해결
실패한 구독 ID를 results.errors에 명시 기록해 응답만 보고도 부분 실패를 파악하도록 개선

구독 만료 후 권한 누수

문제
만료된 구독자가 Cron 실행 전까지 유료 콘텐츠에 계속 접근
원인
접근 제어가 status = 'active'만 확인. Cron이 돌기 전 시간차를 고려하지 않음
해결
status = 'active' AND expired_at > NOW() 이중 검증으로 실시간 만료 판정

주문 테이블 1 → 4 정규화

문제
장바구니 도입 후 store_orders 단일 테이블로는 한 주문에 여러 상품을 담을 수 없음
원인
초기 설계에서 주문·상품·결제·배송 정보를 한 테이블에 저장
해결
store_orders / store_order_items / store_shipments / store_shipment_items로 분리. FK 의존 순서대로 옮기며 기존 API 하위 호환 유지

AI에 맡길 것과
사람이 판단할 것

반복 작업은 AI에 맡기고, 요구사항 정의와 예외 상황 검증은 직접 했습니다.

구현 시간 30~40% 단축, 남은 시간은 검증에.

Cursor AI로 Edge Function 기본 구조, TypeScript 타입, SQL 트리거 초안 같은 반복 작업을 줄이고, 확보한 시간을 결제 예외 상황 검증, 권한 설계, 이중 처리 방지 로직에 썼습니다.

AI에게 정확히 지시하려면 먼저 기능의 흐름과 예외를 정리해야 했고, 이 과정이 자연스럽게 요구사항을 정의하는 연습이 되었습니다.

AI에 맡긴 일

  • Edge Function 기본 구조 생성반복되는 Deno + Supabase 패턴 제거
  • TypeScript 타입 생성DB 스키마 기반 인터페이스
  • SQL 트리거 초안pg_net 호출 트리거 패턴
  • 테스트 시나리오 목록동시 요청 등 예외 상황 목록화

직접 검증한 일

  • 요구사항 점검비즈니스 로직 오류와 빠진 조건 확인
  • 타입 검사deno check로 정적 검증
  • 실행 로그 확인Supabase 대시보드로 결과 추적
  • 예외 시나리오 테스트권한 허점, 구독 만료 경계값, 이중 차감, Cron 재실행

기획에 쓰는
도구와 기술 이해

서비스가 어떻게 만들어지고 돌아가는지 이해하는 데 쓰는 도구들입니다.

자격증

AWS SAA · SQLD · 리눅스마스터 2급 · 네트워크관리사 2급

언어 · 런타임

TypeScript · JavaScript · Node.js · Deno · Java · Python

데이터베이스 · 백엔드

PostgreSQL · Supabase · RLS · pg_cron · pg_net · DB Triggers · Supabase Edge Functions

결제 · 연동

TossPayments · JWE · 결제 멱등성 설계 · 정산 파이프라인

협업 · 기획 도구

Notion · Google Sheets · Postman · Swagger · Git · Cursor AI · OpenAI API