← All Projects
LabScout Equipment
June 2026
Next.js
Tailwind
Supabase
Netlify
EAV Schema
Python
Playwrite/BeautifulSoup
Github
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.