Skip to main content
Glama

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

Веб-интерфейс: отправка списка желаний, просмотр анализа

/api/wishlists

POST

Создать список желаний → запускает первый анализ FrugalBot

/api/wishlists?id=

GET/PATCH

Получить или обновить один список желаний

/api/scan?id=

GET/POST

Получить последний скан / запустить скан сейчас

/api/scan-all

POST

Цель для cron — сканирует все подлежащие списки желаний

/api/telegram

POST

Приём вебхуков Telegram

/api/mcp

POST

MCP Streamable HTTP endpoint для внешних ИИ-агентов

/api/reservations

POST

Создать наблюдатель за бронированием кемпинга (Recreation.gov)

/api/reservations?id=

GET/PATCH

Список/получение/обновление наблюдателей за бронированиями

/api/reservations/scan?id=

POST

Запустить скан бронирований сейчас

/api/compare

POST/GET

Скан сравнения 3 моделей LLM / сводка производительности

/admin.html

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; добавьте как провайдера с cookies/сессией, если понадобится позже.

Сравнение нескольких LLM («контроль качества и стоимости»)

POST /api/compare запускает три уровня моделей на одном и том же промпте frugal-bot:

Уровень

Модель по умолчанию

Назначение

pareto

openrouter/auto

Маршрутизация лучшей модели от OpenRouter

budget_web

openai/gpt-4.1-nano (+web plugin)

самая дешёвая с поддержкой веба

mid_web

perplexity/sonar

среднего уровня с поддержкой веба

Затем судья (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 против pareto (маршрутизированный DeepSeek v4 flash) 8 против 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 KV (Upstash), подключённой в Vercel → Storage

  • 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 использует веб-интерфейс + Telegram + букмарклет. Приём писем — естественное дополнение v2 через вебхук входящей почты (например, Resend/Postmark → /api/wishlists).

Тарифные планы (рекомендуемые)

Уровень

Периодичность

Обоснование цены

Free

ежедневно

~30 вызовов LLM в месяц на позицию при нулевой предельной стоимости на бесплатных stealth-моделях ≈ незначительная инфраструктура

Power

ежечасно

$0.01/скан × ~720 сканов/мес = $7.20/мес за позицию — цена $5/мес фиксированно, маржа получается за счёт группировки нескольких списков желаний в один часовой cron-тик

Pro (в будущем)

ежечасно + приоритетная очередь + email-дайджесты

$12/мес

Экономика на единицу работает только потому, что анализатор группирует все подлежащие списки желаний в один cron-проход (/api/scan-all), амортизируя накладные расходы на холодный старт.

Дорожная карта аутентификации (после MVP)

  1. MVP сейчас: без аутентификации, один пользователь, защищено необязательными общими секретами.

  2. v1.1: вход по магической ссылке по электронной почте (Auth.js или бесплатный тариф Clerk) → списки желаний для каждого пользователя, привязанные к ID пользователя.

  3. v2: Stripe checkout для тарифов Power/Pro; учёт использования = количество сканов за расчётный период.

Локальная разработка

npm install
vercel dev   # needs `vercel link` once
npm test    # node:test unit tests

Использование MCP (для внешних агентов, таких как 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?) → гонка трёх уровней LLM + вердикт судьи

  • get_model_performance() → агрегированная статистика качества/стоимости по уровням

Вызывающие агенты должны рассматривать это как отправка + опрос: отправьте один раз, затем вызывайте get_wishlist с той периодичностью, которая им подходит (или ждите собственного планировщика). В спецификации MCP нет push-канала для произвольных обновлений, поэтому периодический опрос — стандартный паттерн.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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 npm
    1
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to manage shopping lists and items (create, edit, delete, mark as purchased) via integration with a backend API.
    8
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Implements 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