CARTIFY · 개발자 채용 스프린트 1

CARTIFY 스프린트 1 과제

CARTIFY는 한국 브랜드의 상품을 싱가포르·필리핀·말레이시아·베트남 구매자에게 동시에 파는 쇼핑 플랫폼입니다. 이번 과제에서는 이 플랫폼의 한 부분을 맡아 2주 동안 직접 설계하고 만듭니다. 커머스나 물류 경험이 없어도 괜찮습니다. 필요한 업무 지식은 이 페이지에 모두 정리했습니다.

기간 10/19(월) – 10/30(금) 보상 유급 (계약서 참조) AI 도구 자유롭게 사용 기술 스택 자유 맡을 카드 개별 안내 비밀유지 NDA 체결 후 진행
How it works

주문 하나가 지나가는 길

브랜드는 셀러센터에 상품을 등록하고 CARTIFY 한국 창고로 보내기만 하면 됩니다. 입고가 승인되는 즉시 4개국에서 판매가 시작됩니다. 판매가는 브랜드가 나라별로 직접 정하고, CARTIFY는 보관·판매·배송·수출신고·정산을 대신 맡습니다. 팔린 만큼만 브랜드에 정산하는 이 계약을 위탁이라고 합니다.

한국: 상품 등록과 입고
1브랜드셀러센터에 상품 등록: 썸네일, 상품명, 상세페이지, 옵션, HS 코드, 나라별 판매가카드 1
2브랜드입고 신청: 몇 개를 어떻게 보낼지 (택배 송장 또는 직접 방문 예정일)카드 1
3운영자상품 도착 → 수량 확인 → 무게·크기 실측 → 입고 승인 → 재고 생성카드 1
판매
4구매자입고 승인 즉시 판매 시작. 4개국 구매자가 자기 나라 통화로 여러 브랜드 상품을 한 장바구니에 담아 결제. 그 나라의 금지 품목은 보이지 않음카드 2
출고와 배송
5운영자결제된 주문을 들어온 순서대로 포장하고 송장 100장을 한 번에 출력카드 3
6운영자송장 바코드를 스캔해 출고를 확정하고 물류사에 인계 (스캔 담당 주체는 협의 중)카드 3
7운영자수출신고 데이터 작성 → 주문 건별로 한국에서 각 나라로 특송 발송카드 3
정산
8구매자배송 완료 후 구매확정 (반품 가능 기간이 끝나 거래가 확정됨)카드 2·4
9운영자구매확정된 판매분만 브랜드별로 정산 (판매 금액에서 CARTIFY 수수료와 반품을 뺀 금액)카드 4

로그인, 역할, 브랜드 등록처럼 모든 단계가 기대는 기반은 카드 0입니다.

Glossary

먼저 알아 둘 용어

위탁 / 사입
위탁은 팔린 만큼 브랜드에 정산하는 방식, 사입은 회사가 미리 사 두는 방식입니다. CARTIFY는 위탁입니다.
판매가 / 수수료
판매가는 브랜드가 나라별 현지 통화(SGD·PHP·MYR·VND)로 직접 정합니다. 수수료는 CARTIFY가 판매 금액에서 가져가는 몫으로, 과제에서는 브랜드별 18~22%로 가정합니다.
특송
주문 하나하나를 항공으로 빠르게 보내는 국제 배송입니다. CARTIFY는 주문이 들어올 때마다 한국에서 바로 발송합니다.
금지 품목
나라마다 들여올 수 없거나 허가가 필요한 상품이 있습니다. 해당 나라에서는 그 상품을 팔지 않습니다. 과제 데이터의 금지 규칙은 예시입니다.
SKU
재고를 세는 최소 단위입니다. 같은 크림이라도 용량이 다르면 SKU가 다릅니다.
입고 / LOT
입고는 상품이 창고에 들어와 재고가 되는 것입니다. LOT는 한 번에 들어온 묶음으로, 입고 날짜와 원가를 추적하는 단위입니다.
검수 / 계측
검수는 신청 수량과 실제 수량을 맞춰 보는 일, 계측은 무게(g)와 크기(cm)를 직접 재는 일입니다. 브랜드가 적은 값보다 창고가 잰 값을 믿습니다.
WMS
창고 관리 시스템(Warehouse Management System). 입고부터 출고까지 창고 안의 재고 이동을 기록합니다.
피킹 / 패킹
피킹은 주문 상품을 선반에서 꺼내는 일, 패킹은 상자에 담아 포장하는 일입니다.
송장
상자에 붙이는 배송 라벨입니다. 받는 사람 정보와 바코드가 들어갑니다.
물류사 / 포워더
해외 배송을 대행하는 회사입니다. 포장된 상자를 받아 비행기에 싣고 현지 배송까지 맡깁니다. 출고 스캔을 CARTIFY 작업자와 물류사 중 누가 할지는 아직 협의 중입니다.
바코드
상품마다 붙은 제조사 바코드(EAN-13 등)입니다. 입고 검수, 피킹, 포장 검수에서 스캔해 상품을 확인합니다.
유통기한 / 잔여기한
같은 상품도 입고 LOT마다 유통기한이 다릅니다. 입고할 때는 남은 기간이 “입고 최소 잔여기한” 이상이어야 받고, 출고할 때는 “출고 최소 잔여기한” 이상인 LOT만 내보냅니다.
FEFO
First Expired, First Out. 유통기한이 빠른 LOT부터 먼저 출고하는 방식입니다.
할인 부담 주체
브랜드가 내는 할인·바우처는 브랜드 정산액을 줄이고, CARTIFY가 내는 바우처는 줄이지 않습니다. 같은 할인 금액이어도 누가 부담하느냐에 따라 정산이 달라집니다.
발송 기한
결제 후 언제까지 출고해야 하는지의 기한입니다. 넘기면 지연 출고로 기록됩니다.
수출신고 / HS 코드
물건을 해외로 보낼 때 세관에 내는 신고입니다. HS 코드는 품목을 분류하는 국제 번호로, 앞 6자리가 세계 공통입니다. 예: 화장품 크림 330499.
실중량 / 부피중량
항공 배송비는 실제 무게와 부피로 환산한 무게 중 큰 값으로 매깁니다. 가볍지만 큰 상자도 비쌉니다.
구매확정
구매자가 상품을 받고 반품 가능 기간이 지나 거래가 확정되는 시점입니다. 정산은 이 이후에 합니다.
정산
판매 대금에서 브랜드 몫을 계산해 지급하는 일입니다. 반품이 생기면 차감합니다.
PG
카드 결제를 대신 처리해 주는 결제대행사입니다. 아직 정해지지 않아 과제에서는 모의 결제를 씁니다.
Warehouse

창고 업무 한눈에 보기

재고를 미리 받아 두는 구조라서 창고 안에서 무슨 일이 일어나는지 알아야 합니다. 창고 업체의 WMS 데모 계정으로 직접 로그인해 아래 흐름을 확인할 수 있습니다.

입고 예정 등록→도착·검수→적치 (선반 위치 지정)→재고→피킹→패킹→출고
on_hand · 실물 재고

지금 선반에 실제로 있는 수량

expiry_blocked · 출고 불가

유통기한이 출고 최소 잔여기한보다 짧게 남아 팔 수 없는 수량

reserved · 예약 재고

결제는 끝났지만 아직 출고 전인 수량

available · 가용 재고

실물 − 출고 불가 − 예약. 구매자에게 “살 수 있다”고 보여 줄 수 있는 수량

Reference systems

직접 써 볼 참고 시스템

실제 서비스 화면을 보면 이 페이지의 설명이 훨씬 빨리 이해됩니다. 두 계정의 접속 정보는 별도로 전달합니다.

Shopee 판매자 센터 (서브 계정)

상품 등록, 주문 관리, 재고, 정산 화면이 일반 이커머스에서 어떻게 생겼는지 참고하세요. CARTIFY 셀러센터의 상품 등록 기능이 이와 비슷합니다. 회사가 실제로 운영 중인 계정입니다.

아래 네 가지는 하지 마세요.

  • 정산금 인출
  • 채팅 확인
  • 주문 컨펌
  • 송장 인쇄

금지 항목의 위치는 별도 사진·영상으로 안내합니다.

창고 WMS (데모 데이터 계정)

입고 등록 → 검수 → 적치 → 재고 → 피킹 → 패킹 → 출고를 직접 눌러 보며 확인하세요. 데모 데이터만 들어 있는 계정이라 자유롭게 조작해도 됩니다.

카드 1(입고)과 카드 3(출고)을 맡았다면 특히 꼼꼼히 보세요. 재고(실물·출고 불가·예약·가용)가 어떻게 움직이는지, 상품마다 바코드·유통기한·잔여기한을 어떻게 받는지가 핵심입니다.

Your scope

카드 5장

여러분은 이 중 한 장을 맡습니다. 다른 카드는 다른 사람이 따로 만들기 때문에 기다리거나 맞출 필요가 없습니다. 같은 목 데이터로 내 카드만 끝까지 동작하게 만들면 됩니다. 카드 0이 아니라면 로그인은 간단한 역할 전환 버튼으로 대신해도 됩니다.

CARD 0

기반: 계정·역할·브랜드·배포

만들 것
  • 역할 3종 로그인: 운영자, 브랜드, 구매자
  • 역할별 메뉴와 접근 제어 (브랜드는 자기 데이터만)
  • 브랜드 등록과 위탁 계약 정보
  • DB 설계와 목 데이터 적재, 미리보기 배포
  • 디자인 토큰 분리 (로고·색·글꼴은 나중에 바뀜)
완료 기준
  • 역할마다 다른 메뉴가 보이고, 다른 브랜드 데이터는 API에서도 막힌다
  • 목 데이터가 모두 적재되고 미리보기 URL이 있다
명세 참고: REC-COM-001 · REC-PRD-001 · ADM-BRD-001
CARD 1

상품·입고: 등록부터 판매 시작까지

만들 것
  • 셀러센터 상품 등록: 썸네일·이미지, 상품명, 카테고리, 상세페이지, 옵션·SKU, 바코드, HS 6자리, 무게·크기, 유통기한 기준
  • 나라별 판매가 입력과 나라별 금지 품목 자동 검사
  • 입고 신청: 택배 송장 또는 직접입고 예정일, LOT별 제조일·유통기한·수량
  • 운영자 수령·수량 대조·잔여기한 확인·계측·입고 승인 → 재고 생성 → 판매 시작
  • 구매자 브랜드 몰: 왼쪽에 브랜드 소개(목 데이터의 기본값), 오른쪽에 그 나라에서 판매 가능한 상품. AI 브랜드 스토리 생성은 이번 범위가 아닙니다
  • 상품 상세 (나라별 통화)
완료 기준
  • 등록 → 입고 신청 → 승인 → 판매가를 입력한 나라에서 즉시 노출이 이어진다
  • 금지 품목에 걸리거나 판매가가 없는 나라에서는 보이지 않고, 셀러센터에 이유가 표시된다
  • 수량이 다르거나 입고 최소 잔여기한에 못 미치는 LOT는 자동 승인되지 않는다
명세 참고: SEL-PRD-001~009·013·014 · SEL-INV-001~010·014 · ADM-INV-001~010 · ADM-PRD-001~003 · BUY-BRD-001~003
CARD 2

주문: 장바구니부터 주문 조회까지

만들 것
  • 구매자 나라 선택, 나라별 통화 표시
  • 여러 브랜드를 담는 통합 장바구니와 나라별 배송비 계산
  • 브랜드 할인과 바우처(CARTIFY 부담 / 브랜드 부담) 적용
  • 주문 생성과 모의 결제 (나중에 실제 PG로 바꿀 수 있게)
  • 미결제·취소 처리: 취소 주체와 사유 기록, 결제 시 재고 예약, 취소 시 원복
  • 구매자 주문 조회, 운영자 주문 관리
완료 기준
  • 3개 브랜드 상품으로 주문 1건이 생기고 가용 재고가 줄어든다
  • 그 나라에서 팔 수 없는 상품은 담기지 않는다
  • 결제하지 않은 주문은 재고를 잡지 않고, 일정 시간이 지나면 자동 취소된다
  • 마지막 1개를 두 명이 동시에 사도 과판매되지 않는다
  • 주문 당시 가격·할인·환율이 주문에 남는다
명세 참고: BUY-BRD-004 · BUY-CHK-001~002 · ADM-SHP-004 · REC-BUY-001~004
CARD 3

출고: 포장, 송장, 스캔, 수출신고

만들 것
  • 결제완료 주문의 접수순 포장 대기열, 발송 기한 표시, 예외 분리
  • 출고 LOT 할당: 출고 최소 잔여기한을 만족하는 LOT 중 유통기한이 빠른 것부터(FEFO)
  • 송장 100장 일괄 출력 (바코드, 도착 나라 포함)
  • 출고 스캔 화면: 송장 바코드를 찍으면 출고 확정 (누가 스캔할지는 협의 중이므로 역할에 묶지 않음)
  • 수출신고 데이터 엑셀 생성과 HS 검증
완료 기준
  • 10/12 주문 중 100건의 송장이 한 번에 출력된다
  • 출고 불가 LOT(잔여기한 미달)는 할당되지 않고, 발송 기한이 임박하거나 지난 주문이 구분된다
  • 스캔한 주문만 출고완료가 되고 중복 스캔은 경고한다
  • HS 문제가 있는 주문은 신고 전에 걸러진다
명세 참고: ADM-ORD-001~009 · ADM-EXP-001~005
CARD 4

정산·매출: 위탁 정산

만들 것
  • 구매확정 기준 브랜드별 정산서: 판매 금액 − 브랜드 부담 바우처 − 판매 수수료, 주문 시점 환율로 원화 환산
  • 수수료 내역(판매 수수료, 결제 수수료)과 할인 부담 주체 구분
  • 반품 수량·취소 차감과 조정 이력
  • 정산 상태: 대기 → 진행 → 완료
  • 운영자 매출 대시보드 (나라·통화별), 브랜드 정산 조회
완료 기준
  • 계약 브랜드 6곳의 정산서가 나온다
  • CARTIFY 바우처는 브랜드 정산액을 줄이지 않고, 브랜드 바우처·할인은 줄인다
  • 확정된 정산에 반품이 생기면 원래 값을 고치지 않고 조정 기록이 추가된다
  • 브랜드는 자기 정산만 본다
명세 참고: ADM-SET-001~006 · SEL-SET-001~008
Ground rules

작업 규칙

1

AI 도구는 마음껏 쓰세요.

대신 AI가 틀린 곳을 어떻게 찾았는지, 무엇을 직접 판단했는지 의사결정 기록에 남겨 주세요. 라이브 리뷰에서 코드를 직접 설명하게 됩니다.

2

정해지지 않은 정책은 가정하고 기록하세요.

정산 주기, 판매가 산식, 배송비 기준처럼 아직 미정인 것이 많습니다. 합리적으로 가정하고, 나중에 정책이 바뀌어도 크게 고치지 않도록 설정으로 빼 두세요.

3

카드 범위 밖으로 넓혀도 가산점은 없습니다.

많이 만드는 것보다 맡은 흐름이 끝까지 정확히 동작하는 것이 중요합니다.

4

디자인은 기본 형태면 충분합니다.

로고·색·글꼴과 화면 디자인은 외부 업체가 따로 만들어 나중에 반영합니다. 쉽게 교체할 수 있는 구조가 더 중요합니다.

5

모르면 질문 채널에 물어보세요.

좋은 질문은 평가에 도움이 됩니다. 답을 기다리는 동안에는 가정을 세우고 진행하세요.

6

실제 데이터는 보기만 하고 밖으로 가져가지 마세요.

Shopee 계정에는 실제 고객과 거래 정보가 있습니다. 화면에서 본 실제 데이터는 복사·저장하거나 AI 도구에 넣지 마세요. 개발과 테스트에는 제공하는 목 데이터를 쓰면 되고, 목 데이터는 AI 도구에 자유롭게 넣어도 됩니다. 계약서의 비밀유지 조항을 확인해 주세요.

What you get

제공 자료

목 데이터 (cartify-mockdata.zip)

  • 가상 브랜드 8곳, 상품 100개(나라별 판매가·바코드·유통기한 기준 포함), 4개국 구매자 1,600명
  • 10/5~10/12 주문 2,187건: 결제완료(포장 대기) 724건, 미결제 50건, 취소 147건(주체·사유 포함)
  • 할인·바우처(부담 주체별), 수수료 내역, 발송 기한과 실제 출고 시각, 반품 수량
  • 입고 신청과 LOT별 유통기한, LOT별 재고, 나라별 통화·환율·배송비, 금지 품목 규칙(예시), 특송 운임표, 수출신고 형식 예시
  • 일부러 넣은 데이터 오류 몇 개. 찾아서 처리하는 것도 과제입니다

파일별 설명과 가정한 값은 zip 안의 README에 있습니다.

기능 명세서 v0.3 (후보자 배포본)

플랫폼이 장기적으로 어디로 가는지 보여 주는 문서입니다. 기능 136개 중 대부분은 이번 과제 범위가 아닙니다. 문서 앞쪽의 “이 문서를 읽는 방법”에 카드별로 읽을 부분을 정리해 두었습니다. AI 광고, 상품 발굴, AI 브랜드 스토리 생성은 흐름만 이해하면 됩니다.

이 페이지와 명세서 내용이 다르면 이 페이지가 우선합니다.

Deliverables

제출물과 일정

10/30(금) 제출

  1. 코드 저장소 (접근 권한 공유)
  2. 미리보기 URL
  3. 설계 문서 1~3쪽: 데이터 구조, 주요 흐름, 다른 카드와 연결될 지점
  4. 가정·질문 목록: 무엇을 가정했고 왜 그렇게 정했는지
  5. 의사결정 기록: 만들지 않기로 한 것과 이유, AI를 어떻게 쓰고 검증했는지

일정

10/19 (월)킥오프 1시간: 사업 흐름 설명, Shopee·WMS 계정 이용 안내, 질의응답
10/23 (금)주간 보고: 3줄 요약 + 미리보기 링크 + 지금까지의 가정·질문
10/30 (금)제출 마감과 라이브 리뷰
How we evaluate

평가 방식

AI를 쓰면 누구나 코드를 많이 만들 수 있습니다. 그래서 무엇을 왜 만들었는지, 만든 것을 얼마나 정확히 이해하는지를 더 크게 봅니다.

항목비중보는 것
문제 이해·명세 해석25명세의 빈칸을 찾고 근거 있는 가정으로 채웠는지
설계 판단25데이터 구조가 업무 규칙을 지키는지 (예: 확정된 값을 덮어쓰지 않음, 권한 경계)
코드 이해·라이브 대응20어떤 파일이든 설명할 수 있는지, 현장 변경 요청을 처리하는지
AI 활용과 검증15AI 결과를 어떻게 확인하고 바로잡았는지
동작하는 결과물15카드의 완료 기준을 미리보기에서 확인할 수 있는지

라이브 리뷰 (60~90분)

데모 → 설계 질문 → 면접관이 고른 파일 설명 → 현장에서 작은 변경 요청 처리 → 여러분의 질문 순서로 진행합니다. 변경 요청은 화면을 공유한 채 AI를 써서 처리해도 됩니다.

스프린트 1 결과에 따라 일부 인원이 스프린트 2(11/2~11/13)에 참여합니다. 스프린트 2에서는 운영팀의 실제 업무를 관찰하고 직접 문제를 골라 해결합니다.