Inspiration

Planning a shopping trip for several meals is more complicated than writing a list. Recipes often share ingredients, pantry items should not be purchased twice, and stores sell products in packages that rarely match exact recipe quantities. Shoppers also have to balance price, travel time, and the number of stops.

We built Shopsmarter to turn meal ideas and everyday needs into one practical shopping plan.

What it does

Users describe the meals they want to make and the household items they need. Shopsmarter converts those requests into an organized list of ingredients and products.

The app can:

  • Scale recipes for different serving sizes
  • Let users customize recipe ingredients
  • Combine overlapping ingredients across multiple meals
  • Subtract items already available in the pantry
  • Calculate the actual packages that need to be purchased
  • Compare different store combinations
  • Recommend a plan based on cost, time, or a balance of both
  • Support walking, public transit, cycling, and driving
  • Display the trip on an interactive map
  • Guide users through each store with an in-store shopping checklist
  • Add completed purchases back into the pantry

When the user changes a recipe, serving size, store preference, transportation mode, or pantry quantity, the shopping plan updates automatically.

How we built it

We built Shopsmarter as a React and TypeScript web application using Vite and Tailwind CSS.

The application follows a modular planning pipeline. User input is converted into structured shopping needs, ingredient names and units are normalized, pantry quantities are deducted, and the remaining requirements are matched to purchasable package sizes. An optimization engine then evaluates possible store combinations and generates a shopping plan based on the user’s selected priority.

We also built interactive route visualization, editable pantry and recipe tools, persistent local state, and an in-store shopping workflow. Automated tests cover recipe scaling, ingredient merging, pantry deductions, package calculations, store allocation, transportation choices, and route consistency.

Challenges we ran into

The biggest challenge was translating recipe quantities into realistic purchases. A recipe may require one egg, but shoppers buy a carton. Different recipes may also use different names or units for the same ingredient.

Another challenge was keeping the entire plan consistent when something changed. Adjusting a serving size affects ingredient quantities, pantry shortfalls, package counts, store allocation, total cost, carrying weight, and sometimes the recommended route.

We had to design the system so these decisions could be recalculated together without losing the user’s existing choices.

Accomplishments that we're proud of

We are most proud of connecting recipe planning, pantry management, package-level purchasing, store selection, and trip planning in one experience.

Shopsmarter does more than generate a shopping list. It explains what is needed, accounts for what the user already owns, determines what must actually be purchased, and organizes those purchases into a usable trip.

We are also proud that the experience remains interactive. Users can change servings, edit ingredients, exclude stores, switch transportation modes, report an out-of-stock item, and immediately receive an updated plan.

What we learned

We learned that everyday shopping decisions involve many connected constraints. A result can be mathematically optimal but still impractical if it ignores package sizes, pantry inventory, carrying limits, travel time, or the shopper’s personal priorities.

We also learned the importance of explainability. Users are more likely to trust a recommendation when they can see how their ingredients were combined, what was deducted from the pantry, and why a particular shopping plan was selected.

What's next for Shopsmarter

Next, we want to make pantry management faster through receipt scanning, expand recipe and product coverage, and support shared household inventories and shopping lists.

We also want to improve real-time availability and trip planning while continuing to keep the experience simple: one request, one coordinated shopping plan.

Built With

Share this project:

Updates

Submission history