Grocery Price Intelligence

Panion

A cross-store price comparison app for grocery shoppers in St. John's, Newfoundland. Compare prices, track deals, plan meals.

3Stores
80+Products
6Features
SoloBuilt
9:41
S
๐Ÿ›๏ธ
๐Ÿ””

Your Stores

DDominion
WWalmart
SSobeys
Price TrackingSelect
๐Ÿฅš
Newfoundland Eggs LargeUpdated today
$5.17Dominion
๐Ÿ””
๐Ÿž
Whole Wheat BreadDempster's ยท Updated today
$4.48Walmart
๐Ÿ””
๐Ÿ—
Chicken BreastMaple Leaf ยท Updated today
$10.91Sobeys
๐Ÿ””
๐Ÿฅฉ
Lean Ground BeefUpdated today
$9.23Walmart
๐Ÿ””
๐Ÿ Home
๐Ÿ“‹Lists
๐ŸงบPantry
๐ŸณRecipes
โœจClove

Demo

See it in action.

The Problem

Groceries in NL cost more.
You had no way to know where.

Four years working in retail gave me a front row seat to a frustration most people just accept. Customers complained constantly: prices higher than the store down the street, bills higher than expected, no easy way to know before they got to the checkout. I felt it myself too. Browsing five flyers with colorful graphics trying to compare a single product. Instacart marking up prices and calling it convenience. Going home after a grocery run to find the milk expired, or realizing I thought I had eggs but didn't.

The tools existed but none of them solved the full problem. Flyer apps were clunky. Delivery apps weren't built for price-conscious shoppers. Nothing tracked what you had at home, warned you before you ran out, or helped you plan a meal around what was actually on sale.

So I built it. Panion started as an idea in my last semester. I didn't take it seriously until March 2026, when I realized my portfolio needed something real. Not another tutorial project, but something that solved a problem people actually have. Three months later, after late nights, stubborn bugs, and more edge cases than I expected, Panion is that thing.

What It Does

Six features. One grocery run.

Panion links price comparison, shopping lists, pantry tracking, recipes, and AI meal planning into a single flow.

๐Ÿ”

Price Comparison

Search any product and see current prices across all three stores side-by-side, with unit pricing for fair comparison across different pack sizes.

โ†
๐Ÿ””
๐Ÿฅš

Newfoundland Eggs Large

Dairy ยท 12pk

$5.17 best price ยท dominion
$0.43 / unit

Prices across stores

๐Ÿฅš
Dominion Updated today
$5.17Best
S
Sobeys Updated today
$5.35
W
Walmart Updated today
$5.81
+ Add to grocery list

Price looks wrong? Report it

๐Ÿ Home
๐Ÿ“‹Lists
๐ŸงบPantry
๐ŸณRecipes
โœจClove
๐Ÿ””

Watchlist & Alerts

Save the products you buy regularly. Get a push notification the moment the price drops at any store.

Alerts
ยทยทยท
๐Ÿฅš
Newfoundland Eggs LargeDominion
$5.49โ†’$5.17โ†“ 6%
2h ago
๐Ÿž
Whole Wheat BreadWalmart
$4.87โ†’$4.48โ†“ 8%
Yesterday
๐Ÿฅฉ
Lean Ground BeefWalmart
$9.99โ†’$9.23โ†“ 7%
2 days ago
๐Ÿ Home
๐Ÿ“‹Lists
๐ŸงบPantry
๐ŸณRecipes
โœจClove
๐Ÿ“‹

Shopping Lists

Build your grocery list. Panion automatically calculates the estimated total at each store so you know the cheapest run before you leave.

Weekly Groceries โ–พยทยทยท
Dominion
SSobeys
WWalmart
๐ŸŸ
Atlantic Salmon Fillet$22.97
โˆ’
1
+
๐Ÿฅœ
Kraft Peanut Butter$6.97โ€“$7.99
โˆ’
1
+
๐ŸŸ
Lay's Classic Chips$8.94
โˆ’
2
+
๐Ÿงˆ
Lactantia Butter$5.97
โˆ’
1
+
Walmart$41.85Best
Sobeys$45.65
Dominion$48.55
Subtotal ยท 4 items$41.85
๐Ÿ Home
๐Ÿ“‹Lists
๐ŸงบPantry
๐ŸณRecipes
โœจClove
๐Ÿงบ

Pantry Tracker

Log what's at home with quantities and expiry dates. Know what's running low before you add it to your list.

Pantry
6 itemsSelect
DAIRY
โœ
๐Ÿฅ›
Central Dairies 2% MilkCentral DairiesExpired
UNCATEGORIZED
โœ
๐Ÿ—
Chicken Thighs
โœ
๐ŸŸ
Straight Cut Fries
โœ
๐Ÿฅš
Eggs Large
โœ
๐Ÿง€
Cream Cheese
๐Ÿ Home
๐Ÿ“‹Lists
๐ŸงบPantry
๐ŸณRecipes
โœจClove
๐Ÿณ

Recipes

Browse and save recipes with full ingredient lists. Tap to add everything to your shopping list in one go, and see which store makes the cheapest run for that recipe.

Recipes
๐Ÿ”
๐Ÿฅ—
Caesar Salad4 servings ยท 15 min ยท 7 ingredients
ยทยทยท
Add all to listView
๐Ÿ
Chickpea Pasta4 servings ยท 35 min ยท 8 ingredients
ยทยทยท
Add all to listView
๐Ÿฅฉ
Beef & Carrot Skillet4 servings ยท 40 min ยท 8 ingredients
ยทยทยท
Add all to listView
๐Ÿ Home
๐Ÿ“‹Lists
๐ŸงบPantry
๐ŸณRecipes
โœจClove
โœจ

Clove: AI Assistant

An AI cooking assistant with full context: current store prices, your pantry inventory, and your dietary preferences. Get meal ideas based on what's on sale, what you already have, or what fits your diet. When Clove suggests a recipe, a save button appears. One tap and it's in your Recipes page.

โœจ
Cloveโ— online
ยทยทยท
๐Ÿ“ฆ Pantry
๐Ÿท๏ธ Prices
๐Ÿฅ— Low-carb
dinner tonight? chicken expires today
โœจ

Use those thighs tonight. Creamy garlic chicken. Your cream cheese covers the sauce. 20 min, fits your low-carb.

Only miss: garlic ยท $0.49 ยท Walmart
๐Ÿณ Save recipe
+ Garlic added to shopping list
weekend idea?
โœจ

Salmon is $10.91 at Dominion this week. Lemon herb fillet โ€” low-carb, ~$13 total for 2.

Ask Clove anything...
๐Ÿ Home
๐Ÿ“‹Lists
๐ŸงบPantry
๐ŸณRecipes
โœจClove

Under the Hood

The decisions that shaped the build.

Authentication

Edge-safe NextAuth v5

NextAuth v5 required splitting auth config into two files: an Edge-safe version for middleware (no Prisma, JWT-only) and a full Node.js version for API routes. The middleware reads onboardingCompleted directly from the JWT, with no database round-trip on every request.

AI Integration

Rate-limited by cookie + IP

Clove is rate-limited using Redis counters: 10 queries/day for signed-in users, 5 per guest cookie with a hard ceiling of 15/day per IP. Enforced via INCR/EXPIRE on Upstash Redis, which handles edge deployments without persistence issues.

Product Decision

Too feature-dense. Built it anyway.

Early feedback was consistent: six features was too much for a v1, pick one and nail it. I understood the argument. I disagreed. The features only make sense together. Price comparison without pantry tracking is half the value. Recipes without knowing what's on sale misses the point. I built the full scope to find out if the integrated experience was worth it. The answer was yes.

Testing

Security boundary tested explicitly

Vitest integration tests run against a real Neon branch database (not mocks). Every route that touches user data verifies that a user cannot read or modify another user's records. The userId scoping is an explicit assertion, not an assumption.

Honest Reflection

What shipped. What didn't.

Working
โœ“Full feature set live: price comparison, watchlist, lists, pantry, recipes, and AI assistant all working
โœ“Google OAuth + magic-link email sign-in via SendGrid
โœ“Web push notifications, installable as a PWA with no App Store required
โœ“Guest mode with rate-limited AI access
โœ“PIPEDA-compliant. Users can export and delete all their data.
Still Unsolved
โ†’Price data freshness: prices are currently seeded manually. Building the automated pipeline is the hardest unsolved problem.
โ†’Store coverage: the app covers 3 stores in St. John's right now. Scaling to more stores and cities depends on the data pipeline.
โ†’Flyer integration: weekly specials drive a significant share of savings and aren't connected yet.
โ†’Community feed: planned but not built. A structured replacement for the messy Facebook groups shoppers use now, where stores could post official announcements and users could share deals.

Stack

Next.js 15TypeScriptTailwind CSSPrisma 7PostgreSQL ยท NeonRedis ยท UpstashNextAuth v5SendGridVercel