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 연동
- 웹훅 처리:
ChatGPT
로zod
스키마 및 TypeScript 타입 생성 - 테스트 도구:
Requestbin
으로 웹훅 데이터 모킹, "plus addressing" 이메일 주소 처리 학습
결론
- 실무 적용 팁:
Drizzle ORM
의 유연성과Vercel AI SDK
를 활용해 백엔드/LLM 스택을 쉽게 확장 가능 - 추천: GitHub 저장소에서
bun run db:generate
및bun run db:push
로 로컬 환경 구축 후POSTMARK_INBOUND_EMAIL_ADDRESS
설정 - 핵심 가치: AI 기반 이메일 분류와 감정 분석을 위한 높은 확장성과 유연한 기술 스택 선택 가능