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 | Веб-интерфейс: отправка списка желаний, просмотр анализа |
| POST | Создать список желаний → запускает первый анализ FrugalBot |
| GET/PATCH | Получить или обновить один список желаний |
| GET/POST | Получить последний скан / запустить скан сейчас |
| POST | Цель для cron — сканирует все подлежащие списки желаний |
| POST | Приём вебхуков Telegram |
| POST | MCP Streamable HTTP endpoint для внешних ИИ-агентов |
| 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; добавьте как провайдера с cookies/сессией, если понадобится позже.
Сравнение нескольких 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 против pareto (маршрутизированный DeepSeek v4 flash) 8 против budget (GPT-4.1-nano) 4–7, общая стоимость ≈ $0.05 за сравнение.
Переменные окружения (задаются в панели Vercel → Settings → Environment Variables)
OPENROUTER_API_KEY(обязательная) — провайдер LLMFRUGAL_MODEL(необязательная, по умолчаниюstealth/ox-alpha) — любой слаг модели OpenRouterKV_REST_API_URL,KV_REST_API_TOKEN(обязательные для продакшн-персистентности) — из базы данных Vercel KV (Upstash), подключённой в Vercel → StorageWISHLIST_TOKEN(необязательная) — общий секрет для/api/wishlistsCRON_SECRET(необязательная, но рекомендуется) — защищает/api/scan-allTELEGRAM_BOT_TOKEN,TELEGRAM_WEBHOOK_SECRET(необязательные) — приём TelegramMCP_TOKEN(необязательная) — общий секрет для/api/mcpPARETO_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)
MVP сейчас: без аутентификации, один пользователь, защищено необязательными общими секретами.
v1.1: вход по магической ссылке по электронной почте (Auth.js или бесплатный тариф Clerk) → списки желаний для каждого пользователя, привязанные к ID пользователя.
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-botsubmit_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-канала для произвольных обновлений, поэтому периодический опрос — стандартный паттерн.
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