앱솔브랩(셀리맥스)
경력근거: 현업 요구사항을 바탕으로 신규 기능 설계·개발 및 기존 기능 개선
※ 실제 산출물이 아닌 AI 예측 시안입니다.
앱솔브랩은 더마코스메틱 스킨케어 브랜드 셀리맥스를 운영하는 회사예요. 지우개패드·노니앰플·레티날 샷 타이트닝 부스터 같은 제품을 국내는 자사몰·올리브영·쿠팡·네이버에서, 해외는 미국·유럽·일본 등 10개국 아마존과 TikTok Shop·Ulta Beauty 같은 채널에서 팔아요.
공고는 셀리맥스가 글로벌 시장에서 커지면서 '각 팀이 다루는 업무와 데이터의 복잡도도 함께 높아지고 있습니다'라고 적고, 이 자리의 주요 업무로 '데이터베이스 구조 설계 및 데이터 처리 로직 개발'을 꼽아요. 셀리맥스는 같은 제품을 미국·유럽·일본 등 10개국 아마존에서 팔고, 테크셀의 이전 채용 공고는 이 조직이 맡는 사내 시스템으로 SCM을 들었어요. 같은 제품도 나라마다 팔리는 속도가 다르고 바다 건너 보내는 입고는 들어오기까지 몇 주가 걸려서, 나라·제품마다 재고와 입고 일정을 따로 견줘 봐야 해요.
공고는 이 자리에 합류하면 핵심 사내 시스템의 신규 기능과 데이터베이스 구조를 설계·개발하며 시스템을 고도화한다고 적었어요. 주요 업무에도 데이터베이스 구조 설계와 데이터 처리 로직 개발이 있어요.
공고는 테크셀의 개발자와 기획자가 현업의 업무 흐름과 요구사항을 깊이 이해하고 기술 과제로 구체화해 해결한다고 소개해요. 주요 업무 첫 줄도 현업 요구사항을 바탕으로 한 신규 기능 설계·개발이에요.
공고는 셀리맥스가 미국·유럽 등 글로벌 시장에서 빠르게 성장하면서 각 팀이 다루는 업무와 데이터의 복잡도도 함께 높아지고 있다고 적었어요. 주요 업무에는 시스템 복잡도 증가에 대응하기 위한 구조 개선과 기술 검토가 있어요.
아마존 판매를 맡은 MD가 입고 요청을 정하기 전에 여는 관리자 페이지예요. 검토하는 나라의 제품마다 지금 재고가 다음 입고 예정일까지 버티는지, 입고 전에 바닥날지, 잡힌 입고가 아예 없는지 알려 줘요. 받은 데이터를 담을 DB 설계와 기술·구조, 그리고 하루 판매량을 며칠 치 주문으로 잡을지는 지원자가 정해요.
미국·유럽·일본 등 나라별 아마존 판매를 맡은 MD예요. 같은 제품도 나라마다 팔리는 속도와 다음 입고 날짜가 달라서, 나라·제품마다 남은 재고가 언제 바닥날지 입고 일정과 하나하나 견줘 봐야 어느 나라에 입고를 서둘러 요청할지 정할 수 있어요.
셀리맥스 제품의 SKU 코드표예요. 한 행이 SKU 하나이고 sku 가 키예요. 제품은 product_name 과 option 두 칸으로 구분해요. 레티날 샷 타이트닝 부스터 15ml 와 15ml 2개 세트처럼 이름이 같고 구성만 다른 SKU 는 서로 다른 SKU 예요. 이 데이터에서 sku 는 나라와 관계없이 같은 제품이면 같은 코드예요. amazon_inventory·amazon_orders·inbound_shipments 의 sku 는 모두 이 표의 sku 를 가리켜요. 시작용과 큰 데이터 모두 11개 SKU 전부를 담았어요.
전체 11행 가운데 앞 5행이에요.
| sku | product_name | option |
|---|---|---|
| CM-RTS-15 | 레티날 샷 타이트닝 부스터 | 15ml |
| CM-RTS-15X2 | 레티날 샷 타이트닝 부스터 | 15ml 2개 세트 |
| CM-NNA-30 | 노니 에너지 앰플 | 30ml |
| CM-NNA-30X2 | 노니 에너지 앰플 | 30ml 2개 세트 |
| CM-ERP-60 | 지우개패드 | 60매 |
11행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 11행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "SKU 하나. 키는 sku.",
"additionalProperties": false,
"required": [
"sku",
"product_name",
"option"
],
"properties": {
"sku": {
"type": "string",
"pattern": "^CM-[A-Z]{3}-[0-9]{2,3}(X2)?$",
"description": "SKU 코드. 이 표의 키예요. 같은 제품이면 어느 나라에서나 같은 코드예요."
},
"product_name": {
"type": "string",
"description": "제품 이름. 이름이 같아도 option 이 다르면 다른 SKU 예요."
},
"option": {
"type": "string",
"description": "용량·구성(예: 15ml, 15ml 2개 세트). product_name 과 이 칸 두 개로 SKU 를 구분해요."
}
}
}이 데이터에서 MD 는 아마존 나라마다 매주 한 번 재고를 보고 입고 요청을 정해요. 이 표는 그 검토 회차이고, 한 행이 한 나라의 검토 한 번이며 review_id 가 키예요. country 는 검토하는 아마존 나라이고, reviewed_at 은 MD 가 검토를 연 시각으로 이 기능이 '지금'으로 삼는 시각이에요. 한 번의 검토는 그 나라에서 재고 관측이 있는 SKU 전부를 봐요. 큰 데이터는 2025년 11월 24일부터 2026년 10월 26일까지 매주 월요일 오전 9시 10개국 검토 490회이고, 시작용은 그 마지막 날 스페인(ES)·멕시코(MX) 검토 2회를 같은 ID·같은 값으로 잘라 낸 것이에요.
전체 2행 가운데 앞 2행이에요.
| review_id | country | reviewed_at |
|---|---|---|
| RV-0486 | ES | 2026-10-26T09:00:00+09:00 |
| RV-0489 | MX | 2026-10-26T09:00:00+09:00 |
2행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 490행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "나라 하나의 검토 한 번. 키는 review_id.",
"additionalProperties": false,
"required": [
"review_id",
"country",
"reviewed_at"
],
"properties": {
"review_id": {
"type": "string",
"pattern": "^RV-[0-9]{4}$",
"description": "검토 번호. 이 표의 키예요."
},
"country": {
"type": "string",
"enum": [
"US",
"GB",
"DE",
"FR",
"IT",
"ES",
"JP",
"AU",
"MX",
"IN"
],
"description": "검토하는 아마존 나라. ISO 3166-1 두 글자 코드예요."
},
"reviewed_at": {
"type": "string",
"format": "date-time",
"description": "MD 가 검토를 연 시각. 한국 시간(+09:00) ISO 8601, 초 단위. 이 기능이 '지금'으로 삼는 시각이고, 다른 표의 시각과 같은 한국 시간 기준이에요."
}
}
}나라별 아마존 창고의 재고를 매일 아침 한 번 받아 온 관측 기록이에요. 한 행이 한 나라·한 SKU 의 관측 한 번이고 country·sku·observed_at 묶음이 키예요. sku 는 products.sku 를 가리키고, available_units 는 그 시각 그 나라 아마존에서 바로 팔 수 있는 수량이에요. 이 데이터에서는 재고가 나라마다 따로 잡히고, 주문이 들어오면 그 수량만큼 바로 줄며, 입고는 예정일에 들어와 그날 아침 관측부터 더해져 있어요. 한 나라에서 파는 SKU 는 매일 관측돼서 재고가 0인 날도 0으로 남아 있어요. observed_at 은 아마존 재고 보고서의 시각을 한국 시간으로 적은 것이라 amazon_orders.ordered_at 과 그대로 견줄 수 있어요. 재고가 0이었다가 입고로 다시 늘어난 SKU, 검토 당일 아침 관측에서 입고가 더해진 SKU, 같은 SKU 인데 나라마다 재고가 다른 경우가 들어 있어요. 큰 데이터는 1년(2025년 10월 27일~2026년 10월 26일) 동안 76개 나라·SKU 묶음의 매일 관측 27,740행이고, 시작용은 마지막 검토 전 7일(10월 20일~26일 아침) 스페인·멕시코 관측 77행을 그대로 잘라 낸 것이에요.
전체 77행 가운데 앞 5행이에요.
| country | sku | observed_at | available_units |
|---|---|---|---|
| ES | CM-RTS-15 | 2026-10-20T06:17:26+09:00 | 54 |
| ES | CM-RTS-15 | 2026-10-21T06:17:23+09:00 | 50 |
| ES | CM-RTS-15 | 2026-10-22T06:17:15+09:00 | 46 |
| ES | CM-RTS-15 | 2026-10-23T06:17:58+09:00 | 42 |
| ES | CM-RTS-15 | 2026-10-24T06:17:15+09:00 | 39 |
77행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 27,740행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "한 나라·한 SKU 의 재고 관측 한 번. 키는 (country, sku, observed_at) 묶음.",
"additionalProperties": false,
"required": [
"country",
"sku",
"observed_at",
"available_units"
],
"properties": {
"country": {
"type": "string",
"enum": [
"US",
"GB",
"DE",
"FR",
"IT",
"ES",
"JP",
"AU",
"MX",
"IN"
],
"description": "관측한 아마존 나라. replenishment_reviews.country 와 같은 코드예요."
},
"sku": {
"type": "string",
"pattern": "^CM-[A-Z]{3}-[0-9]{2,3}(X2)?$",
"description": "관측한 SKU. products.sku 를 가리켜요."
},
"observed_at": {
"type": "string",
"format": "date-time",
"description": "그 재고 수량이 유효했던 시각. 아마존 재고 보고서의 시각을 한국 시간(+09:00) ISO 8601, 초 단위로 적었고, amazon_orders.ordered_at 과 같은 시계 기준이에요."
},
"available_units": {
"type": "integer",
"minimum": 0,
"description": "그 시각 그 나라 아마존에서 바로 팔 수 있는 수량(개). 재고가 없으면 0이에요."
}
}
}나라별 아마존에 들어온 주문을 SKU 줄 단위로 적은 기록이에요. 한 행이 주문 한 건의 SKU 한 줄이고 order_item_id 가 키예요. sku 는 products.sku 를 가리키고, units 는 그 줄의 수량, ordered_at 은 아마존이 주문을 받은 시각이에요. 이 표의 주문은 모두 재고에서 빠져나간 주문이고 취소된 주문은 없어요. 주문이 하나도 없는 날은 행이 없고, 재고가 0이던 동안에도 주문이 없어요. 같은 SKU 가 여러 나라에서 팔리고, 최근 며칠 사이 주문이 늘거나 줄어든 SKU 가 섞여 있으며, 큰 데이터에는 할인 행사로 주문이 몰린 며칠도 있어요. 큰 데이터는 2025년 10월 27일 0시부터 2026년 10월 26일 오전 9시까지 10개국 주문 줄 178,890건이고, 시작용은 마지막 검토 전 7일(10월 19일 9시~10월 26일 9시) 동안 스페인·멕시코 주문 줄 127건 전부예요. 그보다 앞선 주문은 큰 데이터에 있어요.
전체 127행 가운데 앞 5행이에요.
| order_item_id | country | sku | ordered_at | units |
|---|---|---|---|---|
| AO-00173830 | ES | CM-RTS-15 | 2026-10-19T09:27:41+09:00 | 2 |
| AO-00173974 | MX | CM-ERP-60 | 2026-10-19T14:18:43+09:00 | 1 |
| AO-00174049 | ES | CM-RTS-15 | 2026-10-19T16:50:33+09:00 | 1 |
| AO-00174072 | MX | CM-PBP-60 | 2026-10-19T17:31:00+09:00 | 1 |
| AO-00174209 | ES | CM-ERP-60 | 2026-10-19T21:44:49+09:00 | 1 |
127행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 178,890행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "주문 한 건의 SKU 한 줄. 키는 order_item_id.",
"additionalProperties": false,
"required": [
"order_item_id",
"country",
"sku",
"ordered_at",
"units"
],
"properties": {
"order_item_id": {
"type": "string",
"pattern": "^AO-[0-9]{8}$",
"description": "주문 줄 번호. 이 표의 키예요."
},
"country": {
"type": "string",
"enum": [
"US",
"GB",
"DE",
"FR",
"IT",
"ES",
"JP",
"AU",
"MX",
"IN"
],
"description": "주문이 들어온 아마존 나라."
},
"sku": {
"type": "string",
"pattern": "^CM-[A-Z]{3}-[0-9]{2,3}(X2)?$",
"description": "주문된 SKU. products.sku 를 가리켜요."
},
"ordered_at": {
"type": "string",
"format": "date-time",
"description": "아마존이 주문을 받은 시각. 한국 시간(+09:00) ISO 8601, 초 단위. amazon_inventory.observed_at 과 같은 시계 기준이에요."
},
"units": {
"type": "integer",
"minimum": 1,
"description": "이 줄의 주문 수량(개)."
}
}
}나라별 아마존 창고로 보내는 입고 건이에요. 한 행이 입고 한 건이고 shipment_id 가 키예요. 한 건은 한 나라·한 SKU 이고, sku 는 products.sku 를 가리켜요. units 는 보내는 수량이고, expected_arrival_date 는 그 나라 아마존 창고에 들어올 예정일(한국 날짜)이에요. created_at 은 사내에서 입고 건을 등록한 시각으로, 그 전에는 이 입고가 등록돼 있지 않았어요. 이 데이터에서 입고는 예정일에 들어와 그날 아침 재고 관측부터 available_units 에 더해져 있고, 예정일이 지난 입고도 지우지 않고 남아 있어요. 다음 입고가 두 건 잡힌 SKU, 검토 당일과 다음 날 들어오는 입고, 같은 SKU 를 다른 나라로 보내는 입고, 입고가 하나도 잡히지 않은 SKU 가 들어 있어요. 큰 데이터는 예정일이 2025년 10월 29일부터 2026년 12월 23일까지인 입고 862건 전부이고, 시작용은 스페인·멕시코로 가는 입고 가운데 예정일이 10월 20일 이후인 12건 전부예요.
전체 12행 가운데 앞 5행이에요.
| shipment_id | country | sku | units | created_at | expected_arrival_date |
|---|---|---|---|---|---|
| IB-00781 | ES | CM-NNA-30 | 300 | 2026-09-21T16:40:52+09:00 | 2026-10-26 |
| IB-00790 | MX | CM-ERP-60 | 100 | 2026-09-24T12:09:33+09:00 | 2026-10-27 |
| IB-00797 | MX | CM-NNA-30 | 60 | 2026-09-28T15:05:12+09:00 | 2026-10-23 |
| IB-00800 | MX | CM-RTS-15 | 240 | 2026-09-30T10:17:44+09:00 | 2026-10-29 |
| IB-00816 | ES | CM-RTS-15 | 600 | 2026-10-05T14:12:37+09:00 | 2026-11-07 |
12행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 862행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "입고 한 건(한 나라·한 SKU). 키는 shipment_id.",
"additionalProperties": false,
"required": [
"shipment_id",
"country",
"sku",
"units",
"created_at",
"expected_arrival_date"
],
"properties": {
"shipment_id": {
"type": "string",
"pattern": "^IB-[0-9]{5}$",
"description": "입고 번호. 이 표의 키예요."
},
"country": {
"type": "string",
"enum": [
"US",
"GB",
"DE",
"FR",
"IT",
"ES",
"JP",
"AU",
"MX",
"IN"
],
"description": "입고가 들어가는 아마존 나라."
},
"sku": {
"type": "string",
"pattern": "^CM-[A-Z]{3}-[0-9]{2,3}(X2)?$",
"description": "보내는 SKU. products.sku 를 가리켜요."
},
"units": {
"type": "integer",
"minimum": 1,
"description": "보내는 수량(개)."
},
"created_at": {
"type": "string",
"format": "date-time",
"description": "사내에서 입고 건을 등록한 시각. 한국 시간(+09:00) ISO 8601, 초 단위. replenishment_reviews.reviewed_at 과 같은 한국 시간 기준이에요."
},
"expected_arrival_date": {
"type": "string",
"format": "date",
"description": "그 나라 아마존 창고에 들어올 예정일(한국 날짜, YYYY-MM-DD). 이 데이터에서 입고는 예정일에 들어와 그날 아침 재고 관측부터 더해져 있어요."
}
}
}