Supplier price change alerts from restaurant invoices

B2BWeb1 monthNext.jsClaude APISupabaseStripe

The idea

Suppliers rarely announce price increases; the case of chicken just quietly costs 8 percent more, and across a month of deliveries that is thousands of dollars an owner only discovers at P&L time, weeks too late to renegotiate or reprice the menu. MarginEdge catches this as part of a 330-dollar-a-month back-office suite, which is a different universe from what a single-location independent will buy.

The wedge is doing only the alerting: photos or forwarded PDFs in, a weekly ‘what got more expensive’ email out, ranked by monthly impact so the owner knows which vendor call to make first. LLM extraction has made the hard part (reading messy invoice line items) cheap enough to sell at 79 dollars.

Who pays

The owner-operator of an independent restaurant pays 79 dollars a month per location, justified the first time the digest catches one quiet increase. Chefs and owners congregate in restaurant-owner Facebook groups, r/restaurateur, and local restaurant associations; the weekly email itself is forwardable proof of value. The item catalogue that accumulates becomes switching-cost moat within a quarter.

MVP scope

  • Photo upload and email-forward invoice ingestion
  • Claude-based line-item extraction with a human review queue for low confidence
  • Item normalisation into a per-restaurant catalogue with alias matching
  • Per-item, per-vendor unit price history with threshold alerts
  • Weekly price-increase digest ranked by estimated monthly impact
  • Skip for v1: recipe costing and menu margins, inventory counts, vendor ordering, accounting exports
// Build prompt — paste into Cursor / Claude Code / Lovable / Bolt
Build PriceCreep, an invoice price-monitoring app for independent restaurants. Stack: Next.js (App Router), the Claude API for invoice extraction (vision on photos and PDFs), Supabase (auth, Postgres, storage), Stripe for subscriptions.

Core flow: invoices enter two ways: snap photos from a phone (mobile-friendly upload page) or forward emailed PDFs to a per-restaurant ingest address (invoices@... with a unique token). Each invoice goes to the Claude API with a prompt that returns structured JSON: vendor, invoice date, line items with description, quantity, pack size, unit, and extended price. The hard part is normalisation: 'CHIX BRST BNLS 4/10LB' and 'Chicken Breast Boneless 40lb' must map to one catalogue item. Do this with a two-stage match: exact/fuzzy match against the restaurant's existing item aliases first, then a Claude call proposing a match or a new item, with low-confidence matches queued for one-tap human confirmation. Every line lands in a price history table as cost per normalised unit (per lb, per dozen, per case-equivalent).

Alerts: when an item's unit price moves more than a configurable threshold (default 5 percent) against its trailing 3-invoice average, flag it. A weekly email digests what got more expensive, ranked by estimated monthly impact (price delta times recent purchase volume).

Pages: /upload, /inbox (extraction review queue), /catalog (items with vendor price history charts), /alerts, /settings (threshold, ingest address).

Pricing: 79 dollars/month per location, 30-day trial. Position directly against MarginEdge at 330.

// More B2B ideas