Amazon Nova AI 해커톤은 Amazon이 Devpost를 통해 진행한 글로벌 AI 해커톤이다. Amazon Nova 모델군(특히 Nova Lite, Nova Pro)을 활용한 에이전틱 AI 솔루션을 출품하는 형식이며, 총 상금은 $40K 현금 + $55K AWS 크레딧 규모였다.
이 글은 해커톤에 단독으로 참가하여 ResumeAI 라는 AI 이력서 플랫폼을 제출한 과정의 회고이다. 결과보다는 짧은 기간 동안 무엇을 어떻게 결정했고, 어떤 부분에서 막혔으며, 무엇을 배웠는지에 초점을 둔다.
프로젝트 개요
| 항목 | 내용 |
|---|---|
| 해커톤 | Amazon Nova AI Hackathon (Devpost) |
| 카테고리 | Agentic AI |
| 프로젝트 | ResumeAI — AI 이력서 생성 및 분석 플랫폼 |
| 핵심 모델 | Amazon Nova Lite (AWS Bedrock 경유) |
| 기간 | 약 5주 (2026.02 ~ 2026.03) |
| 인원 | 1인 (기획·개발·디자인·배포·영상 전 과정) |
| GitHub | leesgit/ai-resume-service |
| AWS 빌더 글 | How I built ResumeAI |
| 데모 영상 | YouTube |
1. 문제 정의 — 왜 "이력서"였는가
이직 준비를 시작하면서 직접 겪었던 문제가 있었다. 여기저기 흩어진 정보를 매번 다시 이력서에 옮겨 적어야 한다는 점이다. GitHub의 프로젝트, 블로그의 글, LinkedIn의 경력, YouTube 발표 영상 — 모두 같은 사람의 같은 경력을 가리키는 데이터인데, 회사마다 양식에 맞춰 다시 정리해야 한다.
여기에 한 가지 가설을 세웠다.
"링크만 던지면 AI가 알아서 분석해 이력서를 만들어주면 안 될까?"
해커톤 카테고리가 Agentic AI였기 때문에, "여러 데이터 소스를 자율적으로 분석하고 통합하는 에이전트" 라는 문제 정의가 자연스럽게 도출됐다.
2. 기술 선택 — Nova Lite를 고른 이유
해커톤 규정상 Amazon Nova 모델군 사용이 필수였다. Nova Pro와 Nova Lite 중에서 Nova Lite를 택한 이유는 단순했다.
| 모델 | 입력 (1M 토큰) | 출력 (1M 토큰) |
|---|---|---|
| Nova Lite | $0.06 | $0.24 |
| Nova Pro | $0.80 | $3.20 |
가격 차이가 약 13배이다. 이력서 분석은 다단계 LLM 호출이 필요한 작업이라 토큰 사용량이 빠르게 누적된다. 한정된 AWS 크레딧($100) 안에서 충분한 테스트와 개선 사이클을 돌리려면 Lite 쪽이 합리적이었다.
품질 차이는 분명 존재했지만, 프롬프트 설계와 다단계 분리로 상당 부분 보완할 수 있었다.
전체 스택
Frontend: Next.js 16 + React 19 + TypeScript
Backend: Next.js API Routes (Node.js)
AI: AWS Bedrock + Amazon Nova Lite
Auth: NextAuth
i18n: 한국어 / 영어
Deploy: Vercel
3. 아키텍처 — Multi-pass 분석 구조
핵심 기능은 "링크를 던지면 이력서가 나온다"이다. 이를 구현하려면 다음 단계가 필요했다.
[사용자 입력]
↓
GitHub / LinkedIn / YouTube / 블로그 URL
↓
[1단계] 각 소스별 데이터 수집 (병렬)
↓
[2단계] 데이터 정규화 (텍스트 통합)
↓
[3단계] Nova Lite로 추론 (요약, 경력 추출, 매칭 포인트)
↓
[4단계] 구조화된 이력서 JSON 생성
↓
[5단계] 검증 및 보정
각 단계마다 별도의 프롬프트와 LLM 호출이 있다. 처음에는 단일 호출로 전체를 처리하려 했으나, 출력 품질이 일정하지 않았다. 단계를 쪼개니 각 단계의 책임이 명확해지고, 디버깅도 훨씬 수월해졌다.
YouTube 채널 분석 사례
/api/analyze/youtube 엔드포인트는 YouTube oEmbed API를 먼저 호출해 메타데이터를 수집한 뒤, 페이지를 직접 fetch해 추가 정보를 보강한다.
const oembedUrl = `https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=${videoId}&format=json`;
const meta = await fetch(oembedUrl).then(r => r.json());
const pageRes = await fetch(`https://www.youtube.com/watch?v=${videoId}`, {
headers: { 'User-Agent': 'Mozilla/5.0' }
});
이 단계의 결과물을 Nova Lite로 넘기면 "이 사람은 어떤 발표나 시연을 했는가"를 텍스트로 정리해준다. 링크 하나에서 경력 한 줄을 끌어내는 변환이 가능해진 것이다.
4. 어려웠던 점 — 첫 단일 호출의 한계
가장 크게 막혔던 부분은 Nova Lite의 단일 호출 결과가 일관되지 않는 문제였다.
위반 사례
처음에는 다음과 같이 한 번에 모든 것을 시켰다.
"다음 URL들의 정보를 종합해 이력서를 만들어줘:
- https://github.com/leesgit
- https://leesmemo.tistory.com/
- https://youtube.com/..."
결과는 그때그때 달랐다. 어떤 호출에서는 GitHub만 분석하고, 어떤 호출에서는 경력 연도를 잘못 추출했다. 출력 형식도 마크다운, JSON, 자연어가 섞여 나왔다.
개선안
다단계로 쪼개고 각 단계에 명시적 JSON 스키마를 요구했다.
Step 1: GitHub URL → 리포지토리 요약 JSON
Step 2: 블로그 URL → 글 카테고리/주제 JSON
Step 3: YouTube URL → 발표 주제 JSON
Step 4: 위 결과 통합 → 이력서 JSON (스키마 명시)
Step 5: 직무 요구사항과 매칭 → 매칭 점수 JSON
각 단계의 출력이 다음 단계의 입력이 되도록 강제하니 결과가 안정됐다. 토큰 사용량은 늘어났지만, Nova Lite의 가격대 덕분에 감당 가능한 수준이었다.
핵심 포인트:
- LLM에게 한 번에 너무 많은 책임을 주지 않는다
- 출력 형식은 자연어가 아닌 JSON 스키마로 강제한다
- 단계 간 의존성을 명확히 한다
5. 시연 영상 제작 — 의외로 가장 오래 걸린 부분
코드 작성보다 데모 영상 제작에 더 많은 시간이 걸렸다. 3분 분량 시연 영상에 들어가야 할 것은 다음과 같다.
- 문제 정의 (10초)
- 솔루션 개요 (20초)
- 실제 사용 시연 (90초)
- 아키텍처 설명 (30초)
- 결과물 강조 (30초)
demo/ 디렉토리에 Playwright 기반 자동 캡처 스크립트를 미리 작성해뒀다.
// capture-with-subs.mjs
import { chromium } from 'playwright';
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('http://localhost:3000');
await page.fill('[data-testid="github-input"]', 'https://github.com/leesgit');
await page.click('[data-testid="analyze-btn"]');
await page.waitForSelector('[data-testid="resume-result"]');
자동 캡처 덕분에 화면 녹화를 여러 번 다시 찍을 필요가 없었다. 자막은 영문/한글 두 트랙으로 준비해 글로벌 심사자가 이해할 수 있도록 했다.
완성된 영상: YouTube
6. 블로그 보너스 — builder.aws.com 게시
해커톤에는 블로그 보너스가 있었다. builder.aws.com에 작성 글을 올리고 Amazon-Nova 태그를 추가하면 $200 추가 크레딧을 받는 조건이다(선착순 100명).
builder.aws.com에 처음 글을 쓰는 입장에서 챙겨야 했던 점이 몇 가지 있었다.
- 태그 정확히 입력:
Amazon-Nova-Hackathon태그를 빠뜨리면 카운트에 포함되지 않는다 - Devpost 제출 폼에 블로그 URL 첨부: 별도 항목이라 놓치기 쉽다
- 영문 작성: 글로벌 심사를 고려해 영어로 작성하는 것이 유리하다
결국 How I built ResumeAI — An AI-Powered Career Platform with Amazon Nova Lite 라는 제목으로 영문 글을 게시했다.
7. 배운 점 — 해커톤이 이직 준비에 미친 영향
순위에 오르지는 못했지만, 5주간의 작업이 이력서나 면접에 활용할 수 있는 자산으로 남았다.
기술적으로 배운 것
- AWS Bedrock 실무 경험: Nova Lite 호출 구조, Boto3/SDK 사용법, 비용 모니터링
- Multi-pass LLM 패턴: 한 번에 다 시키는 것보다 단계를 나누는 것이 안정적이다
- 링크 기반 데이터 수집: oEmbed, GitHub API, 블로그 RSS 등을 통합하는 패턴
- Next.js 16 + React 19: 출시 직후 버전을 실무에 적용해본 경험
프로세스에서 배운 것
- 마감을 역산해 일정 짜기: 시연 영상, 블로그, Devpost 제출 등 부차적 작업이 코드 작성만큼 시간을 잡아먹는다
- MVP를 일찍 만들고 개선하기: 2/15에 1차 제출을 끝내고, 이후 한 달간 개선했다. 데드라인 직전 몰아치는 것보다 훨씬 안정적이었다
- 자동화 가능한 것은 자동화: 데모 캡처 스크립트, 자막 생성 스크립트 등은 1회용처럼 보여도 실제로는 여러 번 재실행하게 된다
작업이 남긴 흔적
| 자산 | 용도 |
|---|---|
| GitHub 리포지토리 | 포트폴리오 + 코드 리뷰 자료 |
| builder.aws.com 글 | 영문 글 한 편 추가 + AWS 생태계 참여 증명 |
| YouTube 데모 영상 | 면접 시 시연 자료, 블로그 임베드 |
| AWS Bedrock 실무 경험 | 면접 답변, "AWS 사용 경험" 항목 |
참고:
'정보' 카테고리의 다른 글
| 개인정보 처리 방침 (1) | 2020.01.09 |
|---|