피드로 돌아가기
Built an AI Engine That Turns Your GitHub + Resume Into a Full Notion Portfolio — Powered by MCP
Dev.toDev.to
Backend

Lamefolio AI가 GitHub 데이터 + 이력서를 Gemini 2.5 Flash와 MCP로 처리하여 Notion 포트폴리오를 자동 생성

Built an AI Engine That Turns Your GitHub + Resume Into a Full Notion Portfolio — Powered by MCP

Yatharth K2026년 3월 28일8intermediate

Context

개발자들은 포트폴리오 작성을 위해 GitHub에서 프로젝트 설명을 수동으로 복사하고, 기술 섹션을 수동으로 작성하며, 6개월마다 반복적으로 업데이트해야 하는 비효율적인 작업을 반복하고 있었다.

Technical Solution

  • GitHub 데이터 수집을 결정론적 작업으로 분리: Octokit REST API를 통해 저장소당 1회 호출로 메타데이터 및 깊은 데이터 추출, LLM 없이 순수 데이터 페칭
  • Gemini를 창의적 작업 중심으로 제한: 포트폴리오 스키마 생성, PDF/이미지 이력서 멀티모달 파싱, 함수 호출 기반 채팅, 개발 문서 생성만 담당
  • 5개 전문화 서비스 파이프라인 구성: GitHub Service → Gemini AI → Transformer → Notion Publishing을 Orchestrator Service가 순차적으로 체이닝
  • Transformer 서비스로 AI 생성 스키마를 Notion 블록 API 형식으로 변환: 4가지 템플릿 스타일(Default, Designer-Minimal, Hacker-Dark, Dev-Pro) 지원
  • MCP(Model Context Protocol) 서버로 생성_포트폴리오 및 생성_문서 도구 노출: 표준 입출력 전송으로 Claude Desktop, Cursor 등 MCP 호환 클라이언트 지원
  • 함수 호출 루프로 자율적 Notion 도구 사용: Gemini가 Notion 도구 호출을 결정하면 Orchestrator가 실행 후 결과를 반환, 최대 5회 반복
  • OAuth 동적 리다이렉트 URI 감지 함수 구현: 요청 헤더에서 프론트엔드 오리진을 감지하여 개발/프로덕션 환경의 하드코딩된 URL 문제 해결
  • 배치 블록 추가 및 500ms 지연으로 프론트엔드 스트리밍 경험 시뮬레이션: Notion API가 REST 기반만 지원(초당 3회 요청 제한)하므로, 실시간 진행률 표시바로 프리미엄 로딩 스켈레톤 표시
  • 멀티모달 이력서 수집 지원: PDF, 이미지, 인쇄된 이력서 사진을 Gemini로 처리하여 구조화된 경력 데이터로 변환
  • 신용 기반 생성 청구 시스템: Razorpay 통합으로 결제 관리 및 템플릿 마켓플레이스 구현

Key Takeaway

LLM을 창의적 작업(스키마 생성, 파싱, 다중 턴 대화)에만 사용하고 결정론적 작업(데이터 페칭, 블록 변환, API 호출)을 분리하면 토큰 낭비를 제거하면서 할루시네이션 위험을 최소화할 수 있다.


LLM을 활용한 멀티스텝 파이프라인 설계 시, 각 단계를 전문화된 서비스로 분리하고 결정론적 작업에서 LLM을 배제하면 비용 제어와 안정성을 동시에 확보할 수 있다. 특히 GitHub, Notion 등 외부 API 연동이 필요한 경우 데이터 페칭-AI 처리-블록 변환을 순차적으로 분리하는 아키텍처가 디버깅과 유지보수를 크게 단순화한다.

원문 읽기
Built an AI Engine That Turns Your GitHub + Resume Into a Full Notion Portfolio — Powered by MCP | Devpick