Skip to content
1st Place: Human Centered AI Track

Ruh

AI-powered product safety analysis for conscious consumers - detect harmful substances and make informed choices.

Core trick

Chrome extension scrapes Amazon ingredient lists and sends them to Claude for PFAS and allergen scoring, cached 30 days per product.

Tags

Built with

beautiful-soupclaude-agent-sdkdockerfastapigoogle-cloudpydanticpythonsupabasesveltetailwind-csstypescript

Description

Ruh - AI-Powered Product Safety Analysis 💡 Inspiration The inspiration for Ruh came from a deeply personal experience. After watching family members struggle with allergic reactions and reading countless product labels without understanding the real health implications, I realized there was a critical gap: consumers lack accessible, intelligent tools to make informed safety decisions while shopping online . With the rise of harmful "forever chemicals" (PFAS) in everyday products and increasing awareness of allergens, I wanted to create something that could analyze products in real-time and provide actionable insights—right where purchasing decisions happen. The name "Ruh" (pronounced "rooh") means "soul" or "spirit" in Punjabi, reflecting the project's mission to help people protect what matters most: their health and wellbeing. 🏗️ What It Does Ruh is a Chrome extension that performs instant AI-powered safety analysis of Amazon products. When you view any product, Ruh: Automatically detects you're on a product page Scrapes and analyzes ingredients using Claude AI Identifies harmful substances (allergens, PFAS compounds, toxic chemicals) Calculates a harm score (0-100) with clear risk classification Displays detailed breakdowns in an elegant sidebar interface Caches results for 30 days for instant repeat views Key Features: ✅ Real-Time Analysis - Instant safety assessment while browsing Amazon ✅ Allergen Detection - Identifies 8 major allergens with severity levels ✅ PFAS Screening - Detects "forever chemicals" linked to health issues ✅ Smart Caching - 30-day result storage for lightning-fast repeat views ✅ Visual Harm Score - Clear 0-100 safety rating with color-coded risk levels ✅ Detailed Breakdowns - Scientific citations and toxicity explanations ✅ Beautiful UI - Elegant sidebar design that doesn't disrupt shopping 🛠️ How I Built It Frontend Architecture Built a Svelte 5 Chrome extension using Manifest V3. The content script detects Amazon product pages, triggers the backend API, and injects a sidebar iframe with the analysis UI. Used TypeScript for type safety and Tailwind CSS for styling. Implemented IndexedDB caching so repeat product views load instantly without hitting the API. The sidebar communicates with the content script via postMessage for security. Backend System Python FastAPI server with clean architecture (API/Domain/Infrastructure layers). When a product URL comes in: Web Scraping : BeautifulSoup4 extracts product HTML with confidence scoring Data Extraction : Claude parses ingredients from HTML into structured JSON Safety Analysis : Claude Agent SDK with web search tool researches each ingredient Harm Calculation : Custom algorithm scores allergens (5-30 pts), PFAS (40 pts), and toxicity Caching : Results stored in Supabase PostgreSQL with 30-day TTL AI Agent Design Used Claude Sonnet 4.5 with the Agent SDK's tool-calling feature. Claude can autonomously: Search the web for ingredient safety data Cross-reference PFAS compound databases Identify allergen severity from medical sources Return structured JSON with confidence scores Key prompt engineering: I provide product data + allergen database, then Claude decides when to search for additional info vs. using provided data. Deployment Pipeline Hosted on Google Cloud Run (serverless, auto-scaling). Set up CI/CD with Cloud Build triggers—every push to main automatically: Builds Docker container Deploys to Cloud Run Updates environment variables from Secret Manager Goes live in ~3 minutes Security : API keys stored in Google Secret Manager, never in code. System Flow: User visits Amazon → Content script detects page → FastAPI scrapes product → Claude extracts ingredients → Claude searches web for safety data → Custom algorithm calculates harm score (0-100) → Results cached in Supabase → Sidebar renders analysis with color-coded risk level → User makes informed decision 🎓 What I Learned 1. AI Agent Orchestration Working with Claude's Agent SDK taught me how to design effective tool-calling workflows. I learned to balance autonomy (letting Claude search the web) with constraints (providing structured data schemas). Key Insight : The best agent systems combine high-level autonomy with well-defined output schemas. I give Claude freedom to search and reason, but require JSON responses with specific fields. 2. Chrome Extension Architecture Manifest V3 forced me to rethink state management—service workers terminate aggressively, so I implemented IndexedDB caching and message passing between content scripts and iframes. Key Insight : Content scripts should be minimal and isolated. All heavy logic lives in the sidebar iframe, communicating via postMessage. This avoids bundling issues and page conflicts. 3. Web Scraping at Scale Amazon's HTML is complex and varies by product type. I built a confidence scoring system that determines when scraping succeeded vs. when to fall back to Claude fetching the page directly. Key Insight : Never trust scraped data blindly. Implement confidence metrics (found title? brand? ingredients?) to validate data quality before processing. 4. Clean Architecture Benefits Separating domain logic (harm calculation) from infrastructure (database, AI) made the codebase incredibly maintainable. I could swap out the AI model or database without touching business logic. Key Insight : The extra upfront effort of clean architecture pays off immediately. I refactored the AI provider twice without touching harm calculation code. 5. Production DevOps Deployed a production system with: Automatic deployments via Cloud Build triggers Secret management for API keys Serverless auto-scaling Database migrations with Supabase Key Insight : Infrastructure-as-code and CI/CD aren't just nice-to-have—they're essential for rapid iteration. I can push to GitHub and have changes live in 3 minutes. 🚧 Challenges I Faced Challenge 1: Amazon Anti-Scraping Measures Problem : Amazon blocks bots and returns different HTML structures depending on region, product category, and user agent. Solution : Implemented a three-tier approach: Rotating user agents with realistic browser headers Confidence scoring to validate data quality Fallback to Claude's web_fetch tool when scraping fails This hybrid approach achieves 85% scraping success rate, with Claude handling the remaining 15%. Challenge 2: Extension Content Script Isolation Problem : Content scripts run in isolated contexts—can't easily share data with sidebar UI. Can't import npm packages without bundling issues. Solution : Used iframe + postMessage for secure communication Sidebar runs as a full Svelte app inside iframe Content script stays minimal (no imports, inline utilities) Data flows: Content Script → postMessage → Sidebar Iframe Challenge 3: AI Cost & Latency Problem : Each analysis costs $0.02-0.18 and takes 10-15 seconds. At scale, this is expensive and slow. Solution : Aggressive caching : PostgreSQL with 30-day TTL Hash-based deduplication : Same URL = same hash = cache hit Optimized prompts : Reduced tokens by 40% through prompt engineering Two-stage approach : Only use expensive agent mode when scraped data has low confidence Prefetching : Start analysis on page load, not on button click Result: 90% cache hit rate on popular products, <500ms response time when cached. Challenge 4: Harm Score Calibration Problem : How do you turn "contains retinol" into a meaningful 0-100 score that feels intuitive to users? Solution : Researched toxicology databases (NIH, EPA, FDA) Consulted allergen severity rankings from medical literature Built weighted scoring system with category multipliers Tested on 50+ real products to calibrate thresholds Iterated based on "does this score feel right?" gut checks Final thresholds: 0-29: Low risk (green) 30-59: Medium risk (yellow) 60-100: High risk (red) Challenge 5: Real-Time Performance Problem : Users expect instant results when clicking the trigger button. Network latency + AI processing = 10-15 second wait. Solution : Prefetch on page load : Start analysis before user clicks (optimistic) Loading states : Beautiful animated donut chart with progress Optimistic UI : Show cached data instantly while fetching updates API optimization : Reduced P95 latency from 12s to 2s (cached) Challenge 6: Maintaining Type Safety Problem : Data flows through 4 layers (Extension → API → Claude → Database) with different type systems. Solution : Pydantic models in Python for API validation TypeScript interfaces in extension for compile-time safety Shared schema documentation in CLAUDE.md Runtime validation at API boundaries Result: Zero runtime type errors in production. 🎯 What's Next for Ruh Medium-term (3-6 months): Alternative Product Recommendations - AI finds safer alternatives with Amazon affiliate links User Accounts - Save personal allergen profiles across devices Browser Extension Polish - Improved animations and error states Multi-Platform Support - Expand to Target, Walmart, Whole Foods, iHerb Community Validation - User-submitted ingredient corrections and reviews Long-term (6-12 months): Regulatory Data Integration - FDA recalls, EPA warnings, EU bans Personalized Risk Profiles - Machine learning on user preferences B2B API - License safety analysis to e-commerce platforms 🏆 Why This Matters The Problem: Millions of people have food allergies PFAS chemicals are in 99% of the world population's bloodstreams Consumers spend 15+ minutes researching product safety before purchases No centralized tool exists for real-time ingredient analysis The Impact: Ruh democratizes product safety analysis—putting laboratory-grade ingredient analysis in everyone's pocket, at the moment they're making purchasing decisions. Target Users: Parents shopping for children's products People with allergies or chemical sensitivities Health-conscious consumers Anyone concerned about "forever chemicals" Market Opportunity: 60M+ allergy sufferers in the US and Canada $250B+ US e-commerce market Growing consumer demand for transparency Potential for affiliate revenue on recommended alternatives 🔧 Built With Languages & Frameworks: Python 3.13 - Backend API development TypeScript 5.3 - Type-safe extension development Svelte 5 - Reactive UI framework FastAPI - High-performance async Python web framework AI & Machine Learning: Anthropic Claude Sonnet 4.5 - Latest frontier model Claude Agent SDK - Tool-calling and agentic workflows Anthropic API - AI service integration Frontend Technologies: Vite - Next-generation build tooling Tailwind CSS - Utility-first styling IndexedDB (idb library) - Client-side persistence Chrome Extension Manifest V3 - Modern extension platform Backend Technologies: FastAPI - Modern Python web framework httpx - Async HTTP client BeautifulSoup4 + lxml - HTML parsing Pydantic - Data validation and settings uvicorn - ASGI server Cloud & Infrastructure: Google Cloud Run - Serverless container platform Google Cloud Build - CI/CD automation Google Secret Manager - Secure credential storage Supabase - PostgreSQL database with real-time features GitHub Actions - Workflow automation APIs & Services: Anthropic Claude API - AI analysis with built-in web search Supabase REST API - Database operations Amazon.com - Product data (web scraping) Development Tools: uv - Fast Python package manager npm - Node package manager Git/GitHub - Version control Docker - Containerization 🔗 Links GitHub Repository : https://github.com/RSHVR/ruh Live Demo : [Chrome Extension - Load Unpacked] or find it on the Chrome Extension Store once it's approved: https://chromewebstore.google.com/detail/mjgicecpbfabjaebiaioaijelbepihcl?utm_source=item-share-cb Built with ❤️ by Arshveer Gahir

Team