sorting-groceries · v0.1.0 · 2026-03-01 · sha256 835c0919f5b113ea
sorting-groceries v0.1.0A
Immutable. This exact content is served forever at /api/v1/blob/835c0919f5b113ea.
---
name: sorting-groceries
description: "Sort grocery lists by aisle order using store aisle sign photos. Build aisle maps from uploaded images, match items to aisles, and output optimized shopping routes. Use for: grocery list sorting, aisle sign photos, shopping trip optimization, store layout mapping, grocery list organization."
metadata:
version: 0.1.0
---
# Sorting Groceries by Aisle
Sort a user's grocery list by aisle order so they can walk the store in one efficient pass, no backtracking.
## When Triggered
Activate when user:
- Uploads photos of grocery store aisle signs or markers
- Provides a grocery/shopping list alongside store layout info
- Asks to sort, organize, or optimize a shopping list by aisle
- Mentions aisle numbers, store maps, or shopping routes
## Inputs
Two inputs are needed. Prompt for whichever is missing:
1. **Aisle sign images** — Photos of aisle markers, hanging signs, or endcap labels. Each typically shows an aisle number and category keywords (e.g., "Aisle 5: Coffee, Tea, Cocoa").
2. **Grocery list** — Text, pasted note, or photo of a handwritten list. Any format.
## Core Workflow
### Step 1: Build the Aisle Map
Read each uploaded aisle sign image. Extract:
- **Aisle number** (or label like "A5", "Aisle 12")
- **Category descriptions** exactly as printed (e.g., "Pasta, Sauces, Canned Vegetables")
Compile into a structured map:
```
Aisle 1: Bread, Bakery Items, Tortillas
Aisle 2: Cereal, Breakfast, Granola Bars
Aisle 3: Pasta, Sauces, Canned Goods
...
```
If an image is blurry or partially unreadable, note what was legible and flag uncertainty.
### Step 2: Identify Perimeter Zones
Grocery stores have perimeter sections without numbered aisles. Infer these from context or common knowledge when not covered by the uploaded signs:
| Zone | Typical items |
|------|---------------|
| **Produce** | Fresh fruits, vegetables, herbs, salad mixes |
| **Deli** | Sliced meats, prepared foods, rotisserie chicken |
| **Bakery** | Fresh bread, cakes, pastries (distinct from packaged bread aisle) |
| **Dairy** | Milk, cheese, yogurt, butter, eggs |
| **Meat & Seafood** | Fresh/frozen meat, poultry, fish |
| **Frozen** | Frozen meals, ice cream, frozen vegetables |
Position perimeter zones in typical store flow: **Produce → Deli/Bakery → Meat/Seafood → Dairy → Frozen** (usually along the store's outer walls, counterclockwise from entrance).
If the user's aisle photos already include these sections, use the actual signage instead of defaults.
### Step 3: Parse the Grocery List
Extract every item from the user's list. Normalize:
- "2 lbs chicken breast" → item: **chicken breast**, quantity: 2 lbs
- "eggs" → item: **eggs**, quantity: (unspecified)
- "parm" → item: **parmesan cheese**
Preserve the user's original wording alongside any normalized form.
### Step 4: Match Items to Aisles
For each grocery item, find the best aisle match:
1. **Direct keyword match** — Item name appears in or closely matches an aisle's category text (e.g., "pasta" → "Aisle 3: Pasta, Sauces")
2. **Category inference** — Item belongs to a category listed on a sign (e.g., "marinara" → "Aisle 3: Sauces")
3. **Perimeter zone match** — Item is a fresh/perishable product that lives on the store perimeter (e.g., "bananas" → Produce)
4. **Best guess with note** — Item could plausibly be in multiple aisles. Assign the most likely one and add a note (e.g., "honey — Aisle 4: Baking, but may also be in Aisle 7: Condiments")
### Step 5: Output the Sorted List
Present the final list grouped by aisle in store-walk order:
```
🛒 Sorted Shopping List — [Store Name if known]
PRODUCE
□ bananas
□ baby spinach
□ 3 avocados
AISLE 1 — Bread, Bakery Items, Tortillas
□ whole wheat bread
□ flour tortillas
AISLE 2 — Cereal, Breakfast, Granola Bars
□ oatmeal
□ granola bars
AISLE 3 — Pasta, Sauces, Canned Goods
□ spaghetti
□ marinara sauce
□ canned black beans
...
DAIRY
□ 2% milk
□ shredded mozzarella
□ eggs (1 dozen)
⚠️ COULDN'T PLACE
□ birthday candles — not enough aisle info to determine location
```
## Output Formatting Rules
- Use checkbox format (`□`) so the list is easy to use on a phone
- Include the aisle's category description next to the aisle number for quick reference
- Keep the user's quantities and notes attached to each item
- Perimeter zones go in logical store-walk order (Produce first, Frozen/Dairy last)
- Numbered aisles go in ascending order between the perimeter zones
- Unmatched items go at the end under a clear "couldn't place" heading
## Multi-Aisle Items
Some items legitimately live in multiple locations. When this occurs:
- Place the item in the **most common** aisle for that store's layout
- Add a parenthetical note: "(also check Aisle 7)"
- Common examples: honey (baking vs condiments), tortilla chips (snacks vs Hispanic foods), butter (dairy vs baking)
## Handling Ambiguity
- **Blurry/unreadable signs**: Note which aisles had unclear text. Ask user to confirm if critical items might be affected.
- **Store-brand categories**: Some stores use unusual groupings ("International Foods" might contain pasta in one store). Trust the sign text over assumptions.
- **Missing aisles**: If user uploaded signs for aisles 1-5 and 8-12 but not 6-7, note the gap. Items that don't match any uploaded aisle go to "couldn't place" rather than being guessed into missing aisles.
## Store Layout Reuse
If the user mentions they shop at this store regularly:
- Present the aisle map as a clean reference they can save
- Suggest they can reuse it in future conversations by pasting just the map text instead of re-uploading photos
- Format the reusable map clearly:
```
📍 [Store Name] Aisle Map
Aisle 1: Bread, Bakery Items, Tortillas
Aisle 2: Cereal, Breakfast, Granola Bars
...
Produce | Deli/Bakery | Meat & Seafood | Dairy | Frozen
```