FrugalFinder
FrugalFinder
최고의 가성비 딜 찾기 서비스. 원하는 것 + 이유 + 예산을 제출하면, FrugalBot 에이전트가 주기적으로 스캔하여 최고의 가치 기회를 반환합니다 — 가장 싼 것도, 가장 화려한 것도 아닌.
아키텍처 (MVP)
[Web UI / Telegram bot / MCP client agents]
↓ POST
Vercel serverless API ──→ Vercel KV store (wishlists + scans)
↓ ↑
FrugalBot analyzer │ scheduled re-scan
(OpenRouter LLM) ────────┘ (Vercel Cron, hourly tick)Related MCP server: ecommerce-mcp-server
엔드포인트
라우트 | 메서드 | 용도 |
| GET | 웹 UI: 위시리스트 제출, 분석 결과 보기 |
| POST | 위시리스트 생성 → 첫 FrugalBot 분석 실행 |
| GET/PATCH | 위시리스트 하나 조회 또는 업데이트 |
| GET/POST | 최신 스캔 폴링 / 지금 스캔 트리거 |
| POST | Cron 대상 — 만기된 모든 위시리스트 스캔 |
| POST | Telegram 웹훅 수신 |
| POST | 외부 AI 에이전트용 MCP Streamable HTTP 엔드포인트 |
| POST | 캠프장 예약 감시자 생성 (Recreation.gov) |
| GET/PATCH | 예약 감시자 목록/조회/수정 |
| POST | 예약 스캔 지금 트리거 |
| POST/GET | 3-모델 LLM 비교 스캔 / 성능 요약 |
| GET | 관리 대시보드: LLM 품질 대비 비용 모니터 |
캠프장 예약 감시자
여러 Recreation.gov 캠프장의 원하는 날짜 범위에서 빈자리를 모니터링합니다.
site_preference: "lakefront"는 취소로 빈자리가 생길 때 호숫가 사이트의 점수를 더 높게 매깁니다.
점수 산정: 가용성 + 선호도 일치 + 편의시설(그늘, 반려동물 허용, 포장 진입로) − 가격.
curl -X POST https://YOUR-DOMAIN.vercel.app/api/reservations \
-H 'Content-Type: application/json' \
-d '{"campground_ids":["233117","232665"],"date_window":"2026-10-09 to 2026-10-12","site_preference":"lakefront","cadence":"daily"}'알려진 제한 사항: Recreation.gov의 날짜 기반 가용성 엔드포인트는 현재 익명 호출자에게 404를 반환합니다
(API 변경). 스캐너는 공개 사이트 메타데이터 검색을 사용합니다(작동 확인됨:
루프, 속성, 상태, 가격). 날짜 수준 가용성이 다시 공개되면
getCampgroundSites()에 연결하세요 — 이후 모든 처리는 이미 지원합니다. ReserveAmerica(NC 주립공원)는
익명 API 호출을 차단합니다. 필요 시 쿠키/세션을 사용하여 제공자로 추가하세요.
멀티-LLM 비교 ("품질 대비 비용 관리")
POST /api/compare는 동일한 frugal-bot 프롬프트에 세 가지 모델 티어를 경쟁시킵니다:
티어 | 기본 모델 | 용도 |
|
| OpenRouter 자체 최적 모델 라우팅 |
|
| 가장 저렴한 웹 지원 모델 |
|
| 중간 가격대 웹 지원 모델 |
심판(anthropic/claude-opus-4.1)이 세 결과를 모두 블라인드(순서 셔플)로 평가하여 1–10점을 매깁니다.
모든 실행은 토큰/비용/점수/승리를 성능 저장소에 기록하며, GET /api/compare가 이를 집계하고
/admin.html이 시각화합니다. 모든 슬러그는 코드 변경 없이 주 단위로 환경 변수로 덮어쓸 수 있습니다:
PARETO_MODEL, BUDGET_WEB_MODEL, MID_WEB_MODEL, JUDGE_MODEL.
검증된 실전 실행: mid_web (Sonar) 9점 vs pareto (라우팅된 DeepSeek v4 flash) 8점 vs budget (GPT-4.1-nano) 4–7점, 총 비용 ≈ $0.05/비교.
환경 변수 (Vercel 대시보드 → Settings → Environment Variables에서 설정)
OPENROUTER_API_KEY(필수) — LLM 제공자FRUGAL_MODEL(선택, 기본stealth/ox-alpha) — 모든 OpenRouter 모델 슬러그KV_REST_API_URL,KV_REST_API_TOKEN(프로덕션 지속성에 필수) — Vercel → Storage에서 연결된 Vercel KV (Upstash) 데이터베이스WISHLIST_TOKEN(선택) —/api/wishlists공유 비밀CRON_SECRET(선택이지만 권장) —/api/scan-all보호TELEGRAM_BOT_TOKEN,TELEGRAM_WEBHOOK_SECRET(선택) — Telegram 수신MCP_TOKEN(선택) —/api/mcp공유 비밀PARETO_MODEL,BUDGET_WEB_MODEL,MID_WEB_MODEL,JUDGE_MODEL(선택) — LLM 비교 티어 오버라이드
공유 경로
위시리스트에 추가 (북마클릿)
Add to Wishlist라는 이름의 브라우저 북마크를 다음 URL로 생성하세요:
javascript:(function(){var u=location.href;var t=document.title;prompt('Send to FrugalFinder? Add budget/use hints:',t+'\n'+u)&&fetch('https://frugalfinder.vercel.app/api/wishlists',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({item:t,source_url:u,budget:'see notes',use_case:'shared from '+u,cadence:'daily'})}).then(r=>r.json()).then(d=>alert('Added! id='+d.id))})()어떤 제품 페이지에서든 클릭하면 해당 리스팅이 위시리스트 항목으로 제출됩니다.
이메일 (MVP 참고)
아직 연결되지 않음 — MVP는 웹 UI + Telegram + 북마클릿을 사용합니다. 이메일 수신은 인바운드 이메일 웹훅(예: Resend/Postmark → /api/wishlists)을 통해 자연스러운 v2 추가 기능입니다.
요금제 (권장)
티어 | 주기 | 가격 근거 |
무료 | 매일 | ~30 LLM 호출/월/항목, 무료 stealth 모델의 한계 비용 $0 ≈ 무시 가능한 인프라 |
Power | 매시간 | $0.01/스캔 × ~720 스캔/월 = $7.20/월/항목 — 월 $5 고정으로 책정, 여러 위시리스트를 한 시간별 cron 틱으로 배치하여 마진 확보 |
Pro (향후) | 매시간 + 우선순위 큐 + 이메일 다이제스트 | $12/월 |
단위 경제성은 분석기가 모든 만기 위시리스트를 단일 cron 패스(/api/scan-all)로 배치하여 콜드 스타트 오버헤드를 분산시키기 때문에 성립합니다.
인증 로드맵 (포스트-MVP)
MVP 지금: 인증 없음, 단일 사용자, 선택적 공유 비밀로 보호.
v1.1: 매직 링크 이메일 로그인 (Auth.js 또는 Clerk 무료 티어) → 사용자 ID로 키잉된 사용자별 위시리스트.
v2: Power/Pro 티어용 Stripe 결제, 사용량 측정 = 청구 기간당 스캔 수.
로컬 개발
npm install
vercel dev # needs `vercel link` once
npm test # node:test unit testsMCP 사용법 (ChatGPT/Claude/Codex 같은 외부 에이전트용)
MCP 지원 클라이언트를 다음에 연결하세요:
https://YOUR-DOMAIN.vercel.app/api/mcp헤더: 설정된 경우 x-mcp-token: <MCP_TOKEN>.
노출된 도구:
submit_wishlist(item, use_case, budget, flexibility?, cadence?, source_url?)→ 저장 + 즉시 분석get_wishlist(id)→ 최신 분석 및 스캔 기록 포함 전체 레코드list_wishlists()→ 모든 활성 위시리스트 요약trigger_scan(id)→ 대역 외 frugal-bot 스캔 강제 실행submit_reservation_watch(campground_ids, date_window?, site_preference?, min_features?, max_price?, cadence?, notes?)→ 캠프장 감시자 + 첫 스캔 (호숫가 선호 지원)list_reservations()→ 마지막 결과 포함 모든 예약 감시자trigger_reservation_scan(id)→ 예약 지금 재스캔run_model_comparison(item, use_case, budget, flexibility?)→ 3-티어 LLM 경쟁 + 심판 판정get_model_performance()→ 티어별 집계 품질/비용 통계
호출 에이전트는 제출 + 폴링으로 취급해야 합니다: 한 번 제출한 후 자신에게 맞는 주기로 get_wishlist를 호출하세요(또는 자체 스케줄러 대기). MCP 사양에는 임의 업데이트를 위한 푸시 채널이 없으므로 주기적 폴링이 표준 패턴입니다.
This server cannot be deployed
Maintenance
Related MCP Connectors
AI-powered product search, affiliate links, and price negotiation for e-commerce platforms
Personal-finance workspace for AI agents: accounts, spending, budgets, goals, and investments.
Directory of APIs, merchants, and tools AI agents can actually use.
AI Agent Utility Layer for agent safety, web monitoring, crypto research and tool discovery.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to save product URLs to a user's Wishfinity wishlist. When recommending products, the AI can generate a clickable link that saves items for later purchase or gifting.63 npm1MIT
- AlicenseAqualityFmaintenanceEnables AI agents to search products, lookup barcodes, and manage shopping carts and wishlists using free e-commerce APIs.8MIT
- FlicenseAqualityDmaintenanceEnables AI assistants to manage shopping lists and items (create, edit, delete, mark as purchased) via integration with a backend API.8-
- AlicenseNot gradedqualityDmaintenanceImplements the iwant.fyi demand-side protocol, enabling AI agents to express structured purchase intent, receive matched supply from multiple sources, and report outcomes.Apache 2.0