모두의포트폴리오
PE · FDE 직군을 위한 포트폴리오 밀키트
예전 판입니다 (1판)이 문서는 2026-08-02 에 새 판으로 개정됐습니다. 판정 결과를 표시만 하던 콘텐츠 QA 대시보드를 걷어내고, 이벤트 등록 요청서의 결함을 확인 질문으로 바꿔 담당자가 화면에서 답해야 등록 파일 내보내기가 열리는 사내 검수 화면으로 다시 썼습니다.최신 판 보기 →
경력트리노드 · [부산/경력 2년 이상] 코어셀 - 프로덕트 엔지니어

생성형 AI로 만든 게임 콘텐츠의 정책·품질을 자동 점검하는 도구

트리노드 공고에서 뽑은 세 가지 시그널.

트리노드는 포코팡 시리즈로 누적 1조 매출을 낸 게임사가 생성형 AI를 개발에 적용하는 곳이라, 생성 콘텐츠의 정책·품질을 점검하는 이 도구는 트리노드의 실제 게임 콘텐츠가 있어야 판정을 검증한다.

01

게임 개발에 생성형 AI

'생성형 AI 기술을 게임 개발 현장에서 실질 활용'. 생성 콘텐츠 QA가 그 활용의 안전 장치.

생성형 AI게임 개발서비스
02

문제 정의·해결 설계

'문제를 정의하고 해결 방향을 설계'. 콘텐츠 품질·정책 점검이 명확한 문제.

문제해결코어셀
03

인프라 PE

'인프라' 프로덕트 엔지니어. QA 파이프라인을 K8s/IaC 로 운영하는 게 핵심.

KubernetesTerraformAWS

포트폴리오 요약

생성형 AI가 만든 게임 콘텐츠(텍스트·메타)를 받아 정책 위반·품질 저하를 LLM-as-judge 와 규칙으로 점검하고 근거와 함께 플래그하는 1주 포트폴리오.

고객 정의

트리노드 코어셀 PE. 생성 콘텐츠를 사람이 일일이 검수하던 일을, 자동 QA + 플래그 도구로 옮기고 싶은 사람.

고민 지점

콘텐츠에 종류·정책을 붙이면, judge LLM 이 (a) 정책 위반을 일관 점검하고 (b) 품질 저하를 근거와 함께 플래그한다.

주차별 일정

1주차여기까지로 완성

콘텐츠 자동 QA + 플래그

생성 게임 콘텐츠를 받아 정책 위반·품질 저하를 규칙과 judge 로 점검하고 근거와 함께 플래그하는 동작하는 도구.

  1. 1일 · 콘텐츠 종류·정책 스키마 설계 + 정책·품질 점검 규칙 정의
  2. 2-3일 · 콘텐츠 ingest + 규칙 1차 필터 + judge 점검 프롬프트 v1 + Zod 검증
  3. 4일 · 품질 저하·정책 위반 플래그 + 근거 인용
  4. 5일 · QA 대시보드플래그 사유·품질 점수·근거 한 화면
  5. 6일 · 일부러 만든 위반·경계·미등록 콘텐츠 30종으로 QA 가 안 뚫리는지 점검 + 5% 사람 확인
  6. 7일 · 7일치 시연 영상 + 직접 만든 정답과 비교한 기준선여기까지가 1주차 완성품
2주차선택 성장

QA-사람 일치도 검증

검수자 2명 라벨과 QA 판정 일치도(κ)를 재고, 누락/오탐을 보여주는 대시보드.

  1. 8-9일 · 검수자 2명 라벨과 QA 판정 일치도 측정(Cohen’s κ) + 누락/오탐
  2. 10-11일 · judge 자기편향 점검 + 품질 임계 보정
3주차선택 성장

파이프라인 인라인 QA

생성 파이프라인에 QA 를 인라인으로 넣어 배포 전 자동 게이트하는 단계.

  1. 12-14일 · 생성 파이프라인 인라인 QA 게이트(K8s 워커)
  2. 15일 · 인라인 QA 시연 + 3주 통합 영상

데모 · 측정 지표

01

생성 콘텐츠를 넣으면 정책 위반·품질 플래그가 근거와 함께 나오는 걸 시연한다

02

명백한 정책 위반(규칙 정의)을 100% 잡는 걸 시연한다

측정: 규칙+judge, 표본: 위반 50건

03

일부러 만든 위반·경계·미등록 콘텐츠 30종을 넣어도 QA 가 멈추지 않고 처리되는 걸 시연한다

정직 경계선

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

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

미리 알아둬야 할 것들

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

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

judge 자기편향: 같은 모델 채점은 후할 수 있어 교차 채점·사람 spot-check 를 둔다

실제 도입 시 달라지는 것: 실 게임 콘텐츠·정책이 더미와 다르므로 정책 규칙·품질 기준을 실데이터로 맞춰야 한다(도입 단계 과제)

더미 데이터

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

game_assetsTABLE· 12 rows

생성 게임 콘텐츠를 묶어 QA 입력으로 쓴다

② game_assets.seed.json 다운로드
① 인라인 샘플 (프리뷰 5 / 12)
asset_idtitle_rawasset_keykindgen_textpolicy_flagquality
A900OO대사(구)—대사(생성 실패. 빈 출력)——
A901에셋0as_0아이템설명폭력적·부적절 표현 포함true0
A902완벽에셋as_2퀘스트(완벽 품질)false1
A903미등록에셋—대사정책 우회 시도—0.5
A000에셋0as_0대사생성된 게임 텍스트 0false0.6
③ 증강 프롬프트 (본인 LLM 에 붙여서 N 배 늘리기)
z.object({ asset_id: z.string(), title_raw: z.string(), asset_key: z.string().nullable(), kind: z.string(), gen_text: z.string(), policy_flag: z.boolean().nullable(), quality: z.number().nullable() }). 쉬운 데이터만 만들지 말 것. 다음 하드 케이스를 의도적으로 섞어라: policy_flag/quality null(미점검), quality 0/1, 빈 출력, asset_key null 미등록, title_raw 표기 흔들림, 정책 우회 콘텐츠. 형식 깨뜨리기 시도 3건도 별도로.
schema (3 층의 단일 출처)
z.object({ asset_id: z.string(), title_raw: z.string(), asset_key: z.string().nullable(), kind: z.string(), gen_text: z.string(), policy_flag: z.boolean().nullable(), quality: z.number().nullable() })

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

기술 스택 매핑
LLM정책·품질 LLM-as-judge 점검
AWS콘텐츠 스토리지 + 배포
GCP보조 추론·벡터
KubernetesQA 워커 오케스트레이션
TerraformQA 파이프라인 IaC
LLM 선택
model
규칙 기반 정책 1차 필터 + Claude Sonnet(품질·정책 judge)
prompt
few-shot 3 + 정책 주입 + 근거 인용 강제 + judge 자기편향 가드 + Zod schema 강제
rationale
명백한 정책 위반은 규칙으로, 미묘한 품질만 judge. 게임 규모라 K8s 병렬 QA.
결정 게이트
1주차 끝1주차 완성품이 자동으로 도는가. 여기까지가 그 자체로 제출 가능한 완성품.

✓ pass → 그대로 멈춰도 완성품. 더 키우려면 2주차(QA-사람 일치도 검증)로.

2주차 끝QA-사람 일치도 검증 결과가 나오는가.

✓ pass → 여기서 멈춰도 완결. 더 키우려면 3주차(파이프라인 인라인 QA)로.

재사용 레이어 · 코어 70% / 도메인 30%
core (재사용 가능)
  • LLM-as-judge QA 파이프라인 + 자기편향 가드
  • 정책 규칙 1차 필터
  • 근거 부착 + 플래그
  • QA 대시보드
  • 5% 인간 spot-check 샘플러
domain (교체 대상)
  • 게임 콘텐츠 종류·정책 스키마
  • 품질 채점 기준
  • 콘텐츠 표기 정규화
출력 스키마 · qa_output

콘텐츠 QA 판정 + 근거

schema (JSON Schema)
z.object({ asset_id: z.string(), verdict: z.enum(['pass','block','review']), quality: z.number(), reasons: z.array(z.string()) })
모범 출력 (3)
[
  {
    "asset_id": "A901",
    "verdict": "block",
    "quality": 0.1,
    "reasons": [
      "부적절 표현"
    ]
  },
  {
    "asset_id": "A002",
    "verdict": "pass",
    "quality": 0.82,
    "reasons": []
  },
  {
    "asset_id": "A900",
    "verdict": "review",
    "quality": 0,
    "reasons": [
      "생성 실패. 확인 필요"
    ]
  }
]
검증 노트 (자동 vs 수동)

verdict 규칙·형식은 자동 검증, quality 점수는 사람/judge 일치도로 검증.