본문 바로가기

정보

Amazon Nova AI Hackathon 참가 후기

반응형

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분 분량 시연 영상에 들어가야 할 것은 다음과 같다.

  1. 문제 정의 (10초)
  2. 솔루션 개요 (20초)
  3. 실제 사용 시연 (90초)
  4. 아키텍처 설명 (30초)
  5. 결과물 강조 (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