Riggenie
PC-build recommender: pick your scenario, brands, form factor; an LLM-led pipeline scrapes current parts and proposes a coherent build.

TL;DR
- LLM as coordinator: model resolves user constraints against scraped facts, doesn't invent prices.
- Live retailer scraping (Puppeteer + Cheerio + robots-parser) so quoted parts reflect real availability.
- Atomic-design React component library, GSAP + Framer Motion animation layer.
- SWR-cached recommendations — iterating constraints is instant after the first call.
Architecture
The model never invents prices. Constraints in, scraped facts in, one reconciled build out. SWR caches per constraint-set.
Problem
Picking PC parts is a research tax. PCPartPicker is great if you already know what you want; everything else is YouTube reviews, Reddit threads, and brand-marketing pages. For a casual buyer asking "what should I get for 1080p gaming under €1500, mostly NVIDIA, ATX, white" — the modern answer is one constraint-fit recommendation, not ten tabs.
Approach
A constraint-collection UI on the front, an LLM-led pipeline on the back. The user picks a scenario (gaming / editing / office / content), brand preferences, categories, form factor, and colour. The API route packages that into a structured prompt, runs Puppeteer + Cheerio against a handful of retailer pages to pull current price and availability for the candidate parts, and asks GPT to reconcile the constraints into a single coherent build with rationale. SWR caches per-constraint-set so iterating preferences is instant.
Deep dive
LLM as coordinator, not author
The model is deliberately not the source of truth for anything factual. It never quotes a price or a stock level from its own weights — those come from the scraper. Its job is orchestration and conflict resolution: reconcile 'under €1500', 'mostly NVIDIA', 'ATX', 'white' against the parts that actually exist and cost what they cost, then explain the trade-offs it made. Keeping the model on the coordination side of the line is what makes the output trustworthy instead of plausible-sounding.
Scraping current prices, robots-aware
Recommendations are only as honest as the prices behind them, so the pipeline reads live retailer pages rather than a stale table. Puppeteer drives the pages that need rendering, Cheerio parses the static ones, and robots-parser gates the whole thing so the scraper respects each site's rules and stays polite. This live-scraping dependency is also why RigGenie can't be shown as a static embed — it needs a server on every request.
SWR-cached iteration
The expensive part is the scrape-plus-reconcile round trip. SWR keys the result on the full constraint-set, so the first answer for a given set of preferences pays that cost once and every subsequent tweak-and-compare reads from cache. Iterating 'what if I go AMD' or 'what if I raise the budget €200' feels instant, which is the whole point of a recommender you actually want to poke at.
Outcome
Prototype. Solo prototype to explore the LLM-as-coordinator pattern: it's not generating answers from scratch, it's orchestrating scrapers and resolving conflicts between user constraints. The UI is atomic-design React with GSAP transitions; the back end is a thin Next 15 route. Live scraping makes it ineligible for a static embed — surfaced here as a research piece.
Related


