Buttery

Buttery is an agent-first household food ledger. You manage your food by talking to the AI assistant you already use (Claude, ChatGPT/Codex, any MCP client): share a Costco receipt, a fridge photo or a recipe screenshot, or just say "I froze the chicken". Buttery keeps a trustworthy record of what food the household has, the evidence behind each belief, and what is about to expire. A small mobile web app handles quick reviews and corrections through links the assistant hands you. It is honest…

Live demoGitHub0

Overview

Buttery is an agent-first household food ledger. You manage your food by talking to the AI assistant you already use (Claude, ChatGPT/Codex, any MCP client): share a Costco receipt, a fridge photo or a recipe screenshot, or just say "I froze the chicken". Buttery keeps a trustworthy record of what food the household has, the evidence behind each belief, and what is about to expire. A small mobile web app handles quick reviews and corrections through links the assistant hands you. It is honest about uncertainty: "about half a jug, estimated from a photo 3 days ago".

TRY IT: live on Vultr at https://140-82-48-162.sslip.io. In Claude: Settings → Connectors → Add custom connector → https://140-82-48-162.sslip.io/mcp → Connect → sign in (sign-up is open; the first sign-in creates your household).

HOW IT WORKS 1. Perception stays with the assistant. It reads the photo and sends a verbatim transcription over MCP (submit_observation). 2. Reasoning runs on Crusoe Managed Inference (DeepSeek V4 Flash, V4 Pro for parsing). The server canonicalizes each line (name, category, package size, coupons/returns/non-food), matches it to the household's existing foods, estimates shelf life, parses free-text notes and ranks recipes. Output is schema-constrained, with deterministic unit/naming standards, guardrails and an offline fallback. 3. Nothing is committed blindly. Model output becomes proposals with confidence and provenance; the person approves them on a phone-friendly review page (or via resolve_proposal). Every change is append-only and undoable. 4. Any new conversation recovers state with get_household_summary, search_inventory and get_item.

RESULTS (synthetic eval, held-out split, DeepSeek V4 Flash on Crusoe): 0.9% wrong matches (down from 2.8%), 98.9% match accuracy, 99.4% precision on high-confidence matches, 100% package sizes, about $0.0006 per receipt.

SPONSOR TOOLS - Crusoe (Managed Inference): the reasoning engine behind every judgment the server makes about food. - DuploCloud (AI Studio DevKit): the QA/operations agent. A Claude Code agent in the buttery-qa workspace runs tickets against Buttery over an authenticated MCP scope: identity, receipt import, apply, package check, duplicate protection and undo. Ticket butteryqa-1 passed all 7 checks. - Vultr (Cloud Compute): always-on public hosting for the API, MCP server and web app. Every merge to main is tested, built into one AMD64 image, rehearsed against a throwaway database, published to GHCR and promoted to a Vultr VM by digest over verified SSH, with a database backup before migrations and HTTPS smoke checks after. Caddy provides Let's Encrypt HTTPS in front of the app.

STACK: Node + TypeScript (strict), Hono server exposing MCP (Streamable HTTP), a JSON API and the web app from one service; PostgreSQL 17 + Drizzle with an append-only change log; React 19 + Vite mobile web; WorkOS AuthKit (OAuth 2.1 for MCP connectors) plus personal access tokens; GitHub Actions → GHCR → Vultr for delivery; Vitest and Playwright. Every state-changing MCP call takes an idempotency key, so retries are safe and a re-sent receipt is detected as a duplicate.

Note: the demo URL is substituted with the GitHub repository link.

Tech stack

No comments yet

Be the first to comment on this project.