SnipMail - AI 기반 이메일 요약 및 감정 분석 웹앱

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발, 인공지능

대상자

  • 대상자: 웹 개발자, AI 엔지니어, DevOps 엔지니어
  • 난이도: 중급 이상 (Svelte, Bun, Drizzle ORM, AI 모델 통합 경험 필요)

핵심 요약

  • AI 기반 이메일 처리: LLM (예: GPT-4, Gemini, Claude)을 사용해 이메일 요약, 분류, 감정 분석, 사기/스팸 지표 계산
  • 유연한 백엔드 아키텍처: SvelteKit + Drizzle ORM + SQLite 기반, Cloudflare Durable Objects, PostgreSQL, MySQL 등으로 확장 가능
  • AI 모델 통합: Vercel AI SDK를 통해 여러 LLM 동시 사용 지원 (openai, anthropic, gemini)

섹션별 세부 요약

1. 프로젝트 개요

  • 기능: 이메일 요약, 분류, 감정 기반 순위 매기기, 사기/스팸 지표 분석
  • 테스트 방법: demo 웹사이트에서 계정 생성 후 Postmark 웹훅으로 이메일 수신
  • 기술 스택: Bun (런타임), Svelte 5 + SvelteKit (프론트엔드/백엔드), Tailwind + Skeleton (UI)

2. 데이터베이스 구성

  • 기본 설정: SQLite + Drizzle ORM (기본 드라이버: better-sqlite3)
  • 확장 옵션: Cloudflare Durable Objects, LibSQL, Turso, Bun SQL, PostgreSQL, MySQL 지원
  • 구성 파일: drizzle.config.ts, src/lib/server/db/index.ts에서 설정 가능

3. AI 모델 통합

  • LLM 구성:

```typescript

export const LLMs = {

structuredOutputs: [!!env.OPENAI_API_KEY && openai("gpt-4.1", { structuredOutputs: true }), ...],

text: [!!env.ANTHROPIC_API_KEY && anthropic("claude-4-opus-20250514"), ...]

};

```

  • 랜덤 LLM 선택: getRandomLLM() 함수로 structuredOutputs 또는 일반 텍스트 모델 랜덤 선택
  • zod 활용: LLM의 구조화된 출력을 위해 zod 스키마 사용

4. Postmark API 연동

  • 웹훅 처리: ChatGPTzod 스키마 및 TypeScript 타입 생성
  • 테스트 도구: Requestbin으로 웹훅 데이터 모킹, "plus addressing" 이메일 주소 처리 학습

결론

  • 실무 적용 팁: Drizzle ORM의 유연성과 Vercel AI SDK를 활용해 백엔드/LLM 스택을 쉽게 확장 가능
  • 추천: GitHub 저장소에서 bun run db:generatebun run db:push로 로컬 환경 구축 후 POSTMARK_INBOUND_EMAIL_ADDRESS 설정
  • 핵심 가치: AI 기반 이메일 분류와 감정 분석을 위한 높은 확장성과 유연한 기술 스택 선택 가능