모두의포트폴리오
PE · FDE 직군을 위한 포트폴리오 밀키트
예전 판입니다 (1판)이 문서는 2026-08-02 에 새 판으로 개정됐습니다. 결과를 보여 주기만 하던 템플릿 추천 화면을 걷어내고, 원고가 상자를 얼마나 넘치는지 계산해 운영자가 슬라이드마다 처리안을 골라야 확정본 내보내기가 열리는 검수 화면으로 다시 썼습니다.최신 판 보기 →
경력미리디 · [미리캔버스] Product Engineer (계약직)

원하는 디자인을 말하면 맞는 템플릿과 문구를 근거와 함께 추천하는 도구

미리디 공고에서 뽑은 세 가지 시그널.

미리디 미리캔버스는 2,000만 고객의 디자인·템플릿 사용 데이터를 가진 플랫폼이라, 의도에 맞는 템플릿·문구를 추천하는 이 도구는 미리캔버스의 실제 템플릿 사용 데이터가 있어야 추천을 검증한다.

01

누구나 쉽게 디자인

'디자인 지식 없어도 템플릿·요소로 작품 제작'. 의도 기반 추천이 그 쉬움을 한 단계 더 높임.

디자인템플릿쉽게
02

2,000만 사용자 데이터

'2,000만 고객'. 템플릿 사용 데이터로 추천 근거를 만들 수 있는 규모.

2,000만플랫폼미리캔버스
03

AI 기술 고도화·글로벌

'AI 고도화·해외 현지화'. 다국어 카피 제안이 글로벌 확장의 1주 단위.

AI글로벌현지화

포트폴리오 요약

사용자 의도(키워드·용도·톤)를 받아 태그·사용 데이터로 맞는 템플릿을 추천하고, 문구 카피를 근거와 함께 제안하는 1주 포트폴리오.

고객 정의

미리디 PE. 사용자가 템플릿을 일일이 뒤지던 탐색을, 의도 기반 추천 + 카피 제안 도구로 옮기고 싶은 사람.

고민 지점

템플릿에 태그·사용 데이터를 붙이면, 도구가 (a) 사용자 의도에 맞는 템플릿을 근거와 함께 추천하고 (b) 용도에 맞는 카피를 제안한다.

주차별 일정

1주차여기까지로 완성

의도 기반 템플릿 추천 + 카피 제안

사용자 의도를 받아 태그·사용 데이터로 맞는 템플릿을 추천하고 문구 카피를 근거와 함께 제안하는 동작하는 도구.

  1. 1일 · 템플릿 태그·사용 데이터 스키마 설계 + 의도-태그 매칭 규칙 정의
  2. 2-3일 · 템플릿 ingest(PostgreSQL) + 임베딩 + 매칭 점수 + Zod 검증
  3. 4일 · 의도 기반 추천 + 태그 근거 + 카피 제안 생성
  4. 5일 · 추천 UI(React)추천 템플릿·매칭 근거·카피 한 화면
  5. 6일 · 일부러 만든 결측·미등록·표기 흔들림 템플릿 30종으로 추천이 안 깨지는지 점검 + 5% 사람 확인
  6. 7일 · 7일치 시연 영상 + 직접 만든 정답과 비교한 기준선여기까지가 1주차 완성품
2주차선택 성장

추천 적합도 검증

추천 템플릿의 클릭/사용 전환으로 적합도를 재고, 카피 품질을 보여주는 대시보드.

  1. 8-9일 · 추천 클릭/사용 전환 라벨로 적합도 측정 + 카피 채택률
  2. 10-11일 · 매칭 가중치 튜닝 + 추천 다양성 점검
3주차선택 성장

다국어 카피 확장

용도별 카피를 다국어로 확장해 글로벌 사용자에게 맞추는 단계.

  1. 12-14일 · 용도별 카피 다국어 확장 + 현지화 톤 적용
  2. 15일 · 다국어 카피 시연 + 3주 통합 영상

데모 · 측정 지표

01

의도를 넣으면 맞는 템플릿과 카피가 근거와 함께 몇 초 안에 나오는 걸 시연한다

02

추천 근거로 인용한 태그가 실제 템플릿에 존재하는 비율 100%

측정: 태그 일치 규칙, 표본: 추천 200건

03

일부러 만든 결측·미등록 템플릿 30종을 넣어도 추천이 멈추지 않고 처리되는 걸 시연한다

정직 경계선

진짜 성능 검증은 여기서 멈춘다

위 수치는 더미데이터 자가채점이며, 실제 추천 적합도는 미리디 실데이터 + 실 검수자가 있어야 측정 가능. 이 포트폴리오는 그 검증을 바로 돌릴 수 있는 상태까지 만든다.

미리 알아둬야 할 것들

이건 고객·실데이터 없이 혼자 만든 포트폴리오라 모든 수치는 합성 데이터 자가채점이다. 면접에서 '데모 동작 + 실검증 준비 상태'로 솔직히 설명하는 게 오히려 신뢰를 준다

정답을 내가 만들었으니 잘 맞는 게 당연. 그래서 결측·경계·미등록·표기 흔들림 케이스를 더미에 일부러 섞어 쉬운 문제만 푸는 게 아님을 보여준다

인기 편향: 사용 많은 템플릿이 과대 추천될 수 있어 use_count 보정·신규 노출 규칙을 둔다

실제 도입 시 달라지는 것: 실 템플릿 분포·언어가 더미와 다르므로 태그 체계·매칭을 실데이터로 맞춰야 한다(도입 단계 과제)

더미 데이터

① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.

templatesTABLE· 12 rows

디자인 템플릿 태그·사용 데이터를 묶어 의도 매칭 추천 입력으로 쓴다

② templates.seed.json 다운로드
① 인라인 샘플 (프리뷰 5 / 12)
template_idtitle_rawtemplate_keytagsuse_countratinglang
T900세일포스터(구버전)—[]0—ko
T901템플릿0tpl_0["청첩장"]0—ko
T902인기만점tpl_2["포스터"]99,9995en
T903미등록템플릿—["배너"]502ja
T000템플릿0tpl_0["포스터"]1003.5ko
③ 증강 프롬프트 (본인 LLM 에 붙여서 N 배 늘리기)
z.object({ template_id: z.string(), title_raw: z.string(), template_key: z.string().nullable(), tags: z.array(z.string()), use_count: z.number(), rating: z.number().nullable(), lang: z.string() }). 쉬운 데이터만 만들지 말 것. 다음 하드 케이스를 의도적으로 섞어라: rating null/tags 빈 배열(미분류), use_count 0(신규)·극단, template_key null 미등록, title_raw 표기 흔들림(구버전/별칭), lang 비지원(ja). 형식 깨뜨리기 시도 3건도 별도로.
schema (3 층의 단일 출처)
z.object({ template_id: z.string(), title_raw: z.string(), template_key: z.string().nullable(), tags: z.array(z.string()), use_count: z.number(), rating: z.number().nullable(), lang: z.string() })

기술 상세 · 아키텍처·운영·출력 스키마

기술 스택 매핑
TypeScript추천 렌더 + Zod 런타임 검증
React추천·카피 UI
Next.js추천 도구 앱 셸
PostgreSQL템플릿 메타 단일 진실원 + 사용 집계 뷰
Docker추천 서비스 컨테이너 배포
LLM의도 매칭 설명 + 카피 생성
LLM 선택
model
임베딩 검색(템플릿 추천) + Claude Sonnet(카피 생성·매칭 설명)
prompt
의도 주입 + 태그 근거 인용 강제 + 카피 schema 강제 + 단정 가드
rationale
추천은 태그·임베딩 매칭, 카피·설명만 LLM. 템플릿 많아 RAG/임베딩 필수.
결정 게이트
1주차 끝1주차 완성품이 자동으로 도는가. 여기까지가 그 자체로 제출 가능한 완성품.

✓ pass → 그대로 멈춰도 완성품. 더 키우려면 2주차(추천 적합도 검증)로.

2주차 끝추천 적합도 검증 결과가 나오는가.

✓ pass → 여기서 멈춰도 완결. 더 키우려면 3주차(다국어 카피 확장)로.

재사용 레이어 · 코어 70% / 도메인 30%
core (재사용 가능)
  • 템플릿 임베딩 + 태그 매칭 추천 엔진
  • 카피 생성기 + 근거 인용
  • Zod 스키마 강제 검증
  • 추천 UI(React)
  • 5% 인간 spot-check 샘플러
domain (교체 대상)
  • 디자인 템플릿 태그 체계
  • 용도/톤 사전
  • 다국어 카피 가이드
출력 스키마 · reco_output

템플릿 추천 + 카피

schema (JSON Schema)
z.object({ template_id: z.string(), score: z.number(), matched_tags: z.array(z.string()), copy: z.string(), note: z.string() })
모범 출력 (3)
[
  {
    "template_id": "T001",
    "score": 0.83,
    "matched_tags": [
      "이벤트",
      "심플"
    ],
    "copy": "여름 세일, 지금 시작!",
    "note": ""
  },
  {
    "template_id": "T901",
    "score": 0.4,
    "matched_tags": [
      "청첩장"
    ],
    "copy": "두 사람의 시작을 알립니다",
    "note": "신규. 사용 데이터 부족"
  },
  {
    "template_id": "T900",
    "score": 0.2,
    "matched_tags": [],
    "copy": "-",
    "note": "태그 결측. 확인 필요"
  }
]
검증 노트 (자동 vs 수동)

matched_tags 가 실제 템플릿에 존재하는지는 자동 검증, copy 품질은 사람/judge 검증.