세토웍스
경력근거: 데이터 기반 마케팅 인텔리전스 도구 및 대시보드 설계·개발
※ 실제 산출물이 아닌 AI 예측 시안입니다.
공고가 주요업무에 '데이터 기반 마케팅 인텔리전스 도구 및 대시보드 설계·개발' 을 적었고, 기업 소개에서는 '미국 Kickstarter, 일본 Makuake, 대만 Zeczec' 세 나라 플랫폼을 함께 다룬다고 밝혔습니다. 플랫폼이 여럿이면 대시보드에 올릴 숫자가 합쳐지는지부터 문제가 되고, 이 포트폴리오는 그 판단을 플랫폼 프로파일로 옮깁니다. 'AI 코딩 툴을 활용한 내부 업무 자동화 및 솔루션 개발' 도 손으로 맞추던 집계를 규칙으로 옮기는 이 편의 자리를 가리킵니다. 이 포트폴리오가 보여주는 것은 집계 기준을 데이터로 두고 보고서와 맞춰 합칠 수 있는지 가르는 기술이며, 크라우드펀딩 마케팅 실무나 수출 정산 전문성은 주장하지 않습니다. 모르는 깊이는 면접에서 모른다고 말하는 편이 낫습니다.
'데이터 기반 마케팅 인텔리전스 도구 및 대시보드 설계·개발'. 그 대시보드에 들어갈 숫자가 합쳐질 수 있는지부터 봅니다.
'미국 Kickstarter, 일본 Makuake, 대만 Zeczec의 국내 유일 공식 글로벌 크라우드펀딩 파트너 대행사'. 플랫폼이 늘수록 기준 차이가 커집니다.
'AI 코딩 툴을 활용한 내부 업무 자동화 및 솔루션 개발'. 손으로 맞추던 집계를 규칙으로 옮깁니다.
플랫폼마다 따로 내려받은 성과 보고서를 한 표로 합칠 수 있는지 보고서마다 가릅니다. 플랫폼 프로파일에 통화와 원화 환산 계수, 수수료 기준, 기간 기준을 두고 보고서와 맞춰, 다 맞으면 원화로 바꿔 합치고 그렇지 않으면 통화 어긋남·수수료 기준 다름·기간 어긋남 중 어느 쪽인지 사유로 남깁니다. 금액이 빈 보고서는 합계에 넣지 않고 표시하며, 프로파일에 없는 플랫폼은 미선언으로 남겨 기준을 먼저 정하게 합니다. 보고서는 실 정산 자료 대신 지원자가 각 플랫폼의 공개 성과 화면 양식으로 만든 것을 가정합니다.
여러 나라 펀딩 플랫폼에 프로젝트를 동시에 올리는 대행팀 옆에 앉은 개발자입니다. 주간 보고를 만들 때마다 플랫폼별 파일을 열어 환율을 손으로 곱하고 수수료 포함 여부를 메모로 남기던 담당자를 보던 사람입니다.
플랫폼마다 통화와 환산 계수, 수수료 기준, 기간 기준을 프로파일로 두고 보고서와 맞추면, 합칠 수 있는 숫자와 그렇지 않은 숫자가 갈리고 못 합치는 이유가 근거로 남는다는 가정입니다. 프로파일에 없는 플랫폼은 미선언으로 빠지므로 기준을 아직 정하지 않은 채널이 그대로 드러납니다.
플랫폼별 보고서와 프로파일을 받아 보고서마다 합치기 가능·보류를 판정하고, 보류면 통화 어긋남·수수료 기준 다름·기간 어긋남·금액 없음·플랫폼 미선언 중 어느 쪽인지 붙여 프로젝트별로 묶은 집계 리포트를 터미널과 Markdown 파일로 내는 CLI 가 도는 완결품입니다.
공개 양식으로 만든 보고서 400건에 손으로 계산한 정답 원화 합계와 대조해 일치율을 내고, 미선언이 몰리는 플랫폼을 모아 기준이 없는 채널을 목록으로 냅니다.
프로젝트별 원화 합계와 후원자 수를 주간 보고 표로 조립하고, 합치지 못한 보고서를 사유와 함께 각주로 붙여 내는 단계입니다.
마케팅 실행팀 담당자가 플랫폼별 보고서와 프로파일을 넣으면 보고서마다 합치기 가능 여부와 보류 사유가 프로젝트별로 묶여 나오는 과정을 시연합니다.
공개 양식으로 만든 보고서 400건과 손으로 계산한 정답 원화 합계를 대조해 일치율을 냅니다. 단, 정답과 보고서를 모두 작성자가 만든 합성 기준이라 성능 검증이 아니라 데모 조건 동작입니다.
통화나 금액이 비었거나 플랫폼 표기가 흔들리거나 프로파일에 없는 플랫폼이 섞인 입력 30종을 넣어도 출력 형식이 안 깨지고 사유별로 빠지는 비율을 보여줍니다.
환산 계수와 기간 기준을 바꿨을 때 옛 집계가 어떻게 달라지는지 회귀로 확인합니다.
진짜 성능 검증은 여기서 멈춥니다. 위 수치는 작성자가 만든 보고서의 자가채점이며, 실제 집계 정확도는 세토웍스의 실 정산 자료와 실 환율 기준이 있어야 측정됩니다. 이 포트폴리오는 그 검증을 바로 돌릴 수 있는 상태까지 만듭니다.
수치는 합성 데이터 자가채점이라 성능 증명이 아니므로, 면접에서는 데모 동작과 실검증 준비 상태로 솔직히 설명합니다.
정답을 작성자가 붙였으니 잘 맞는 게 당연하므로, 통화 결측과 수수료 기준 차이, 프로파일에 없는 플랫폼을 일부러 섞어 쉬운 보고서만 푸는 함정을 피합니다.
이 포트폴리오가 보여주는 것은 집계 기준을 데이터로 두고 보고서와 맞춰 합칠 수 있는지 가르는 기술이며, 크라우드펀딩 마케팅 실무나 수출 정산 전문성은 주장하지 않습니다. 판정은 값 대조와 곱셈이 하고 LLM 은 담당자가 읽을 사유 문장만 맡습니다.
환산 계수를 표에 고정해 두므로 환율이 움직이면 합계도 달라집니다. 그래서 계수를 판정에 함께 실어 어느 기준으로 계산했는지 보이게 둡니다.
실제 도입 때는 플랫폼마다 성과 화면과 수수료 규정이 바뀌므로, 프로파일을 이어서 고치는 일을 운영 과제로 둡니다.
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
플랫폼마다 따로 내려받은 성과 보고서입니다. 보고서 번호와 프로젝트 이름, 플랫폼 표기, 통화, 총액, 수수료 기준, 기간 시작·끝, 후원자 수, 내려받은 날을 한 행에 둡니다. 플랫폼 표기는 내려받은 화면에 따라 'kickstarter'와 'Kickstarter'처럼 흔들립니다. 통화나 금액, 마감일이 빈 행, 수수료를 뺀 금액으로 온 행, 같은 프로젝트인데 기간이 밀린 행, 프로파일에 없는 플랫폼을 일부러 섞어 두어 사유가 갈리게 둡니다.
| report_no | project_raw | platform_raw | currency_raw | gross_amount | fee_basis_raw | period_start | period_end | backer_count | pulled_at |
|---|---|---|---|---|---|---|---|---|---|
| PR-001 | 휴대용 정수기 | kickstarter | USD | 82,400 | gross | 2026-06-01 | 2026-07-15 | 1,120 | 2026-08-20 |
| PR-002 | 휴대용 정수기 | Kickstarter | USD | 9,100 | gross | 2026-07-16 | 2026-07-31 | 130 | 2026-08-20 |
| PR-003 | 휴대용 정수기 | makuake | JPY | 4,820,000 | net | 2026-06-01 | 2026-07-15 | 640 | 2026-08-20 |
| PR-004 | 접이식 키보드 | makuake | JPY | 2,110,000 | gross | 2026-07-01 | 2026-08-14 | 310 | 2026-08-21 |
| PR-005 | 접이식 키보드 | zeczec | TWD | 880,000 | gross | 2026-07-01 | 2026-08-14 | 410 | 2026-08-21 |
아래 JSON Schema 를 그대로 만족하는 성과 보고서 행을 400개 더 만들어 주세요. 프로젝트를 서른 개쯤 두고 프로젝트마다 플랫폼 두셋에 올린 보고서를 붙입니다. 플랫폼 표기는 몇 행에서 첫 글자를 대문자로 두고, 2할은 통화나 금액, 마감일을 비우며, 몇 행은 수수료 기준을 'net'으로 두고 몇 행은 같은 프로젝트의 기간을 닷새쯤 밀어 두세요. 프로파일에 없는 플랫폼도 몇 행 넣습니다. 원화 금액이나 판정은 넣지 마세요.
{"type": "object", "properties": {"report_no": {"type": "string"}, "project_raw": {"type": "string"}, "platform_raw": {"type": "string"}, "currency_raw": {"type": ["string", "null"]}, "gross_amount": {"type": ["number", "null"]}, "fee_basis_raw": {"type": ["string", "null"]}, "period_start": {"type": ["string", "null"]}, "period_end": {"type": ["string", "null"]}, "backer_count": {"type": ["integer", "null"]}, "pulled_at": {"type": "string"}}, "required": ["report_no", "project_raw", "platform_raw", "currency_raw", "gross_amount", "fee_basis_raw", "period_start", "period_end", "backer_count", "pulled_at"]}{"type": "object", "properties": {"report_no": {"type": "string"}, "project_raw": {"type": "string"}, "platform_raw": {"type": "string"}, "currency_raw": {"type": ["string", "null"]}, "gross_amount": {"type": ["number", "null"]}, "fee_basis_raw": {"type": ["string", "null"]}, "period_start": {"type": ["string", "null"]}, "period_end": {"type": ["string", "null"]}, "backer_count": {"type": ["integer", "null"]}, "pulled_at": {"type": "string"}}, "required": ["report_no", "project_raw", "platform_raw", "currency_raw", "gross_amount", "fee_basis_raw", "period_start", "period_end", "backer_count", "pulled_at"]}플랫폼별 집계 기준표입니다. 프로파일 번호와 플랫폼, 통화, 원화 환산 계수, 수수료 기준, 기간 기준, 담당을 한 행에 둡니다. 플랫폼마다 통화와 기준이 달라 같은 총액도 원화로는 크게 갈립니다. 보고서에 나오는 플랫폼 중 일부는 일부러 넣지 않아 미선언이 도출되게 둡니다.
| profile_no | platform_raw | currency_raw | fx_to_krw | fee_basis_raw | period_basis_raw | owner_name |
|---|---|---|---|---|---|---|
| PF-01 | kickstarter | USD | 1,380 | gross | campaign | GTM운영 |
| PF-02 | makuake | JPY | 9.2 | gross | campaign | GTM운영 |
| PF-03 | zeczec | TWD | 43 | gross | campaign | GTM운영 |
| PF-04 | wadiz | KRW | 1 | gross | campaign | 국내사업 |
| PF-05 | tumblbug | KRW | 1 | gross | campaign | 국내사업 |
아래 JSON Schema 를 그대로 만족하는 플랫폼 프로파일 행을 20개 더 만들어 주세요. 통화를 달러·엔·대만달러·원으로 섞고 통화마다 환산 계수를 일관되게 둡니다. 수수료 기준과 기간 기준은 플랫폼 성격에 맞게 나눕니다. 보고서에 나오는 플랫폼 중 일부는 일부러 넣지 마세요 — 미선언이 있어야 프로파일의 구멍이 드러납니다. 집계 결과는 넣지 마세요.
{"type": "object", "properties": {"profile_no": {"type": "string"}, "platform_raw": {"type": "string"}, "currency_raw": {"type": "string"}, "fx_to_krw": {"type": "number"}, "fee_basis_raw": {"type": "string"}, "period_basis_raw": {"type": "string"}, "owner_name": {"type": "string"}}, "required": ["profile_no", "platform_raw", "currency_raw", "fx_to_krw", "fee_basis_raw", "period_basis_raw", "owner_name"]}{"type": "object", "properties": {"profile_no": {"type": "string"}, "platform_raw": {"type": "string"}, "currency_raw": {"type": "string"}, "fx_to_krw": {"type": "number"}, "fee_basis_raw": {"type": "string"}, "period_basis_raw": {"type": "string"}, "owner_name": {"type": "string"}}, "required": ["profile_no", "platform_raw", "currency_raw", "fx_to_krw", "fee_basis_raw", "period_basis_raw", "owner_name"]}| Python | 보고서와 프로파일을 맞춰 환산하고 기준 차이를 견주는 집계기를 맡습니다. |
| TypeScript | 플랫폼 성과 화면에서 보고서를 내려받는 수집 스크립트를 맡습니다. |
| SQL | 프로젝트별 원화 합계와 사유별 분포를 집계합니다. |
| Markdown | 프로젝트별 집계 리포트와 주간 보고 표를 파일로 냅니다. |
✗ fail → 미선언이 절반을 넘으면 프로파일을 먼저 채웁니다.
✓ pass → 2주차 정답 대조로 넘어갑니다.
✗ fail → 어긋난 플랫폼을 모아 환산 계수와 기준 정의를 다시 봅니다.
✓ pass → 3주차 주간 보고 표로 넘어갑니다.
보고서 하나와 플랫폼 프로파일이 만나는 자리마다 한 표로 합칠 수 있는지 정하고 원화 금액을 냅니다. 못 합치면 통화 어긋남·수수료 기준 다름·기간 어긋남·금액 없음·플랫폼 미선언 중 어느 쪽인지 싣습니다. 리포트는 이 사유 코드로 묶습니다.
{"type": "object", "properties": {"verdict_no": {"type": "string"}, "report_no": {"type": "string"}, "project_raw": {"type": "string"}, "platform_raw": {"type": "string"}, "profile_no": {"type": ["string", "null"]}, "merge_code": {"type": "string", "enum": ["mergeable", "currency_mismatch", "fee_basis_differs", "period_misaligned", "amount_missing", "platform_undeclared"]}, "krw_amount": {"type": ["number", "null"], "description": "gross_amount 에 그 플랫폼 프로파일의 fx_to_krw 를 곱한 원화 금액입니다. 합칠 수 있는 보고서에만 채웁니다."}, "fx_to_krw": {"type": ["number", "null"]}, "owner_name": {"type": ["string", "null"]}, "evidence": {"type": "array", "items": {"type": "object", "properties": {"field": {"type": "string"}, "agg": {"type": ["string", "null"]}, "value": {}}, "required": ["field", "value"]}}, "summary": {"type": "string"}, "hedge": {"type": ["string", "null"]}}, "required": ["verdict_no", "report_no", "project_raw", "platform_raw", "merge_code", "evidence", "summary"]}[
{
"verdict_no": "MV-001",
"report_no": "PR-001",
"project_raw": "휴대용 정수기",
"platform_raw": "kickstarter",
"profile_no": "PF-01",
"merge_code": "mergeable",
"krw_amount": 113712000,
"fx_to_krw": 1380,
"owner_name": "GTM운영",
"evidence": [
{
"field": "gross_amount",
"agg": null,
"value": 82400
},
{
"field": "fx_to_krw",
"agg": null,
"value": 1380
}
],
"summary": "통화와 수수료 기준이 프로파일과 맞아 원화로 바꿔 합칩니다.",
"hedge": null
},
{
"verdict_no": "MV-002",
"report_no": "PR-002",
"project_raw": "휴대용 정수기",
"platform_raw": "Kickstarter",
"profile_no": "PF-01",
"merge_code": "period_misaligned",
"krw_amount": null,
"fx_to_krw": 1380,
"owner_name": "GTM운영",
"evidence": [
{
"field": "platform_raw",
"agg": null,
"value": "Kickstarter"
},
{
"field": "period_start",
"agg": null,
"value": "2026-07-16"
}
],
"summary": "플랫폼 이름을 대문자로 적어 왔으나 접으면 같은 프로파일이고, 기간이 앞 보고서와 이어져 있어 나란히 더하지 않습니다.",
"hedge": "같은 캠페인의 뒤 구간이라 합칠지 담당자가 정합니다."
},
{
"verdict_no": "MV-003",
"report_no": "PR-003",
"project_raw": "휴대용 정수기",
"platform_raw": "makuake",
"profile_no": "PF-02",
"merge_code": "fee_basis_differs",
"krw_amount": null,
"fx_to_krw": 9.2,
"owner_name": "GTM운영",
"evidence": [
{
"field": "fee_basis_raw",
"agg": null,
"value": "net"
},
{
"field": "period_basis_raw",
"agg": null,
"value": "campaign"
}
],
"summary": "수수료를 뺀 금액이라 다른 보고서와 그대로 더하면 실적이 작게 잡힙니다.",
"hedge": null
},
{
"verdict_no": "MV-004",
"report_no": "PR-006",
"project_raw": "접이식 키보드",
"platform_raw": "kickstarter",
"profile_no": "PF-01",
"merge_code": "currency_mismatch",
"krw_amount": null,
"fx_to_krw": 1380,
"owner_name": "GTM운영",
"evidence": [
{
"field": "currency_raw",
"agg": null,
"value": null
},
{
"field": "fx_to_krw",
"agg": null,
"value": 1380
}
],
"summary": "통화가 비어 있어 달러로 볼지 확인하지 않고는 환산하지 않습니다.",
"hedge": null
},
{
"verdict_no": "MV-005",
"report_no": "PR-007",
"project_raw": "캠핑 랜턴",
"platform_raw": "kickstarter",
"profile_no": "PF-01",
"merge_code": "amount_missing",
"krw_amount": null,
"fx_to_krw": 1380,
"owner_name": "GTM운영",
"evidence": [
{
"field": "gross_amount",
"agg": null,
"value": null
},
{
"field": "backer_count",
"agg": null,
"value": 880
}
],
"summary": "후원자 수는 있는데 금액이 비어 합계에 넣을 수 없습니다.",
"hedge": null
},
{
"verdict_no": "MV-006",
"report_no": "PR-008",
"project_raw": "캠핑 랜턴",
"platform_raw": "makuake",
"profile_no": "PF-02",
"merge_code": "period_misaligned",
"krw_amount": null,
"fx_to_krw": 9.2,
"owner_name": "GTM운영",
"evidence": [
{
"field": "period_start",
"agg": null,
"value": "2026-05-15"
},
{
"field": "period_end",
"agg": null,
"value": "2026-07-01"
}
],
"summary": "같은 프로젝트인데 기간이 닷새 밀려 있어 나란히 놓으면 비교가 어긋납니다.",
"hedge": null
},
{
"verdict_no": "MV-007",
"report_no": "PR-009",
"project_raw": "캠핑 랜턴",
"platform_raw": "indiegogo",
"profile_no": null,
"merge_code": "platform_undeclared",
"krw_amount": null,
"fx_to_krw": null,
"owner_name": null,
"evidence": [
{
"field": "platform_raw",
"agg": null,
"value": "indiegogo"
},
{
"field": "profile_no",
"agg": "count",
"value": 12
}
],
"summary": "프로파일 열두 행에 없는 플랫폼이라 환율과 기준을 정해 두지 않았습니다.",
"hedge": null
},
{
"verdict_no": "MV-008",
"report_no": "PR-012",
"project_raw": "무선 전동드릴",
"platform_raw": "makuake",
"profile_no": "PF-02",
"merge_code": "period_misaligned",
"krw_amount": null,
"fx_to_krw": 9.2,
"owner_name": "GTM운영",
"evidence": [
{
"field": "period_end",
"agg": null,
"value": null
},
{
"field": "period_start",
"agg": null,
"value": "2026-04-01"
}
],
"summary": "마감일이 비어 있어 어느 구간의 실적인지 정하지 못합니다.",
"hedge": "진행 중인 캠페인일 수 있어 담당자가 상태를 확인합니다."
}
][자동 검증 · 코드가 판정합니다] 1. merge_code 가 enum 여섯 값 중 하나인지 확인합니다. 2. verdict_no·report_no·project_raw·platform_raw·merge_code·evidence·summary 가 모두 채워졌는지 확인합니다. 3. report_no 가 보고서에 실재하는 번호인지 대조합니다. 4. profile_no 가 있으면 프로파일에 실재하는 행 번호인지 대조합니다. 5. profile_no 가 있으면 fx_to_krw·owner_name 이 그 프로파일 행의 값과 같은지 대조합니다. 6. platform_raw 를 대소문자를 접어 프로파일과 맞추고, 맞는 행이 없으면 merge_code 가 platform_undeclared 인지 확인합니다. 7. krw_amount 를 gross_amount 에 fx_to_krw 를 곱해 다시 계산해 같은지 확인합니다. 8. gross_amount 가 비어 있으면 merge_code 가 amount_missing 인지 확인합니다. 9. currency_raw 가 비었거나 프로파일의 통화와 다르면 merge_code 가 currency_mismatch 인지 확인합니다. 10. fee_basis_raw 가 프로파일의 수수료 기준과 다르면 merge_code 가 fee_basis_differs 인지 확인합니다. 11. 같은 project_raw 를 올린 다른 플랫폼 보고서와 period_start 가 다르거나 period_end 가 비면 merge_code 가 period_misaligned 인지 다시 확인합니다. 12. merge_code 가 mergeable 이면 위 검사를 모두 통과하고 krw_amount 가 채워졌는지 다시 확인합니다. 13. evidence 의 field 이름이 보고서와 프로파일에 실재하는 컬럼인지 대조합니다. 14. agg 가 없는 evidence 의 value 가 그 컬럼에 수록된 행 값과 같은지 확인합니다. 15. summary 가 존댓말로 끝나는지 확인합니다. [평가 러너 · 2주차] 공개 양식으로 만든 보고서 400건에 손으로 계산한 정답 원화 합계와 대조해 일치율과 사유 코드별 분포를 내고, 미선언이 몰리는 플랫폼을 목록으로 냅니다. [수동 검증 · 사람이 봅니다] 1. 새 플랫폼의 통화와 수수료 기준을 담당 조직이 정합니다. 2. 수수료를 뺀 금액으로 온 보고서를 어떻게 되살릴지 담당자가 정합니다.