Project 21 of ~34

🏷️ Retail Arbitrage Scanner — Architecture

Mobile barcode scanner for resellers. React Native (iOS/Android) + Deno backend + Supabase + price APIs.

🛠️ Tech Stack

ComponentTechnologyWhy
Mobile AppReact Native (Expo)Camera barcode scanning, cross-platform iOS/Android. One codebase.
Barcode MLGoogle ML Kit (Vision Kit for Apple)On-device barcode recognition. Fast, works offline after initial model load.
BackendDeno 2Price lookup aggregation, profit calculations, user data
DatabaseSupabase (PostgreSQL)Users, scan history, watchlists, analytics
Price APIsKeepa + JungleScout (Amazon)Historical and current Amazon pricing. Keepa has best data quality.
Other MarketsWeb scraping / APIseBay sold listings API, Poshmark API, manual FB Marketplace scraper
AnalyticsSupabase + customSourcing analytics, user patterns

📡 Price API Integration

Amazon (Keepa API)
Primary pricing source. Keepa provides: current price, 30/90-day average, price range (highest/lowest), sales rank, FBA fee estimates. 1 request per scan, cached 5 min.
eBay API (Finding + Browse)
Search for completed listings to get sold price (more accurate than current asking price). Returns: sold price range, average sold price, number sold in last 30 days.
Poshmark / FB Marketplace
Poshmark API for listing prices. Facebook Marketplace requires scraping (legal gray area — use public data only). These show asking prices, not sold, so note in UI.
FBA Fee Calculator
Use Amazon's official Fee Preview API or calculate locally: fulfillment fee ($3.22–$7.40 per item by size), storage fee ($0.75–$2.40/cubic ft), closing fees. Accurate numbers are critical for trust.

🗄️ Data Model

scans
iduuid
user_iduuid (FK)
upcvarchar(50)
product_namevarchar(500)
asinvarchar(20)Amazon ASIN
retail_priceinteger (cents)Price at store
buy_price_enteredinteger (cents)What user says they can buy for
price_data_jsonjsonbAll marketplace prices
profit_estimateinteger (cents)
roi_pctnumeric
scanned_attimestamp
watchlists
iduuid
user_iduuid (FK)
asinvarchar(20)
target_priceinteger (cents)Alert when below this
last_priceinteger (cents)
last_checked_attimestamp

Requirements  |  All Projects  |  Presentation →