FrugalFinder
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 |
| POST | Crear lista de deseos → ejecuta el primer análisis de FrugalBot |
| GET/PATCH | Obtener o actualizar una lista de deseos |
| GET/POST | Consultar el último escaneo / activar escaneo ahora |
| POST | Destino de cron — escanea todas las listas de deseos pendientes |
| POST | Ingesta de webhook de Telegram |
| POST | Endpoint HTTP Streamable de MCP para agentes de IA externos |
| POST | Crear vigilante de reservas de campamento (Recreation.gov) |
| GET/PATCH | Listar/obtener/actualizar vigilantes de reservas |
| POST | Activar escaneo de reservas ahora |
| POST/GET | Escaneo de comparación con 3 modelos de LLM / resumen de rendimiento |
| 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 |
|
| Enrutamiento del mejor modelo propio de OpenRouter |
|
| el más barato con capacidad web |
|
| 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 LLMFRUGAL_MODEL(opcional, predeterminadostealth/ox-alpha) — cualquier slug de modelo de OpenRouterKV_REST_API_URL,KV_REST_API_TOKEN(obligatorias para persistencia en producción) — de una base de datos Vercel KV (Upstash) adjunta en Vercel → StorageWISHLIST_TOKEN(opcional) — secreto compartido para/api/wishlistsCRON_SECRET(opcional pero recomendado) — protege/api/scan-allTELEGRAM_BOT_TOKEN,TELEGRAM_WEBHOOK_SECRET(opcionales) — ingesta de TelegramMCP_TOKEN(opcional) — secreto compartido para/api/mcpPARETO_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)
MVP ahora: sin autenticación, un solo usuario, protegido por secretos compartidos opcionales.
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.
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 testsUso de MCP (para agentes externos como ChatGPT/Claude/Codex)
Conecta un cliente compatible con MCP a:
https://YOUR-DOMAIN.vercel.app/api/mcpEncabezados: x-mcp-token: <MCP_TOKEN> si está configurado.
Herramientas expuestas:
submit_wishlist(item, use_case, budget, flexibility?, cadence?, source_url?)→ guarda + análisis inmediatoget_wishlist(id)→ registro completo incl. último análisis e historial de escaneoslist_wishlists()→ resumen de todas las listas de deseos activastrigger_scan(id)→ forzar un escaneo frugal-bot fuera de bandasubmit_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 resultadostrigger_reservation_scan(id)→ volver a escanear una reserva ahorarun_model_comparison(item, use_case, budget, flexibility?)→ carrera de 3 niveles de LLM + veredicto del juezget_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.
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