Portfolio Migration Agent (rewrite-my-report)

H. Choi
Personal Project

PDF 보고서를 포트폴리오용 마크다운으로 바꾸고, Notion에 한 번에 저장하는 에이전트입니다. 과제/실험 보고서 PDF를 업로드하면, 채용·포트폴리오용 구조(Title, One-line Summary, What I Built, Key Results, Representative Visuals, Tech Stack 등)로 재작성하고, 웹 미리보기와 Notion DB 저장까지 한 번에 처리합니다.

데모 영상 / 대표 이미지

데모: PDF 업로드 → 변환 → 미리보기 → Notion 저장

Portfolio Migration Agent 대표 이미지

대표 이미지

1. 개요

과제·실험 보고서는 보통 “목적 → 방법 → 결과 → 고찰” 구조로 작성되지만, 채용 포트폴리오나 Notion 정리에는 “한 줄 요약”, “무엇을 만들었는지”, “주요 결과”, “대표 시각 자료”, “기술 스택” 같은 형태가 더 적합합니다. 이 프로젝트는 Upstage Document Parse로 PDF에서 텍스트와 이미지를 추출하고, Upstage Solar LLM으로 고정 8단 구조의 포트폴리오용 마크다운을 생성한 뒤, Streamlit 웹 UI에서 미리보기하고 Notion API로 DB에 저장하는 파이프라인을 제공합니다.

2. 주요 기능

  • PDF 파싱: Upstage Document Parse로 텍스트 + 이미지 추출 (순서 유지)
  • 포트폴리오 재작성: Solar LLM으로 고정 8단 구조 문서 생성 (과제 톤 → 채용/포트폴리오 톤)
  • 이미지 관리: 문서별 assets/{doc_id}/ 격리, GitHub 업로드 후 Notion 이미지 블록 연결
  • 웹 UI: Streamlit — 업로드, 미리보기(base64 이미지), Notion 저장
  • Notion 연동: DB에 새 페이지 생성 또는 기존 페이지 purge 후 append, 이미지 최대 3장

3. 동작 흐름

  1. 사용자가 PDF를 Streamlit에 업로드
  2. pipeline.py 흐름: PDF → Upstage Parse → 파싱 결과 → Solar 프롬프트로 포트폴리오 마크다운 생성
  3. 이미지는 로컬 assets/{doc_id}/에 저장, 선택 시 GitHub에 업로드
  4. Notion 저장 시: 새 페이지 생성 또는 기존 페이지 내용 비우고 블록 append, 이미지 URL은 GitHub raw 링크 사용

4. 기술 스택

구분기술
언어Python 3
UIStreamlit
PDF/OCRUpstage Document Parse API
LLMUpstage Solar API
저장소Notion API, GitHub(이미지)

Python 3 Streamlit Upstage Document Parse Upstage Solar Notion API GitHub