← All Projects

LabScout Equipment

June 2026

Next.js Tailwind Supabase Netlify EAV Schema Python Playwrite/BeautifulSoup Github
LabScout Equipment
LabScout solves a real problem for engineering and science departments: equipment for teaching labs is scattered across dozens of vendor websites (National Instruments, Quanser, Tektronix, Digilent, Adafruit, Festo, Global Test Supply, and more), each with its own naming conventions, spec sheets, and page layouts, making it hard to compare options or map equipment to courses and ABET learning outcomes. To solve this, I built a Python scraping pipeline with a custom parser ("scraper module") per vendor — each handling that site's quirks (JSON-LD product data, Playwright-rendered SPAs, inconsistent spec tables, CDATA-wrapped data blocks, etc.) — that normalizes everything into a shared Supabase/Postgres schema. Specs are stored using an EAV (entity-attribute-value) model so wildly different attributes (oscilloscope bandwidth vs. a robot's rotor diameter) can coexist, with both raw and metric-normalized values. A key design challenge was keeping spec names consistent across vendors — e.g., not having "Output Voltage" from one vendor and "Voltage Range" from another represent the same thing under different names. I built a fuzzy-matching review system: new specs that are a near-exact match to existing definitions are auto-merged, ones that are a partial match get flagged for human review in an admin dashboard, where an admin can merge duplicates or confirm they're genuinely distinct. The same review-queue pattern is used for category assignment: an AI/keyword-based classifier proposes a category for each scraped product with a confidence score, and unreviewed/low-confidence suggestions surface in the admin UI for a human to confirm or reassign. The public-facing side is a Next.js catalog: a searchable/filterable product grid (by name, category, and vendor) with product detail pages showing specs, pricing, lifecycle status (e.g., legacy/discontinued flags), images, and links to datasheets/manuals. Admin users (gated via Supabase Auth + RLS policies) get a review dashboard for the category and spec-deduplication queues described above.