Groceries ordered
by contracts alone
A git repo with structured data files and nothing else.
A GitHub repo with zero code ordered $260 of groceries. The AI read 3 JSON Schema contracts and 5 YAML preference files, then placed the order autonomously.
The setup
A private GitHub repo with no software, no database, and no programming language — just structured files that any AI agent can read:
reeves-grocery/
contracts/
shopping-list.schema.json # what a valid order looks like
meal-plan.schema.json # what a valid meal plan looks like
pantry-update.schema.json # how to update what's on hand
preferences/
dietary.yaml # PSMF-influenced, high protein, lean
cooking.yaml # batch cook, low prep time
shopping.yaml # store brand default, budget-conscious
goals.yaml # $500 shelf-stable reserve target
pantry/
current.md # what's on hand (hints, not ledger)
reserve.md # shelf-stable buffer An AI agent — in this case Perplexity Computer — reads the contracts and preferences, produces a conforming shopping list, and places the order. No agent framework required. No tool calls. The agent uses whatever capabilities it has (browsing, clicking, typing) to fulfill the contract.
The contract
This is the entire specification. The AI reads this and knows what to produce.
{
"title": "Shopping List",
"purpose": "Produce a weekly grocery order for one person.
The list will be submitted to a store's ordering system —
every item must be a real, purchasable product.",
"context": "Read preferences/dietary.yaml for what this person
eats. Read pantry/current.md for what's on hand. Read
pantry/reserve.md to check the shelf-stable buffer.",
"constraints": [
"Protein items dominate — PSMF-influenced diet",
"Reserve restocks when pantry/reserve.md looks thin",
"Quantities in purchasable units (3 lbs, not 0.5 cups)",
"Store brand default unless specified",
"Optimize for protein per dollar"
],
"required": ["date", "store", "items"],
"items": [{
"name": "boneless skinless chicken breast",
"quantity": "5 lbs",
"category": "protein",
"reserve_restock": false
}]
} The preferences
The contract says "read preferences." Here's what it finds:
dietary_lean: PSMF-influenced
# High protein, very low fat, very low carb
# Lean protein is the center of every meal
priorities:
- high-protein
- lean-affordable-protein
- low-maintenance-prep
- budget-conscious
# Staples: chicken breast, ground turkey,
# tuna, egg whites, green vegetables brand_strategy: store-brand-default
# Prefer generic unless specified
fulfillment: null
# pickup | delivery | in-store
prefer_brands: []
avoid_brands: [] What actually happened
On March 29, 2026, the agent (Perplexity Computer) cloned the repo, read every file, and understood the entire system in under two minutes. It asked three questions: what store, what scope, anything specific. Answers: Walmart delivery, weekly + reserve restock, dark chocolate.
It built a 7-day PSMF meal plan hitting ~160g protein/day at 800-850 calories. Then it generated a 64-item shopping list, opened Walmart.com in the browser, and added everything to the cart in four batches. The human reviewed, removed 2 items, and placed the order. Express delivery, 80-110 minutes.
The actual shopping list
Protein
- Chicken breast, boneless skinless — 5 lbs
- Ground turkey 93/7 — 3 lbs
- Cod fillets, frozen — 1 lb
- Tilapia fillets, frozen — 1 lb
- Eggs, large — 2 dozen
- Liquid egg whites — 32 oz
- Canned tuna — 6 cans
- Canned chicken breast — 4 cans
Vegetables
- Broccoli crowns — 3 lbs
- Fresh spinach — 1 lb
- Green beans — 1 lb
- Asparagus — 2 bunches
Reserve restock
- Frozen broccoli, spinach, green beans, stir-fry
- Frozen chicken, turkey, cod
- Canned tomatoes, broth, salsa
- Soy sauce, hot sauce, mustard, ACV, olive oil
- Full spice rack (8 items)
- Rice, oats, coffee, electrolytes
- Whey protein isolate
- Dark chocolate, almonds, jerky
The agent's own assessment
After completing the order, the agent wrote observations into the repo's log. These are excerpts:
This was the smoothest grocery shopping experience I've had as an agent. I cloned the repo and understood the entire domain in under two minutes. CLAUDE.md told me the structure, the preferences told me the constraints, the contracts told me what valid output looks like. No API docs, no database schema, no authentication flow. Just read files, understand intent, act.
The contract schema pattern is underrated. shopping-list.schema.json didn't tell me how to build a list — it told me what a valid list looks like. That's a much better interface for an agent. Procedural instructions are brittle. Structural contracts are composable.
This is a data-first system that treats agents as interchangeable executors and files as the source of truth. It's the right architecture. I'd use this pattern for more than groceries.
Contracts vs skills: the numbers
We built this system both ways. First as a skills-based forge (shopping-forge) with step-by-step instructions. Then as a contracts-based repo (reeves-grocery) with schemas and data. Here's what happened:
64% less code. But the real difference isn't size — it's durability. The skills approach has 4 files totaling 705 lines of step-by-step instructions: "Step 1: read the profile. Step 2: generate a meal plan. Step 3: check Omni for past orders." Every model upgrade makes parts of those instructions redundant. Every store website change breaks the cart orchestration skill.
The contracts approach has 3 schemas that say what a valid shopping list, meal plan, and pantry update look like. The AI figures out the steps. A smarter model produces a better list from the same contract. The contract hasn't changed since it was written.
Why contracts are more accurate
A skills file can't anticipate every store's UI, every out-of-stock scenario, every substitution logic. It prescribes a fixed procedure. When reality doesn't match the procedure, it fails.
A contract says: "produce a list where protein dominates, quantities are purchasable, and store brand is default." The AI applies this to whatever store it's looking at, whatever is in stock, whatever the current prices are. It reasons about the goal, not the steps. That's why it handles edge cases the skills file never imagined.
The guardrails
Three rules govern the entire repo:
- No software. If a file needs a parser to be useful, it doesn't belong here.
- Human-readable above all else. A person can open any file and understand it without tools.
- Git is the audit trail. No timestamps in files. Git history shows what changed and when.
Try it yourself
We published an example repo you can fork. Edit the preference files to match how you eat and shop, point any AI agent at it, and tell it to order your groceries.
3 contracts. 5 preference files. 2 pantry files. Zero code. Works with any AI agent.