Project Info
Inspiration
Online shopping is highly suboptimal. As a consumer, you might spend hours bouncing between platforms like Amazon, eBay, Walmart, or Best Buy comparing prices. Or read hundreds of reviews without knowing which ones are fake and miss coupon codes buried across webpages. And when you find something on Facebook Marketplace, you have no idea if the seller may be legitimate. We realized that every pain point in online shopping--whether it be discovery, trust, pricing, or savings--is fundamentally a research problem. Since research is exactly what AI agents are built to do, we were inspired to build a shopping experience where every product is vetted before you ever see it.
What it does
Vetted is an agentic shopping platform where you describe what you want in natural language, and a specialized multi-agent team handles the rest. The Search Agent scours sites like Amazon, Walmart, Facebook Marketplace, and Craigslist simultaneously. The Trust Agent verifies every seller, detects fake review patterns, and flags potential scams. The Price Agent researches price history and finds competitor prices. The Savings agent surfaces active coupon codes/cash-back opportunities for retail platforms and negotiation strategies for marketplace listings.
How we built it
Frontend UI Built with TypeScript, Next.js, and Tailwind CSS Designed to feel like a familiar shopping platform by encapsulating search functionalities and product listings Features data gathered on trust, pricing, and savings for each product Real-time pipeline tracker shower agent progress Backend API Built with Python, FastAPI, and Pydantic Error handling on external API calls with third-party tools RESTful endpoints for session management and search Multi-Agent Orchestration Built with LangGraph StateGraph for pipeline orchestration with parallel execution and state checkpointing Bright Data for Search Agent Perplexity Sonar for Trust Agent and Price Agent OpenAI API for Savings Agent
Challenges we ran into
LangGraph orchestration: getting the multi-agent orchestration correct with conditional edges, parallel execution, and human-in-the-loop required careful state management Rate limiting: running trust and price analysis in parallel for 15+ products meant sending concurrent requests to the Perplexity Sonar API in rapid succession
Accomplishments we're proud of
Establishing an end-to-end workflow across all agents for any particular product search Developing a frontend that emulates a real shopping platform Building as a solo hacker!
What we learned
Multi-agent systems require careful thought into what should be automated vs. user-triggered (certain tradeoffs exist between speed and relevance) The right tool for each job matters much more than applying one tool everywhere (Bright Data for structured scraping, Perplexity Sonar for research, OpenAI for persuasive writing)
What's next
Expanding negotiation capabilities to voiced-based and automated workflows (one that can act autonomously on your behalf) Introducing a social layer where users can share a community-driven shopping intelligence network
Vetted
Multi-agent AI shopping assistant that searches across platforms, verifies sellers, analyzes prices, and helps you negotiate — all from a single query. Built for TreeHacks 2026.
How It Works
User: "I need a good camera for travel, not too heavy, under $800"
│
▼
┌──────────────┐
│ Intent Agent │ ← Understands what you need
│ (Claude SDK) │
└──────┬───────┘
▼
┌──────────────┐
│ Search Agent │ ← Amazon, Walmart, Best Buy,
│ (Bright Data)│ FB Marketplace, Craigslist
└──────┬───────┘
▼
┌──────────┴──────────┐
▼ ▼
┌─────────────┐ ┌──────────────┐
│ Trust Agent │ │ Price Agent │ ← Run in parallel
│ (Sonar) │ │ (Sonar) │
└──────┬──────┘ └──────┬───────┘
└──────────┬──────────┘
▼
┌──────────────┐
│ Ranking │ ← Weighted scoring
└──────┬───────┘
▼
Results Ready!
│
┌───────────┴───────────┐
▼ ▼
Marketplace? Retail?
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ Negotiate │ │ Find Savings │
│ (OpenAI) │ │ (Price Data) │
└──────────────┘ └──────────────┘
On-demand: On-demand:
• Haggling messages • Coupon codes
• Offer strategies • Cashback portals
• Counter-offer tips • Price-match scripts
Architecture
Automatic pipeline runs on every search:
- Intent Agent (Anthropic Claude) — Synthesizes vague input into structured product requirements
- Search Agent (Bright Data) — Searches Amazon, Walmart, Best Buy, Facebook Marketplace, and Craigslist in parallel
- Trust Agent (Perplexity Sonar) — Verifies seller reputation, detects fake reviews, flags scams
- Price Agent (Perplexity Sonar) — Compares prices across retailers, checks price history, finds coupons and cashback
On-demand features triggered by the user:
- Negotiate (OpenAI GPT-4o) — For marketplace listings (FB Marketplace, Craigslist, eBay). Generates persuasive negotiation messages in three tones using competitor prices and price history as leverage.
- Find Savings — For retail listings (Amazon, Walmart, Best Buy). Surfaces coupon codes, cashback portals, price-match opportunities, and buy/wait recommendations.
Orchestrated by LangGraph with parallel execution, state checkpointing, and streaming status updates.
Quick Start
cd shopagent
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # Fill in your API keys
uvicorn main:app --reload
Frontend:
cd frontend
npm install
npm run dev
API docs at http://localhost:8000/docs
API
# Create a session
curl -X POST http://localhost:8000/api/sessions \
-H "Content-Type: application/json" \
-d '{"query": "I need a camera under $800 for travel"}'
# Send a message to the intent agent
curl -X POST http://localhost:8000/api/sessions/{id}/message \
-H "Content-Type: application/json" \
-d '{"message": "Under $800, prefer Sony, need it this week"}'
# Run the full pipeline
curl -X POST http://localhost:8000/api/sessions/{id}/search
# Get ranked results
curl http://localhost:8000/api/sessions/{id}/candidates
# On-demand: negotiate a marketplace listing
curl -X POST http://localhost:8000/api/sessions/{id}/negotiate/{candidate_id}
# On-demand: get savings breakdown for a retail listing
curl http://localhost:8000/api/sessions/{id}/savings/{candidate_id}
Tech Stack
| Component | Technology | Purpose |
|---|---|---|
| Backend | FastAPI | API + WebSocket streaming |
| Orchestration | LangGraph | Agent pipeline with parallel execution |
| Intent Agent | Anthropic Claude | Conversational requirement synthesis |
| Search Agent | Bright Data | Multi-platform product scraping |
| Trust Agent | Perplexity Sonar | Seller verification and review analysis |
| Price Agent | Perplexity Sonar | Price comparison, history, coupons, cashback |
| Negotiation Agent | OpenAI GPT-4o | Marketplace haggling strategy and messages |
| Frontend | Next.js + Tailwind | Product search UI deployed on Vercel |
| Data Models | Pydantic v2 | Validation across the pipeline |
Analysis
View
Metric
- 8
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- AnthropicIn code
- CSSIn code
- FastAPIIn code
- Next.jsIn code
- OpenAIIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
9 of 9 appear in the indexed code.
AI coding agents
- Claude CodeConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
404 KB
Source files
78
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
garysun1/Vetted
101 files · 3.6 MB · @ b8c93f3
Structure
Interface
28 files · 28%Screens, components and styles rendered to the user.
API & routing
3 files · 3%Request entry points: routes, handlers and controllers.
Application logic
26 files · 26%Domain rules, services and shared utilities.
Data & schema
7 files · 7%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript54%
- Python43%
- Markdown2%
- CSS0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 24- @radix-ui/react-dialog
- @radix-ui/react-progress
- @radix-ui/react-slider
- @radix-ui/react-slot
- @radix-ui/react-tabs
- @radix-ui/react-tooltip
- class-variance-authority
- clsx
- framer-motion
- lucide-react
- next
- react
- react-dom
- recharts
- tailwind-merge
- tailwindcss-animate
- +8 more
requirements.txt
pypi · 16- anthropic
- fastapi
- httpx
- langchain-core
- langgraph
- langgraph-checkpoint
- openai
- pydantic
- pydantic-settings
- pytest
- pytest-asyncio
- python-dotenv
- rich
- tenacity
- uvicorn[standard]
- websockets
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.