Skip to main content
Glama

FrugalFinder

Búsqueda de ofertas con mejor valor como servicio. Envía qué quieres + por qué + presupuesto; un agente FrugalBot escanea periódicamente y devuelve la mejor oportunidad en términos de valor — no la más barata, no la más lujosa.

Arquitectura (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

Endpoints

Ruta

Método

Propósito

/

GET

Interfaz web: enviar lista de deseos, ver análisis

/api/wishlists

POST

Crear lista de deseos → ejecuta el primer análisis de FrugalBot

/api/wishlists?id=

GET/PATCH

Obtener o actualizar una lista de deseos

/api/scan?id=

GET/POST

Consultar el último escaneo / activar escaneo ahora

/api/scan-all

POST

Destino de cron — escanea todas las listas de deseos pendientes

/api/telegram

POST

Ingesta de webhook de Telegram

/api/mcp

POST

Endpoint HTTP Streamable de MCP para agentes de IA externos

/api/reservations

POST

Crear vigilante de reservas de campamento (Recreation.gov)

/api/reservations?id=

GET/PATCH

Listar/obtener/actualizar vigilantes de reservas

/api/reservations/scan?id=

POST

Activar escaneo de reservas ahora

/api/compare

POST/GET

Escaneo de comparación con 3 modelos de LLM / resumen de rendimiento

/admin.html

GET

Panel de administración: monitor de calidad vs. costo de LLM

Vigilante de reservas de campamento

Vigila múltiples campamentos de Recreation.gov para ver disponibilidad en tu ventana de fechas. site_preference: "lakefront" puntúa más alto los sitios frente al lago cuando se liberan por cancelación. Puntuación: disponibilidad + coincidencia de preferencia + características (sombra, mascotas, entrada pavimentada) − precio.

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"}'

Limitación conocida: el endpoint de disponibilidad por fechas de Recreation.gov actualmente devuelve 404 a llamadas anónimas (la API cambió). El escáner usa su búsqueda pública de metadatos del sitio (verificada funcionando: bucles, atributos, estado, precio). Cuando la disponibilidad a nivel de fecha se vuelva a exponer, conéctala en getCampgroundSites() — todo lo posterior ya lo maneja. ReserveAmerica (parques estatales de NC) bloquea llamadas anónimas a la API; agrégalo como proveedor con cookies/sesión si se necesita más adelante.

Comparación multi-LLM ("control de calidad vs. costo")

POST /api/compare hace competir tres niveles de modelos en el mismo prompt de frugal-bot:

Nivel

Modelo predeterminado

Propósito

pareto

openrouter/auto

Enrutamiento del mejor modelo propio de OpenRouter

budget_web

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

el más barato con capacidad web

mid_web

perplexity/sonar

gama media con capacidad web

Un juez (anthropic/claude-opus-4.1) luego clasifica los tres a ciegas (orden aleatorio), puntuando 1–10. Cada ejecución registra tokens/costo/puntuación/ganancias en el almacén de rendimiento; GET /api/compare los agrega y /admin.html los visualiza. Todos los slugs se pueden sobrescribir por variables de entorno semanalmente sin cambios de código: PARETO_MODEL, BUDGET_WEB_MODEL, MID_WEB_MODEL, JUDGE_MODEL.

Ejecución en vivo verificada: mid_web (Sonar) puntuó 9 vs pareto (DeepSeek v4 flash enrutado) 8 vs budget (GPT-4.1-nano) 4–7, costo total ≈ $0.05/comparación.

Variables de entorno (configurar en el panel de Vercel → Settings → Environment Variables)

  • OPENROUTER_API_KEY (obligatoria) — proveedor de LLM

  • FRUGAL_MODEL (opcional, predeterminado stealth/ox-alpha) — cualquier slug de modelo de OpenRouter

  • KV_REST_API_URL, KV_REST_API_TOKEN (obligatorias para persistencia en producción) — de una base de datos Vercel KV (Upstash) adjunta en Vercel → Storage

  • WISHLIST_TOKEN (opcional) — secreto compartido para /api/wishlists

  • CRON_SECRET (opcional pero recomendado) — protege /api/scan-all

  • TELEGRAM_BOT_TOKEN, TELEGRAM_WEBHOOK_SECRET (opcionales) — ingesta de Telegram

  • MCP_TOKEN (opcional) — secreto compartido para /api/mcp

  • PARETO_MODEL, BUDGET_WEB_MODEL, MID_WEB_MODEL, JUDGE_MODEL (opcionales) — anulaciones de nivel de comparación de LLM

Rutas para compartir

Añadir a lista de deseos (bookmarklet)

Crea un marcador del navegador llamado Añadir a lista de deseos con esta 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))})()

Haz clic en él en cualquier página de producto para enviar ese listado como entrada de lista de deseos.

Correo electrónico (nota del MVP)

Aún no conectado — el MVP usa interfaz web + Telegram + bookmarklet. La ingesta por correo es una adición natural para v2 mediante un webhook de correo entrante (p. ej. Resend/Postmark → /api/wishlists).

Niveles de precios (recomendados)

Nivel

Cadencia

Justificación del precio

Gratis

diaria

~30 llamadas de LLM/mes/artículo a $0 costo marginal en modelos stealth gratuitos ≈ infraestructura insignificante

Power

por hora

$0.01/escaneo × ~720 escaneos/mes = $7.20/mes por artículo — precio en $5/mes fijo, el margen proviene de agrupar múltiples listas de deseos en un solo tick de cron por hora

Pro (futuro)

por hora + cola prioritaria + resúmenes por correo

$12/mes

La economía unitaria solo funciona porque el analizador agrupa todas las listas de deseos pendientes en una sola pasada de cron (/api/scan-all), amortizando la sobrecarga de arranque en frío.

Hoja de ruta de autenticación (post-MVP)

  1. MVP ahora: sin autenticación, un solo usuario, protegido por secretos compartidos opcionales.

  2. v1.1: inicio de sesión por correo con enlace mágico (Auth.js o nivel gratuito de Clerk) → listas de deseos por usuario claveadas por ID de usuario.

  3. v2: checkout de Stripe para niveles Power/Pro; medición de uso = conteo de escaneos por período de facturación.

Desarrollo local

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

Uso de MCP (para agentes externos como ChatGPT/Claude/Codex)

Conecta un cliente compatible con MCP a:

https://YOUR-DOMAIN.vercel.app/api/mcp

Encabezados: x-mcp-token: <MCP_TOKEN> si está configurado.

Herramientas expuestas:

  • submit_wishlist(item, use_case, budget, flexibility?, cadence?, source_url?) → guarda + análisis inmediato

  • get_wishlist(id) → registro completo incl. último análisis e historial de escaneos

  • list_wishlists() → resumen de todas las listas de deseos activas

  • trigger_scan(id) → forzar un escaneo frugal-bot fuera de banda

  • submit_reservation_watch(campground_ids, date_window?, site_preference?, min_features?, max_price?, cadence?, notes?) → vigilante de campamento + primer escaneo (preferencia frente al lago compatible)

  • list_reservations() → todos los vigilantes de reservas con últimos resultados

  • trigger_reservation_scan(id) → volver a escanear una reserva ahora

  • run_model_comparison(item, use_case, budget, flexibility?) → carrera de 3 niveles de LLM + veredicto del juez

  • get_model_performance() → estadísticas agregadas de calidad/costo por nivel

Los agentes que llaman deben tratarlo como enviar + consultar: envía una vez, luego llama a get_wishlist en la cadencia que les convenga (o esperen a su propio programador). La especificación de MCP no tiene canal push para actualizaciones arbitrarias, por lo que la consulta periódica es el patrón estándar.

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