## Inspiration Lots of small sellers still run on paper: a home baker, a taco stand, a market stall, a bike repair shop. Their menu is a printed sheet or a chalkboard, and there's no website. In one US survey (US Census Bureau, Annual Survey of Entrepreneurs), 47% of accommodation and food-service businesses with employees had no website. Meanwhile, AI assistants are starting to shop for people, and they can't read a paper menu. We wanted one photo to be enough to put a counter online, for people and for their AI assistants.
## What it does For sellers
- Snap your price list. Claude reads 1 to 4 photos of a paper, chalkboard or whiteboard menu into items, sizes and prices, in any currency (₹, €, £ and about 35 more; checkout is in USD, so prices are converted at an approximate rate and the seller is told).
- Anything unclear becomes a one-tap question: a missing price, "market price", "2 for $7", a crossed-out price, duplicates. Publishing shows exactly what's still missing.
- Publish to PayPal. Every item goes into the PayPal catalog, and every order names the seller's own PayPal account as the payee, so the money goes straight to them.
- Dashboard: orders to prepare, an AI brief for each paid order (Claude pulls the order from PayPal and flags things like allergies), tracking, sold-out switches and a printable counter card with a QR code.
- Accounts with email and password, or Continue with Google.
For buyers and AI assistants
- Browse shops, add to a cart and pay with PayPal, or just ask the built-in assistant in plain words. It shows each step it takes.
- An MCP "agent door" for every shop: one link that any AI assistant (Claude, Claude Code, Cursor and others) can use to read the menu and place an order. Given only a shop's web address, Claude Code found the door by itself and placed a real sandbox order.
- Prices stay the seller's: an agent that tries to send its own price is refused.
- No buyer account needed: the receipt page shows live status and tracking and can be sent to WhatsApp or a text message. Your orders lists every order on the device, or on any device with Log in with PayPal.
## How we built it
- Next.js 16 (App Router) + TypeScript, SQLite, Tailwind and shadcn, as one web service.
- PayPal (sandbox): Orders v2 (create, approve, capture, with a
PayPal-Request-Idon every money call), the Catalog Products API, the PayPal Agent Toolkit (the brief agent reads orders and tracking through it), payee routing to each seller's own account, webhooks plus a 15-second poller, and Log in with PayPal for buyers. - Claude (
claude-sonnet-5-5): vision with structured output to read menus, a tool-using agent for the buyer assistant, and a tool-using agent that writes each order's brief from PayPal data. - MCP: a stateless Streamable HTTP server per shop (
/s/<slug>/mcp) with four tools:get_shop_info,list_products,create_orderandget_order_status. Shops are also discoverable through schema.org JSON-LD,/agents.txtand/llms.txt. - Tested with about 2,400 unit tests and Playwright end-to-end tests, including real PayPal sandbox captures.
- Hosted on a Google Cloud VM behind Caddy for HTTPS.
## Challenges we ran into
- Real menus are messy: handwriting, crossed-out prices, deals, sizes and foreign currencies. We turned every doubt into a plain question for the seller instead of a guess.
- Keeping prices on the server everywhere: the cart, the assistant and outside AI agents all send only item ids and quantities, and totals always come from the shop's own prices.
- Paying each seller directly, while keeping the platform's own account as a safe fallback for the demo shop.and quantities, and totals always come from the shop's own prices.
- Paying each seller directly, while keeping the platform's own account as a safe fallback for the demo shop.
Accomplishments that we're proud of
- An outside AI agent, given only a shop's link, discovers the MCP door, places an order and hands back a PayPal link, end to end, with real sandbox money flowing to the seller's own account.
- A complete product, not a proof of concept: seller accounts, a dashboard, buyer receipts, Your orders and a responsive, installable web app.
What we learned
Agentic commerce needs boring guarantees: server-set prices, idempotent orders, clear payee routing, and receipts people can find again. Once those were right, MCP plus PayPal made the "AI can buy from you" part surprisingly small.
What's next for Shelfie
- Pickup time slots and stock counts.
- More payout options with PayPal.
- Opening the agent door to more AI platforms and assistant marketplaces.
Built With
- anthropic
- caddy
- claude
- google-cloud
- log-in-with-paypal
- mcp
- nextjs
- paypal
- paypal-agent-toolkit
- paypal-catalog-products
- paypal-orders-v2
- playwright
- react
- sqlite
- tailwindcss
- typescript
- vitest