Skip to content

hletrd/cherrypicker

Repository files navigation

CherryPicker

CherryPicker

내 소비에 맞는 카드 조합 찾기

TypeScript Astro Svelte Cards Issuers

Demo · 카드 데이터


뭐하는 건가요

카드마다 할인 항목도 다르고, 전월실적 조건도 다르고, 한도도 달라서 매번 어떤 카드를 써야 할지 헷갈려요. CherryPicker는 카드 명세서를 넣으면 항목별로 어떤 카드가 가장 이득인지 계산해 줘요.

한 장짜리로 밀어 쓸 때보다 얼마나 더 아낄 수 있는지도 비교할 수 있어요.

CherryPicker analyzes your credit card statement and finds the best card for each spending category, factoring in performance tiers, monthly caps, and reward types across 683 cards from 24 Korean issuers.


주요 기능

  • 명세서 분석: CSV, Excel, PDF 파일을 올리면 알아서 읽고 항목별로 분류
  • 거래 분류: 350개 이상 키워드 매칭 기반 분류 + 수동 수정 지원
  • 카드 추천: 전월실적, 할인한도까지 따져서 항목별로 가장 이득인 카드 조합 계산
  • 절약 비교: 카드 한 장으로 쓸 때와 체리피킹했을 때 차이를 한눈에
  • 683개 카드 데이터: 24개 카드사 혜택을 YAML로 정리
  • 웹 대시보드: GitHub Pages에서 바로 사용 가능. 기본 분석은 브라우저에서 처리돼요
  • CLI: 터미널에서 명세서 분석

거래 분류 방식

명세서에서 읽은 거래를 항목별로 나누는 과정이에요.

  1. 키워드 매칭 (350개 이상): "스타벅스"는 카페, "쿠팡"은 온라인쇼핑처럼 가맹점 이름으로 바로 분류
  2. AI 임베딩 (미구현): 현재 로드맵에 없음
  3. 수동 수정: 거래 목록에서 드롭다운으로 직접 고칠 수 있어요. 고친 다음 "변경 적용"을 누르면 추천이 다시 계산돼요

지원 카드사

카드사 카드 수 카드사 카드 수
신한카드 65 카카오뱅크 9
현대카드 48 수협은행 8
삼성카드 47 MG새마을금고 8
롯데카드 47 토스뱅크 5
KB국민카드 47 케이뱅크 5
하나카드 45 신협 4
우리카드 42 KDB산업은행 2
IBK기업은행 35 우체국 2
NH농협카드 34 제주은행 19
iM뱅크 21 BNK 19
BC카드 18 전북은행 11
SC제일은행 10 광주은행 10

기술 스택

Astro 6, Svelte 5, Tailwind CSS 4
파싱 PapaParse, SheetJS, pdfjs-dist
AI 분류 미구현 (로드맵에 없음)
데이터 Zod, YAML, 683+ 카드 규칙
배포 GitHub Pages (정적 사이트)
CLI/스크래퍼 Bun, Claude API
언어 TypeScript 5.9

프로젝트 구조

cherrypicker/
├── apps/web/              # Astro 정적 웹앱 (GitHub Pages)
│   ├── src/lib/parser/    # 브라우저용 파서 (CSV, XLSX, PDF)
│   ├── src/lib/analyzer.ts # 분석 파이프라인
│   ├── src/lib/categorizer-ai.ts # AI 분류기 자리표시자 (미구현)
│   └── public/data/       # 빌드된 cards.json
├── packages/
│   ├── core/              # 분류기, 계산기, 옵티마이저 (순수 TS)
│   ├── parser/            # Node/Bun용 파서 (CLI에서 사용)
│   ├── rules/data/cards/  # 카드사별 YAML (683+)
│   └── viz/               # 터미널 테이블, HTML 리포트
├── tools/
│   ├── cli/               # CLI 진입점
│   └── scraper/           # Claude API로 카드 혜택 수집
└── scripts/build-json.ts  # YAML → JSON 빌드

사용법

hletrd.github.io/cherrypicker에서 바로 써 볼 수 있어요. 명세서를 올리면 브라우저에서 바로 분석해요.

로컬 개발

git clone https://github.com/hletrd/cherrypicker.git
cd cherrypicker
bun install

# 카드 데이터 빌드
bun run scripts/build-json.ts

# 웹 개발 서버
bun run dev:web

# CLI로 명세서 분석
bun run analyze

카드 데이터

카드 혜택은 packages/rules/data/cards/{카드사}/{카드이름}.yaml 파일로 관리돼요.

card:
  id: "shinhan-b-big"
  issuer: "shinhan"
  name: "B.Big"
  nameKo: ""
  type: credit
  annualFee:
    domestic: 10000
    international: 13000

performanceTiers:
  - id: tier1
    label: "전월 30만원 이상"
    minSpending: 300000

rewards:
  - category: "public_transit"
    type: discount
    tiers:
      - performanceTier: tier1
        fixedAmount: 200
        monthlyCap: 6000

globalConstraints:
  monthlyTotalDiscountCap: 15000

카드 데이터 수정이나 새 카드 추가는 PR로 보내주세요.


라이선스

Apache License 2.0

About

내 소비에 맞는 카드 조합 찾기 — 561 cards, 24 issuers, browser AI categorization

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors