An AI-powered sustainability platform that helps consumers understand and reduce their environmental footprint through receipt scanning, waste classification, and real-time eco-scoring while shopping online.
Lucas Amberg, Edong Lee, and Jacob Paolinelli
Every day, consumers make dozens of purchasing decisions without understanding their environmental impact. We wanted to build a tool that makes sustainability effortless — meeting people where they already are: at checkout. Whether you're reviewing a grocery receipt, throwing something away, or browsing Amazon, Waste Wise gives you the information you need to make greener choices without changing your routine.
- How to build a Turborepo monorepo coordinating a Next.js web app and a WXT browser extension sharing a unified design language
- Integrating Google Gemini's multimodal capabilities for both image analysis (receipt scanning, waste classification) and structured product eco-scoring
- Building a Python-based AI agent with Fetch.ai's uagents protocol to handle real-time product sustainability analysis
- Designing a Chrome extension that monitors shopping cart changes across major retailers using content scripts and the Chrome API
- Working with Supabase for real-time data persistence and user dashboard tracking
Waste Wise is a monorepo with two apps managed by Turborepo:
-
Web App — A Next.js 16 application where users can upload receipt images or photos of waste items. Gemini's multimodal API analyzes the images, extracts product information, and returns eco-scores with sustainability details and greener alternatives. A dashboard tracks the user's environmental impact over time using Supabase.
-
Browser Extension — A WXT-powered Chrome extension that watches shopping carts on major retail sites (Amazon, Target, Walmart, Kroger, and more). When products are detected, they're sent to a FastAPI backend agent that uses Gemini to score each item's sustainability on an A-F scale and suggest eco-friendly alternatives — all in real-time as you shop.
- Parsing product data from diverse retailer DOM structures — every site has a different layout, requiring custom content scripts for each
- Getting Gemini to return consistent, structured JSON responses for eco-scoring across wildly different product categories
- Coordinating state between the Chrome extension's content scripts, background service worker, and popup UI
- Handling image-to-text extraction from receipt photos with varying quality, lighting, and formatting
Waste Wise is a two-part sustainability platform:
- Receipt Scanner — Upload a photo of any receipt. AI extracts each item, scores its environmental impact, and suggests greener alternatives.
- Waste Classifier — Snap a photo of any waste item to learn whether it's recyclable, compostable, or landfill, with personalized disposal recommendations.
- Shopping Cart Eco-Scorer (Browser Extension) — Monitors your cart on Amazon, Target, Walmart, Kroger, and other retailers. Each product gets a real-time sustainability grade (A-F) with recommended alternatives.
- Impact Dashboard — Track your eco-scores and sustainability progress over time.
- Next.js 16 — React framework with server-side rendering and App Router
- React 19 — JavaScript library for building user interfaces
- Turborepo — Monorepo build system for managing the web app and extension
- WXT — Framework for building cross-browser extensions with modern tooling
- TypeScript — JavaScript with static type checking
- Google Gemini API (
@google/genai) — Multimodal AI for receipt scanning, waste classification, and product eco-scoring - Fetch.ai uagents (
uagents-core) — Agent protocol for the sustainability scoring backend
- FastAPI — Python web framework for the extension's scoring agent
- Uvicorn — ASGI server for the FastAPI backend
- Pydantic — Data validation and serialization
- Supabase (
@supabase/supabase-js) — Open source Firebase alternative for database and user data persistence
- Tailwind CSS 4 — Utility-first CSS framework
- shadcn/ui — Re-usable UI component library
- Base UI (
@base-ui/react) — Headless UI component primitives - Lucide React — Icon library
- class-variance-authority — Component variant management
- clsx / tailwind-merge — Utility class merging
- tw-animate-css — Tailwind animation utilities
- Chrome API — Extension APIs for tabs, storage, and content scripts
- Vite — Build tool powering the WXT extension bundling
# Install dependencies
npm install
# Run both apps in development
npm run dev
# Run only the web app
npm run dev:web
# Run only the extension
npm run dev:extension
# Run the Python scoring agent
cd apps/extension
npm run agentThis project requires the following environment variables:
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
GEMINI_API_KEY=your_gemini_api_key
GEMINI_API_KEY=your_gemini_api_key
This project is private and not intended for redistribution.