Multi-modal Apps
30 Days: Survive San Francisco until payday. Buy it tomorrow, if it's still true.30 Days is a purchase-permission agent: every buy asks first, and most buys wait a day.
THE PROBLEM
On a fixed budget, the expensive mistakes are made in the moment. I'm a CPA from Korea living in San Francisco until payday, and my job has always been to tell clients "not yet." 30 Days gives everyone that accountant, built into the Buy button.
WHAT IT DOES
Drop an ad (screenshot, link, or text) or just type what you want. The agent reads the ad's claims, finds the real product on Shopify through Shop MCP (photo and text search), pulls the real checkout total, compares it with similar listings, and decides by need:
- Supplies (shampoo, detergent, a broken essential): price checked against the market median, approved now, single-use signed permit issued.
- Gear (useful, not urgent): "Sleep on it." A durable Vercel Workflow sleeps 24 hours, rechecks the price and link, and your agent tells you when it's ready. Buy it tomorrow, if it's still true.
- Treats (wants): never "buy now." 72-hour wait inside a small Treats envelope (10% of the budget), otherwise locked until payday.
Everything stays inside the monthly budget. The checkout link (Shop continue_url) only appears after a permit is redeemed.
THREE REAL CASES (try them in the app with "Try demo")
1. "My shampoo ran out" -> Pantene on Shopify, $10.00 vs $9.15 median -> approved, permit issued.
2. Allbirds ad screenshot -> Gemini reads the image, Shop MCP photo search matches the product -> Treats, locked, no buy button.
3. "Chelsea boots" -> Gear, not a hot deal -> waits a day, rechecked by a Workflow.
MULTI-MODAL APPS TRACK CRITERIA
- Two+ modalities: image (ad screenshots, Shop MCP photo search), links, and text.
- Three models, three providers via Vercel AI Gateway: Gemini 2.5 Flash extracts, Claude Haiku 4.5 judges, GPT-4.1-mini audits; the stricter verdict wins.
- Fallback: every role has an ordered chain. "Simulate model outage" fails the primary live and the routing panel shows the fallback model taking over.
- Latency and cost: small fast models per role, per-call ms and cost shown in the UI; prices, medians, budgets and tiers are deterministic code, so models never do the math.
AGENTIC
An MCP server (/mcp) exposes judge_purchase, check_budget, request_permit, list_queue and recheck, with read vs spend scopes. Any agent can ask "can I buy this?" and get an evidence-backed answer; a read-only agent can never get a permit.
Plug it into Meta's Muse: Muse Code takes it as a streamable_http MCP server in one settings entry ({"thirty-days": {"transport": "streamable_http", "url": "https://thirty-days.vercel.app/mcp"}}), so your Muse agent asks 30 Days before it buys. It works the same with any other MCP client. Next step: submitting 30 Days as a Muse connector so it shows up for every Muse user.
BUILT WITH
Next.js, AI SDK, Vercel AI Gateway, Vercel Workflows, Neon Postgres (budget, price history, permits, SF deal feed, SHA-256 hash-chained evidence ledger), Shopify Shop MCP.
HONEST LIMITS
Costs are estimates, thresholds are defaults, the ledger is tamper-evident (not a proof system), and the app can't block purchases made elsewhere. The demo's "Next day" button fast-forwards the Workflow wait.